Skip to content
scrapeatlas.Dashboard

List Instagram user reels

Try in Playground

List the latest public Instagram reels of an account (pinned reels first, then the newest 12) with play, like and comment counts, upload times and thumbnails. include_details adds each reel's publication time and caption; since and until keep a time window; trim selects compact records.

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

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

Query parameters
7
user_idstringquery

Optional.

handlestringquery

Optional.

max 31 chars

Exampleexample
max_idstringquery

Cursor pages are served only to logged-in visitors: a request with max_id answers 403 restricted_page.

trimenumquery

true returns the reference's flattened trimmed layout: items[] with id, code, taken_at, created_at, uploaded_at, caption (the last four as available), play_count, comment_count, like_count, display_uri, user and url, and a top-level max_id (null) instead of paging_info.

one of: true, false

include_detailsenumquery

true also reads the profile grid around the page's reels (up to two documents) and adds taken_at, created_at and caption to each reel it lists; reels the grid does not list keep uploaded_at only and the response is partial with reel_details_partial.

one of: true, false

sincenumber | stringquery

Earliest upload time to include, ISO 8601 or Unix seconds; pinned reels are kept when inside the window.

untilnumber | stringquery

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

Response fields
27
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: the reels page, plus the profile document when identified by user id; with include_details up to two grid documents, one by user id; 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 reels; window echoes since and until. Warnings name every omission or cap (first_page_only when the account has more reels than the first page, private_account, items_truncated, reel_details_partial).

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

Always included.

items.media.pkstring

Always included.

items.media.idstring

Always included.

min 1 chars

items.media.codestring

Always included.

min 1 chars

items.media.media_typeinteger

Always included.

items.media.urlstring

Always included.

absolute HTTPS URL

Always included.

paging_info.max_idstringnullable

Always included.

paging_info.more_availableboolean

Always included.

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.