XPOST /v1/x/post

X (Twitter) Post Scraper API

A single X post (tweet) by URL or ID: text, author, reply/quote/retweet info, media and engagement counts including views.

Cost
1 credit
Failed requests
Refunded
Cache hits
Free
Response fields
20
Limits
Public posts only
All limits

What the X (Twitter) Post Scraper API does

The X (Twitter) Post Scraper API returns a single public post (tweet) by URL or ID: text, language, creation time, author, reply, quote and retweet information, media with image and video URLs, and the engagement numbers: replies, reposts, quotes, likes, bookmarks and views. It is the building block for archiving posts with their metrics, reporting on campaign posts and validating links that users submit to your product. Send the post URL, or the ID as a string: post IDs are larger than JSON numbers can represent exactly, so numeric IDs are rejected. No paid X API tier is needed. Each request costs 1 credit.

What you get

Top-level fields of the response. Every field is typed and documented; nullable fields are null when the platform does not show them.

FieldTypeDescription
idstringTweet ID (original tweet if a retweet)
linkstring | nullhttps://x.com/<author>/status/<id>
textstringFull text (long-form note text if present)
langstring | nullLanguage code detected by X
created_atstring | nullPost time, X legacy date format
author_usernamestring | nullAuthor screen name
is_pinnedbooleanAlways false for this endpoint
is_retweetbooleanTweet is a retweet
retweeted_fromstring | nullOriginal author's username when retweet
is_replybooleanTweet is a reply
in_reply_tostring | nullScreen name being replied to
is_quotebooleanTweet quotes another tweet
quotedobject | nullQuoted tweet summary
reply_countinteger | nullNumber of replies
retweet_countinteger | nullNumber of retweets
quote_countinteger | nullNumber of quote tweets
like_countinteger | nullNumber of likes
bookmark_countinteger | nullNumber of bookmarks
view_countinteger | nullNumber of views
mediaarray<object> (6 fields each)Attached media; empty array if none

Request example

Send the API key as a Bearer token. The body is a small JSON object.

curl -X POST https://api.scrapeeverything.com/v1/x/post \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://x.com/jack/status/20"}'
ParameterRequiredDescription
urlNoTweet URL (a bare tweet ID also works).
idNoTweet ID; used only when url is empty.

What it costs

Each successful request costs 1 credit. Your first 100 credits are free. With credit packs, 1,000 requests to this endpoint cost:

  • Builder pack

    $1.56

    25,000 credits for $39.00

  • Growth pack

    $1.19

    100,000 credits for $119.00

  • Scale pack

    $0.90

    500,000 credits for $449.00

See pricing for all packs and rate limits.

Use cases

  • Report on campaign posts with views, likes, reposts and bookmarks.
  • Archive posts with their media and engagement for compliance or research.
  • Unfurl and validate X links that users paste into your app.

Limitations: Unofficial API: not affiliated with or endorsed by the platform. Public data only, as a logged-out visitor sees it. Timelines return recent posts only (up to 60); protected accounts and posts X hides from logged-out visitors are missing.

  • Send id as a string. Post IDs are larger than JSON numbers can hold exactly; numeric IDs are rejected.

Questions

Why must the ID be a string?

X post IDs are larger than JSON numbers can hold exactly, so numeric IDs would be corrupted. Send the URL or the ID as a string.

Are view counts included?

Yes, view_count is returned when X shows it for the post, along with replies, reposts, quotes, likes and bookmarks.

Does it return media files?

It returns media items with type, image or video URL, duration and dimensions.

How much does the X (Twitter) Post Scraper API cost?

1 credit per successful request. Credits are bought in one-time packs and never expire. New accounts get 100 free credits. No payment details needed.

Am I charged for failed requests?

No. If the platform blocks the request, it times out or something fails on our side, the credits are refunded automatically. A definitive answer such as "this account does not exist" is billed because the lookup completed.

Can I re-read a result without paying again?

Yes. Send cache_days (1 to 14) and a repeat request for the same target within that window is served from your cache for free.

More X (Twitter) endpoints

Start with 100 free credits.

Continue with Google, create an API key and send your first request in under a minute.

Get 100 free credits