Instagram User posts API
Paginated grid of a profile’s posts and reels with captions, media URLs and engagement. Paginate with the cursor field.
$0.80/1k req, pay per request, no subscription.
{"id": "3401000000000000000","url": "https://www.instagram.com/p/C8aBcDeFgHi/","caption": "A new view of the Pillars of Creation.","likes": 1840000,"comments": 9200,"createdUtc": 1717945200,"username": "nasa","verified": true,... 23 more fields}
Pricing and providers
Instagram User posts API pricing: one API, 7 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
A provider marked Not serving stopped answering reliably and was taken out of the rotation, so your calls go to the others. It is put back on its own once it answers reliably again.
Try it
Get Instagram user posts in one request
This sample shows 12 of 48 fields. See every field
{
"found": true,
"data": {
"nextCursor": "QVFEX2Z",
"posts": [
{
"id": "3401000000000000000",
"url": "https://www.instagram.com/p/C8aBcDeFgHi/",
"caption": "A new view of the Pillars of Creation.",
"likes": 1840000,
"comments": 9200,
"createdUtc": 1717945200,
"username": "nasa",
"verified": true
}
]
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-11-05 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- handlestring
nasa
Instagram username without the leading @.
- cursorstring
0
Pagination cursor from a previous response's nextCursor.
- requireFieldsarray
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 `userId`, 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.
Response
JSON, one example value per field.
- nextCursorstring
QVFEX2Z
Opaque cursor for the next page of posts, or null when this lane has no more. Pass it back as cursor to continue.
Populated whenever the provider has data for the entity.
- audioIdstringcan require
Instagram audio id of the post's sound, licensed track or original audio, the audioId instagram.audio_reels takes to list other reels using it. Absent when the post has no sound. Null when the serving source does not report it.
- avatarUrlstring
Profile picture URL of the posting account.
- captionstring
A new view of the Pillars of Creation.
Populated whenever the provider has data for the entity.
- carouselCountintegercan require
Number of slides, present on carousel posts only. Null when the serving source does not report it.
- commentsinteger
9200
- countsHiddenbooleancan require
Whether the author has hidden the like and view counts. Null when the serving source does not report it.
- createdUtcnumber
1717945200
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
- displayNamestring
Display name of the posting account.
- durationSecondsnumber
Video duration in seconds. Absent on photo posts.
- hashtagsstring[]
Hashtags carried in the caption, each including its leading #. Populated whenever the provider has data for the entity.
- idstring
3401000000000000000
Instagram media id. Populated whenever the provider has data for the entity.
- isPinnedbooleancan require
Whether the post is pinned to the top of a profile grid. On a collaboration post this can be true because a coauthor pinned it to their own profile. Null when the serving source does not report it.
- likesinteger
1840000
- locationIdstringcan require
Instagram location id the post is tagged at. Absent when the post has no location. Null when the serving source does not report it.
- locationLatnumbercan require
Latitude of the tagged location, in decimal degrees. Null when the serving source does not report it.
- locationLngnumbercan require
Longitude of the tagged location, in decimal degrees. Null when the serving source does not report it.
- locationNamestringcan require
Name of the location the post is tagged at. Null when the serving source does not report it.
- mentionsstring[]
Accounts @mentioned in the caption, each including its leading @. Populated whenever the provider has data for the entity.
- paidPartnershipbooleancan require
Whether the post is tagged as a paid partnership. Null when the serving source does not report it.
- productTypestringcan require
Instagram's own surface label for the post, such as feed, clips or carousel_container. Null when the serving source does not report it.
- resharesintegercan require
Number of times the post has been reshared, when Instagram reports it. Null when the serving source does not report it.
- soundAuthorstringcan require
Credited artist of a licensed track, or the username of the account whose original audio it is. Absent when the post has no sound. Null when the serving source does not report it.
- soundTitlestringcan require
Name of the sound on a reel or a post with music. "Original audio" means the creator's own audio rather than a licensed track. Absent when the post has no sound. Null when the serving source does not report it.
- urlstring
https://www.instagram.com/p/C8aBcDeFgHi/
Populated whenever the provider has data for the entity.
- userIdstringcan require
Instagram user id of the posting account. Null when the serving source does not report it.
- usernamestring
nasa
Username of the account that posted. A profile feed includes collaborator posts, so this is not always the requested handle. Populated whenever the provider has data for the entity.
- verifiedboolean
true
True when the posting account is verified.
- viewsinteger
Play count, present on video posts and reels only.
Accounts listed as coauthors of the post. Null when the serving source does not report it.
- displayNamestring
Account display name.
- userIdstringcan require
Instagram's numeric account id, as a string.
- usernamestring
Instagram username without the leading @.
- verifiedboolean
Whether the account carries Instagram's verified badge.
Photo, video, and GIF attachments on the post. Empty when the post has none.
- heightinteger
Pixel height of the media item, when the lane reports it.
- typestring
One of photo, video, or gif.
- urlstring
Image URL. For a video or GIF this is the poster/thumbnail frame.
- videoUrlstring
Playable video file URL. Present only for video and gif items.
- widthinteger
Pixel width of the media item, when the lane reports it.
Accounts tagged in the media. Null when the serving source does not report it.
- displayNamestring
Account display name.
- userIdstringcan require
Instagram's numeric account id, as a string.
- usernamestring
Instagram username without the leading @.
- foundboolean
true
- reason"not_found"
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
About the Instagram User posts API
The AnyAPI Instagram User posts API returns Instagram user posts data as normalized JSON from one POST call to /v1/run/instagram.user_posts. Paginated grid of a profile’s posts and reels with captions, media URLs and engagement. Paginate with the cursor field. AnyAPI routes each request across 7 sources and falls back automatically when one fails. It costs from $0.80 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 99.9% of Instagram user posts calls through AnyAPI succeeded, with a median response time of 2.6 seconds across 211,431 measured calls.
