Skip to content
scrapeatlas.Dashboard

List Instagram user posts

Try in Playground

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.

GET/v1/instagram/user/postsx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
5
handlestringrequiredquery

Instagram username (leading @ accepted).

max 31 chars

Exampleexample
next_max_idstringquery

Opaque cursor from a previous response.

trimenumquery

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

sincenumber | stringquery

Earliest publication time to include, ISO 8601 or Unix seconds.

untilnumber | stringquery

Publication time to stop before, ISO 8601 or Unix seconds; later than since.

Response fields
50
requestIdstring

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.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed, or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

Canonical instagram.com URL of the profile, post or reel.

absolute HTTPS URL

fetchedAtstring

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).

coverage.sourcestring

Always included.

coverage.completeboolean

Always included.

coverage.warningsstring[]

Always included.

coverage.orderenum

Always included.

one of: newest_first, oldest_first, ranked, relevance, source_order

Optional.

coverage.window.sincestringoptional

Optional.

coverage.window.untilstringoptional

Optional.

Always included.

up to 50 items

items.pkstringoptional

Optional.

items.idstring

Always included.

min 1 chars

items.codestring

Always included.

min 1 chars

items.media_typeintegeroptional

Optional.

items.urlstring

Always included.

absolute HTTPS URL

items.taken_atintegeroptional

Optional.

items.created_atstringoptional

Optional.

items.uploaded_atstringoptional

Optional.

items.captionobjectnullableoptional

Optional.

items.play_countintegernullableoptional

Optional.

items.comment_countintegernullableoptional

Optional.

items.like_countintegernullableoptional

Optional.

items.display_uristringoptional

Optional.

items.userobjectoptional

Optional.

items.image_versions2objectoptional

Optional.

items.carousel_mediaobject[]optional

Optional.

items.product_typestringoptional

Optional.

items.is_paid_partnershipbooleannullableoptional

Optional.

items.video_versionsobject[]nullableoptional

Optional.

items.has_audiobooleannullableoptional

Optional.

items.pinnedbooleanoptional

Optional.

Profile header as the reference's feed carries it: pk, id, full_name, is_private, is_verified, profile_pic_url, username.

user.pkstring

Always included.

user.idstring

Always included.

min 1 chars

user.full_namestring

Always included.

user.is_privateboolean

Always included.

user.is_verifiedboolean

Always included.

user.profile_pic_urlstring

Always included.

user.usernamestring

Always included.

min 1 chars

more_availableboolean

Always included.

num_resultsinteger

Always included.

≥ 0

next_max_idstringnullable

Opaque cursor from a previous response.

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.

Error codes
16
HTTPfailure.codeMeaning
400invalid_requestMissing, duplicate, malformed or unsupported parameters, handles, ids, cursors or URLs.
401unauthorizedInvalid API key.
404not_foundUnknown handle, user id, post, or a keyword without a popular page.
403restricted_pageThe page or document is private or gated (private account, gated media, login redirect).
422count_estimated_onlyInstagram abbreviates this post count and allow_estimated was not set.
429upstream_rate_limitedInstagram rate limited the page load or the GraphQL read.
502upstream_challengedInstagram refused the request with its error shell (status challenged).
502operation_unavailableInstagram no longer serves the pinned document for this operation.
502unsafe_redirectInstagram redirected the request somewhere other than the login form.
502unsupported_pageThe page or GraphQL result is missing, mismatched or structurally unsupported.
502response_too_largeThe decoded responses exceeded the operation's byte budget (1–5 MiB).
502payload_too_complexThe response exceeded the JSON depth or node limits.
502request_limitThe upstream request budget was exhausted.
502upstream_errorNetwork failure or HTTP 5xx after the single retry.
503busyAll retrieval slots are busy.
504timeoutThe 45-second deadline elapsed.