Instagram Post API
A single Instagram post or reel by URL: id, shortcode, type, owner, like count and media URLs.
Provider network
Providers ranked by traffic
Try it
Make your first request
{
"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"
}
}interface InstagramPostResponse {
data: {
bytes?: number;
displayUrl: string;
expiresUtc?: number;
hostedUrl?: string;
id: string;
likes: number;
owner: string;
plays?: number;
shortcode: string;
type: string;
videoUrl: string;
} | null;
found: boolean;
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-17 · uptime and latency measured over 30dcurl -X POST https://api.getanyapi.com/v1/run/instagram.post \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.instagram.com/p/C8aBcDeFgHi/"}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| url | string | "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. |
| hostVideo | boolean | 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. |
| requireFields | array | 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. |
| requirePlayCount | boolean | 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. |
| Response | ||
| found | boolean | true |
| data | object | |
| data.id | string | "3401000000000000000" |
| data.shortcodecan require | string | "C8aBcDeFgHi" |
| data.typecan require | string | "XDTGraphVideo" |
| data.owner | string | "nasa" |
| data.likescan require | number | 1840000 |
| data.displayUrl | string | "https://instagram.com/p/C8aBcDeFgHi/media.jpg" |
| data.videoUrlcan require | string | "https://instagram.com/p/C8aBcDeFgHi/media.mp4" |
| Price | ||
| Price per request | USD | $0.0005 |
| Price /1k req | USD | $0.50 |
FAQ
About the Instagram Post API
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 4 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 3.7 seconds across 15,524 measured calls.