Skip to content
scrapeatlas.Dashboard

List an X (Twitter) user's public tweets

Try in Playground

Retrieve a profile's public tweets, newest first by default or in X's ranked order, with the pinned tweet flagged and a URL for each tweet.

GET/v1/twitter/user-tweetsx-api-key
x-api-keystringrequiredheader

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

Query parameters
5
handlestringrequiredquery

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

max 16 chars

Exampleexample
trimenumquery

true returns each tweet as rest_id, views, source, legacy, quoted_status_result (when present), pinned and url.

one of: true, false

sortenumquery

latest (default): newest posts first; ranked: X's ranked selection in source order.

one of: latest, ranked

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
33
requestIdstring

Request correlation identifier.

HTTP attempts (guest activation, GraphQL reads, the profile page and 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.

order is newest_first or ranked; window echoes since and until. Warnings name skipped entries and caps; latest_window_limited and ranked_selection mean the tweets are X's logged-out selection, not a full timeline.

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.

Tweet objects in coverage.order; retweets appear with legacy.retweeted_status_result.

up to 200 items

tweets.__typenamestringoptional

Optional.

tweets.rest_idstring

Always included.

Optional.

Always included.

tweets.core.user_results.resultobject

Always included.

Always included.

tweets.legacy.full_textstring

Always included.

tweets.legacy.id_strstring

Always included.

tweets.legacy.created_atstring

Always included.

tweets.legacy.user_id_strstring

Always included.

tweets.pinnedbooleanoptional

Optional.

tweets.urlstring

Always included.

absolute HTTPS URL

tweets.viewsobjectoptional

Optional.

tweets.sourcestringoptional

Optional.

tweets.quoted_status_resultobjectoptional

Optional.

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 operation’s response byte budget was exceeded.
502payload_too_complexThe response exceeded the JSON depth or node limits.
502request_limitThe upstream request budget was exhausted.
502upstream_errorNetwork failure, HTTP 5xx after the single retry, or X returned the post without its author and text.
503busyAll retrieval slots are busy.
504timeoutThe operation’s deadline elapsed.