Get an Instagram profile
Retrieve a public Instagram profile by handle or numeric user ID, including identity, bio, links, follower and following counts, verification, business category and profile pictures. Use trim for a compact projection.
/v1/instagram/profilex-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Numeric Instagram user id; exactly one of handle and user_id. Answered from the profile document alone, without a page load.
Instagram username (1–30 letters, digits, periods, underscores; leading @ accepted); exactly one of handle and user_id.
max 31 chars
exampletrue returns the reference's trimmed profile projection under the mobile-API names: biography, bio_links, biography_with_entities, external_url, follower_count, fbid_v2, following_count, full_name, id, is_business, is_professional_account, category, is_private, is_verified, profile_pic_url, hd_profile_pic_url_info and username.
one of: true, false
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; 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; 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.
Complete means every source field of the operation was returned; warnings name every omission or cap (private_account, items_truncated, comments_truncated, comments_first_page_only, comments_omitted, highlights_first_page_only, highlights_truncated).
Always included.
Always included.
Always included.
Always included.
The profile user object as Instagram's web client receives it.
Always included.
Always included.
min 1 chars
Always included.
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 or post. |
| 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–3 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. |