List an X (Twitter) user's public tweets
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.
/v1/twitter/user-tweetsx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
X handle, 1–15 letters, digits or underscores; a leading @ is accepted.
max 16 chars
exampletrue returns each tweet as rest_id, views, source, legacy, quoted_status_result (when present), pinned and url.
one of: true, false
latest (default): newest posts first; ranked: X's ranked selection in source order.
one of: latest, ranked
Earliest publication time to include, ISO 8601 or Unix seconds.
Publication time to stop before, ISO 8601 or Unix seconds; later than since.
Request correlation identifier.
HTTP attempts (guest activation, GraphQL reads, the profile page and the shared retry), decoded bytes and duration for the operation.
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 x.com URL of the profile, tweet or community.
absolute HTTPS URL
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.
Always included.
Always included.
Always included.
Always included.
one of: newest_first, oldest_first, ranked, relevance, source_order
Optional.
Optional.
Optional.
Tweet objects in coverage.order; retweets appear with legacy.retweeted_status_result.
up to 200 items
Optional.
Always included.
Optional.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Optional.
Always included.
absolute HTTPS URL
Optional.
Optional.
Optional.
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 or URLs. |
| 401 | unauthorized | Invalid API key. |
| 404 | not_found | Unknown handle, tweet or community. |
| 403 | restricted_page | The account is suspended or unavailable, or the tweet is withheld, protected or age-restricted for logged-out visitors. |
| 429 | upstream_rate_limited | X rate limited guest activation or the GraphQL read. |
| 502 | upstream_challenged | X refused the guest token or the request (status challenged). |
| 502 | operation_unavailable | X no longer serves the pinned persisted query for this operation. |
| 502 | unsafe_redirect | X answered the API request with a redirect. |
| 502 | unsupported_page | The GraphQL result is missing, mismatched or structurally unsupported. |
| 502 | response_too_large | The operation’s response byte budget was exceeded. |
| 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, HTTP 5xx after the single retry, or X returned the post without its author and text. |
| 503 | busy | All retrieval slots are busy. |
| 504 | timeout | The operation’s deadline elapsed. |