Home › Guides › X Tweet Details Scraper

X (Twitter) tweet details: links or ids to full records, with the author behind each post

The X (Twitter) Tweet Details Scraper turns a list of tweet addresses or ids into full records: each tweet's current numbers — likes, replies, reposts, quotes — its text, media and links, and the full account record of whoever posted it. It reads tweets of any age (measured: id 20 from March 2006). Every row says in countsFrom where its counts came from, because X states only two of the four on a single tweet. No login, no API key, no browser.

Who it's for

What you get

GroupFields
TweetID, URL, text, created time, age in hours, language, sensitive/edited flags
CountsLikes & replies (always X's), reposts & quotes (from the author page, else null), engagement total, per-1k-followers, per-hour; countsFrom & countsComplete
ContextConversation ID, replied-to tweet & handle, quoted tweet id & text, media with direct URLs and sizes, hashtags, mentions, expanded links
AuthorID, handle, name, followers, following, posts, bio, location, website, verification & type, join date — flattened onto every row

A real row for the first tweet ever (trimmed):

{
  "type": "tweet",
  "id": "20",
  "url": "https://x.com/jack/status/20",
  "text": "just setting up my twttr",
  "createdAt": "2006-03-21T20:50:14.000Z",
  "likes": 309218,
  "replies": 18099,
  "reposts": 124610,
  "quotes": 7322,
  "engagement": 459249,
  "engagementPer1kFollowers": 36.638,
  "countsFrom": "author-page",
  "countsComplete": true,
  "authorHandle": "jack",
  "authorFollowers": 12534906,
  "authorCreatedAt": "2006-03-21T20:50:14.000Z",
  "authorEnriched": true
}

How it works

The Actor reads X's own embed (syndication) backend. For each line it asks that service for the tweet, and then — once per author — reads the author's newest embedded page. That second read turns a thin answer into a full record: X states a tweet's like and reply count but not its repost or quote count, and only eight fields about its author. The author's page states all four counts and the 38-field account. Likes and replies are always X's own; reposts and quotes come from the author page when the tweet is on it, and are null — never a fake 0 — when it is older than that page.

Input

InputWhat it does
tweetsTweet addresses or bare numeric ids, one per line (x.com, twitter.com, a /photo/1 suffix or just 20); duplicates read once
enrichAuthorRead each author's newest page once (default on): adds reposts/quotes and the author's full record — not charged
includeAuthorRowsOne extra row per author whose page was read (charged as an author row)
postedWithinDays · minEngagement · maxTweetsLast N days only · minimum engagement · cost cap for the run — filtered rows not charged
concurrencyTweets read side by side (default 8)

Two tweets with author enrichment:

{ "tweets": ["https://x.com/jack/status/20", "https://x.com/NASA/status/2111180963661435219"], "enrichAuthor": true }

Honest limits

Pricing

Pay per result: $0.30 per 1,000 delivered tweets and $1 per 1,000 author rows (only with includeAuthorRows). Status rows and tweets left out by a filter are free, and the author pages the enrichment reads are not charged — they are our cost, not your row. You also pay Apify for the small compute. Current prices are on the actor's Pricing tab on Apify.

Links in, full records out: current numbers, media and the author behind every tweet — at any age. Exportable to JSON, CSV or Excel.

Open the X Tweet Details Scraper →

Related

This Actor works from tweet links; to watch a list of accounts' newest posts on a schedule use the X Account Monitor, and for an account's own record with activity and growth use the X Profile Scraper. On another network, the YouTube Comments Scraper turns video links into comment data.

Frequently asked questions

Do I need an X account, login or API key?

No. The Actor reads X's public embed (syndication) backend with no login, no cookies and no browser — charged per delivered row.

Why are reposts and quotes sometimes null?

X does not state them on a single tweet — only likes and replies. They come from the author's newest embedded page, so a tweet older than that page has them null. countsFrom and countsComplete say so on every row instead of filling in a fake zero.

What does author enrichment cost me?

Nothing per tweet: one read per author per run, and those author reads are not charged. 500 tweets from 20 accounts means 520 reads and 500 charged rows. Enrichment adds the repost and quote counts and the author's full 38-field record to every row.

How old a tweet can it read?

Any public one. Measured: tweet id 20 from 21 March 2006 — history an account timeline cannot reach. Deleted, protected and suspended tweets come back as free status rows.

What can't it do?

No keyword or hashtag search (it works from links you already have), no reply texts and no view counts — X's embed backend serves none of those.

X (Twitter) Tweet Details Scraper — any tweet's current record plus its author, from a link. Pay per row, no API key.

Get tweet details on Apify →