Skip to content
scrapeatlas.Dashboard

Get an X (Twitter) profile

Try in Playground

Retrieve a public X profile by handle: the raw UserByScreenName user object with identity, bio, entities, counters, images, verification and affiliation labels, tip jar, highlights and business fields.

GET/v1/twitter/profilex-api-key
x-api-keystringrequiredheader

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

Query parameters
1
handlestringrequiredquery

X handle, 1–15 letters, digits or underscores; a leading @ is accepted. Case-insensitive.

max 16 chars

Exampleexample
Response fields
22
__typenamestring

Always included.

rest_idstring

Always included.

created_at, name and screen_name as X now serialises them.

core.created_atstring

Always included.

core.namestring

Always included.

core.screen_namestring

Always included.

min 1 chars

The account's counters, bio, entities, pinned tweets, banner and flags. created_at, name, screen_name, location and profile_image_url_https are restored into legacy from core, location and avatar (core keys first, location and image last).

legacy.screen_namestring

Always included.

min 1 chars

legacy.namestring

Always included.

requestIdstring

Request correlation identifier.

HTTP attempts (guest activation plus GraphQL reads, including the shared retry), decoded bytes and duration for the operation.

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 x.com URL of the profile, tweet or community.

absolute HTTPS URL

fetchedAtstring

UTC retrieval time.

Complete means the pinned GraphQL document was returned without omitted entries; warnings name every skipped entry kind or cap.

coverage.sourcestring

Always included.

coverage.completeboolean

Always included.

coverage.warningsstring[]

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
15
HTTPfailure.codeMeaning
400invalid_requestMissing, duplicate, malformed or unsupported parameters, handles or URLs.
401unauthorizedInvalid API key.
404not_foundUnknown handle, tweet or community.
403restricted_pageThe account is suspended or unavailable, or the tweet is withheld, protected or age-restricted for logged-out visitors.
429upstream_rate_limitedX rate limited guest activation or the GraphQL read.
502upstream_challengedX refused the guest token or the request (status challenged).
502operation_unavailableX no longer serves the pinned persisted query for this operation.
502unsafe_redirectX answered the API request with a redirect.
502unsupported_pageThe GraphQL result is missing, mismatched or structurally unsupported.
502response_too_largeThe response exceeded 4 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 20-second deadline elapsed.