List Instagram user posts
List public Instagram photos, videos, carousels and reels shared to a profile grid, with creation timestamps, canonical URLs and the profile header. Pass next_max_id for the next page; trim selects compact records.
/v1/instagram/user/postsx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Instagram username (leading @ accepted).
max 31 chars
exampleOpaque cursor from a previous response.
true keeps the reference's trimmed item keys: id, code, media_type, taken_at, created_at, caption, comment_count, like_count, display_uri, user, image_versions2, product_type, is_paid_partnership, video_versions, has_audio and url.
one of: true, false
Earliest publication time to include, ISO 8601 or Unix seconds.
Publication time to stop before, ISO 8601 or Unix seconds; later than since.
Request correlation identifier.
HTTP attempts for the operation (profile: one document, plus the page load the first time a handle is seen; basic-profile: one document; post-count: page; posts: page plus document the first time a handle is seen, otherwise the profile document, the session probe and the posts document; reels: document, plus the page when identified by handle; with include_details up to two grid documents, and by user id the profile document and the session probe before one grid document; post: document plus page, or the document alone with include_comments=false on non-carousel media; comments: page; highlights: page, plus a document when identified by user id; popular search: page; all including the shared transient retry), decoded bytes and duration.
Always included.
≥ 0
Always included.
≥ 0
Always included.
≥ 0
True when usable data is returned; inspect status and coverage for omissions.
success, partial, failed, or challenged. HTTP 200 can be partial.
one of: success, partial
Canonical instagram.com URL of the profile, post or reel.
absolute HTTPS URL
UTC retrieval time.
order is newest_first, after pinned posts on page one; window echoes since and until. Warnings name every omission or cap (post_details_omitted when items come from the profile page grid, first_page_only when that grid lists more posts, private_account, items_truncated, undated_items_omitted).
Always included.
Always included.
Always included.
Always included.
one of: newest_first, oldest_first, ranked, relevance, source_order
Optional.
Optional.
Optional.
Always included.
up to 50 items
Optional.
Always included.
min 1 chars
Always included.
min 1 chars
Optional.
Always included.
absolute HTTPS URL
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Profile header as the reference's feed carries it: pk, id, full_name, is_private, is_verified, profile_pic_url, username.
Always included.
Always included.
min 1 chars
Always included.
Always included.
Always included.
Always included.
Always included.
min 1 chars
Always included.
Always included.
≥ 0
Opaque cursor from a previous response.
No fields match.
HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.
| HTTP | failure.code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing, duplicate, malformed or unsupported parameters, handles, ids, cursors or URLs. |
| 401 | unauthorized | Invalid API key. |
| 404 | not_found | Unknown handle, user id, post, or a keyword without a popular page. |
| 403 | restricted_page | The page or document is private or gated (private account, gated media, login redirect). |
| 422 | count_estimated_only | Instagram abbreviates this post count and allow_estimated was not set. |
| 429 | upstream_rate_limited | Instagram rate limited the page load or the GraphQL read. |
| 502 | upstream_challenged | Instagram refused the request with its error shell (status challenged). |
| 502 | operation_unavailable | Instagram no longer serves the pinned document for this operation. |
| 502 | unsafe_redirect | Instagram redirected the request somewhere other than the login form. |
| 502 | unsupported_page | The page or GraphQL result is missing, mismatched or structurally unsupported. |
| 502 | response_too_large | The decoded responses exceeded the operation's byte budget (1–5 MiB). |
| 502 | payload_too_complex | The response exceeded the JSON depth or node limits. |
| 502 | request_limit | The upstream request budget was exhausted. |
| 502 | upstream_error | Network failure or HTTP 5xx after the single retry. |
| 503 | busy | All retrieval slots are busy. |
| 504 | timeout | The 45-second deadline elapsed. |