Instagram Post API
One public post, reel or carousel with its caption, media URLs and engagement counts. Falls back to Instagram's public embed payload when the web client's persisted query is unavailable, so a Meta client release degrades this rather than breaking it. Play counts arrive in this same request, so there is no second fetch to skip and no play-count parameter to pass. Calls cost 1 credit each. A cache hit is free, and a failed or empty response is never charged.
Try it
Prefilled with the request that produced the example below. No key yet? Get a free key.
Request
/v1/instagram/post| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | yes | Post, reel or IGTV URL, or a bare shortcode |
Also accepts cache_max_age (a hit costs 0 credits) and include_raw (returns the untouched upstream payload under raw).
curl "$API/v1/instagram/post?url=https%3A%2F%2Fwww.instagram.com%2Freel%2FDehZj9wggt0%2F&cache_max_age=7d" \
-H "x-api-key: $KEY"const query = new URLSearchParams({
url: 'https://www.instagram.com/reel/DehZj9wggt0/',
cache_max_age: '7d',
});
const response = await fetch(`${API}/v1/instagram/post?${query}`, {
headers: { 'x-api-key': KEY },
});
const body = await response.json();
if (!body.success) throw new Error(body.error.code);
// 1 credit, 0 on a cache hit
console.log(body.data, body.meta.creditsCharged);import os, httpx
r = httpx.get(
f"{os.environ['API']}/v1/instagram/post",
params={
"url": "https://www.instagram.com/reel/DehZj9wggt0/",
"cache_max_age": "7d",
},
headers={"x-api-key": os.environ["KEY"]},
timeout=30,
)
body = r.json()
if not body["success"]:
raise RuntimeError(body["error"]["code"])
print(body["data"], body["meta"]["creditsCharged"])Example response
Captured on , with raw removed and lists cut to two items. A live call returns current data.
{
"success": true,
"data": {
"platform": "instagram",
"id": "DehZj9wggt0",
"type": "reel",
"url": "https://www.instagram.com/reel/DehZj9wggt0/",
"title": null,
"text": "Keeping up with a pack of hunting wolves is just another day at the office for @bertiegregory and his team.\n\n#WolvesUpClose with Bertie Gregory premieres Friday, November 6 at 8/7c on National Geographic. Streaming on @DisneyPlus and @hulu.",
"authorId": "787132",
"authorHandle": "natgeo",
"authorName": "National Geographic",
"thumbnailUrl": "https://scontent-itm1-1.cdninstagram.com/v/t51.82787-15/849098148_18708313780019133_730867734770692515_n.jpg?stp=dst-jpg_e15_tt6&_nc_cat=111&ig_cache_key=NDAwODU5NzU2NTk5Mjk5NTcwMDE4NzA4MzEzNzc3MDE5MTMz.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNMSVBTLnhwaWRzLjEwODAuc2RyLnZpZGVvX2RlZmF1bHRfY292ZXJfZnJhbWUuQzMifQ%3D%3D&_nc_ohc=rG4S4sXViaUQ7kNvwEG-QL5&_nc_oc=AdrtMr1b-VFmo25n1_LjA3GqPSnetAcZvANS-ghqloi9P1eGVIdXqeNMwBFDVaSX8n8&_nc_zt=23&_nc_ht=scontent-itm1-1.cdninstagram.com&_nc_gid=R-NVKjsU5fczA5qe4ohYCQ&_nc_ss=70a8c&oh=00_AQOOhm0pV4Z8xXf62Uk15IRw-NPfXEhrw__uURul7fZhkg&oe=6ADDD54C",
"mediaUrls": [
"https://scontent-itm1-1.cdninstagram.com/o1/v/t2/f2/m86/AQPmzWFyFbdQEUSTj3bdWcEdgJrx_FjybCJC5cI7WvE3uOZ2rh-VGb63KeYgGbUc5ovqd29n4IW7ZzvvAKPIhr9epNJVMFjcrAsy4GI.mp4?_nc_cat=101&_nc_sid=5e9851&_nc_ht=scontent-itm1-1.cdninstagram.com&_nc_ohc=QpkVpzHAn_oQ7kNvwGZqzhG&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5JTlNUQUdSQU0uQ0xJUFMuQzMuNzIwLmRhc2hfYmFzZWxpbmVfMV92MSIsInhwdl9hc3NldF9pZCI6MTg3MDgyNzIzMzIwMTkxMzMsImFzc2V0X2FnZV9kYXlzIjo1LCJ2aV91c2VjYXNlX2lkIjoxMDA5OSwiZHVyYXRpb25fcyI6MzAsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=17-1&vs=a8143723d0c4400&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC83MzFCMTY4MzlGODE0MTEyOTMzQjkwMDQ2ODYwQUFEOV92aWRlb19kYXNoaW5pdC5tcDQVAALIARIAFQIYUWlnX3hwdl9wbGFjZW1lbnRfcGVybWFuZW50X3YyLzAzNDgzMzFGNTA0NTRFNkQ5RUM2NjREMTM4REUwOEYzX2F1ZGlvX2Rhc2hpbml0Lm1wNBUCAsgBEgAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACb61rDr4sS7QhUCKAJDMywXQD4HrhR64UgYEmRhc2hfYmFzZWxpbmVfMV92MREAdf4HZeadAQA&_nc_gid=R-NVKjsU5fczA5qe4ohYCQ&_nc_ss=70a8c&_nc_zt=28&oh=00_AQM4W8zakCz8QTSSOjMiL-hRtJh2426AQDRI924rMdEJuw&oe=6AD9FF22"
],
"durationSeconds": 30.037333,
"viewCount": null,
"likeCount": 52156,
"commentCount": 388,
"shareCount": null,
"hashtags": [
"WolvesUpClose"
],
"mentions": [
"bertiegregory",
"DisneyPlus"
],
"taggedUsers": [],
"isSponsored": null,
"publishedAt": "2026-10-15T19:00:02.000Z",
"fetchedAt": "2026-10-21T01:59:39.093Z"
},
"meta": {
"platform": "instagram",
"endpoint": "instagram.post",
"creditsCharged": 1,
"cached": false,
"cacheAgeSeconds": null,
"durationMs": 35788,
"requestId": "req_185co75305cxy48iyqfs"
}
}Returns
Returns one Post.
Cost and behaviour
| Credits | 1 per live request, 0 on a cache hit |
| Cacheable | yes: cache_max_age accepts a cached copy |
| Batchable | yes: usable as a target in POST /v1/jobs/batch |
| Subscribable | yes: as often as every 3600 seconds, firing a webhook only on a change |
Other Instagram endpoints
- /v1/instagram/audio-reels Reels using a sound
- /v1/instagram/comment-replies Replies under one comment
- /v1/instagram/hashtag-posts Posts under a hashtag
- /v1/instagram/highlight Stories inside a highlight
- /v1/instagram/popular-search Top posts for a keyword
- /v1/instagram/post-comments Comments on a post or reel
- /v1/instagram/profile Profile details
- /v1/instagram/profile-post-count Post count for a profile