
1,840,000 likes
A single Instagram post or reel by URL: id, shortcode, type, owner, like count and media URLs.
$0.50/1k req, pay per request, no subscription.
{"id":Â "3401000000000000000","shortcode":Â "C8aBcDeFgHi","type":Â "XDTGraphVideo","owner":Â "nasa","likes":Â 1840000,"displayUrl":Â "https://instagram.com/p/C8aBcDeFgHi/media.jpg","videoUrl":Â "https://instagram.com/p/C8aBcDeFgHi/media.mp4","altText":Â string | null,... 26 more fields}
Pricing and providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
Try it
This sample shows 9 of 37 fields. See every field
{
"found": true,
"data": {
"id": "3401000000000000000",
"shortcode": "C8aBcDeFgHi",
"type": "XDTGraphVideo",
"owner": "nasa",
"likes": 1840000,
"displayUrl": "https://instagram.com/p/C8aBcDeFgHi/media.jpg",
"videoUrl": "https://instagram.com/p/C8aBcDeFgHi/media.mp4"
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Every field you send and every field you get back, each with a real example.
Last verified 2026-10-31 · uptime and latency measured over 30d
JSON, posted to this endpoint.
https://www.instagram.com/p/C8aBcDeFgHi/
Full Instagram post or reel URL, carrying the media shortcode: /p/, /reel/, /reels/, or /tv/. A profile URL such as https://www.instagram.com/username names no post, so it is rejected instead of charged for an empty result - send that account's handle to instagram.profile, or its posts to instagram.user_posts.
Set true to also get the post's video on a hosted MP4 link that plays without an Instagram session. The file is downloaded and stored for you, and the response adds `hostedUrl`, `expiresUtc` and `bytes`. It is charged as an extra on top of the price, and it never changes which source serves you: every source offers it at the same price. A post with no video, or a post that does not exist, is refused with no charge rather than billed for a file that cannot exist. Omit it and nothing is downloaded, nothing is stored, and nothing extra is charged.
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `plays`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
Deprecated; send `requireFields: ["plays"]` instead, which does exactly the same thing. Set true to be served only by a source that reports a reel's play count. Omit it and routing is unchanged, with the cheapest source serving, which does not carry play counts, so `plays` is absent from its responses. This can raise your price: opting in routes to a source that reports the count, and you are quoted and charged its price. It stays accepted so callers that already send it keep working.
JSON, one example value per field.
Instagram's generated accessibility description of the media. Null when this source does not report it.
Instagram audio id of the sound; pass it to instagram.audio_reels as audioId to list other reels using it. Null when the media has no sound or this source does not report it.
Profile picture URL of the posting account.
Size of the hosted MP4 in bytes. Present only when the request set `hostVideo` to true.
Caption text of the post, including its hashtags and @mentions. Empty when the post has no caption. Populated whenever the provider has data for the entity.
Number of comments on the post.
Whether the author has hidden the like and view counts. Null when this source does not report it.
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
Display name of the posting account.
https://instagram.com/p/C8aBcDeFgHi/media.jpg
Populated whenever the provider has data for the entity.
Video duration in seconds. Null on a photo, or when this source does not report it.
When `hostedUrl` stops working, as a UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Present only when the request set `hostVideo` to true.
True when the media carries an audio track.
Hashtags carried in the caption, each including its leading #. Empty when the caption uses none. Populated whenever the provider has data for the entity.
AnyAPI-hosted MP4 of this post's video, playable without an Instagram session. Present only when the request set `hostVideo` to true.
3401000000000000000
Populated whenever the provider has data for the entity.
1840000
Instagram id of the tagged place, when the post tags one.
Latitude of the tagged location, in decimal degrees. Null when the post tags no place or this source does not report it.
Longitude of the tagged location, in decimal degrees. Null when the post tags no place or this source does not report it.
Name of the tagged place, when the post tags one.
Accounts mentioned in the caption, each including its leading @, in caption order. Empty when the caption mentions none.
nasa
Populated whenever the provider has data for the entity.
True when the post is tagged as a paid partnership.
Number of plays of the reel or video. Absent when Instagram does not expose a play count for this media, and on lanes that cannot serve it.
Instagram product type of the media, for example feed, clips or igtv.
Number of times the post has been reshared. Null when this source does not report it.
C8aBcDeFgHi
Credited author of the sound. Null when the media has no sound or this source does not report it.
Name of the sound. "Original audio" means the creator's own audio rather than a licensed track. Null when the media has no sound or this source does not report it.
XDTGraphVideo
Instagram user id of the posting account.
True when the posting account carries a verified badge.
https://instagram.com/p/C8aBcDeFgHi/media.mp4
true
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
Selling this API? See the full schema your endpoint must return.
FAQ
The AnyAPI Instagram Post API returns Instagram post data as normalized JSON from one POST call to /v1/run/instagram.post. A single Instagram post or reel by URL: id, shortcode, type, owner, like count and media URLs. AnyAPI routes each request across 5 sources and falls back automatically when one fails. It costs from $0.50 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 99.9% of Instagram post calls through AnyAPI succeeded, with a median response time of 2.9 seconds across 158,351 measured calls.

1,840,000 likes