X/Twitter Post Scraper — Text, Author & Engagement Metrics avatar

X/Twitter Post Scraper — Text, Author & Engagement Metrics

Pricing

from $1.00 / 1,000 results

Go to Apify Store
X/Twitter Post Scraper — Text, Author & Engagement Metrics

X/Twitter Post Scraper — Text, Author & Engagement Metrics

Scrape a single X/Twitter post - text, author, like count, reply count, hashtags, mentions, media. No login, no API key.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Axery

Axery

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

X (Twitter) Post Detail Scraper

Scrapes a single X/Twitter post — text, author, like count, reply count, hashtags, mentions, media. No login, no API key.

Useful for tracking specific posts (announcements, PR crises, viral moments), embedding post data into a dashboard, and archival/citation research.

What makes this different

Uses X's own public embed backend, not a scraped HTML page — the same endpoint every "embedded tweet" widget on the web calls to render a post for a viewer with no X account at all. That makes it considerably more stable than parsing rendered HTML, which changes shape often and is generally login-gated for anything beyond a single post view.

A withdrawn post is reported, not silently returned as empty. X's own API answers a deleted, protected, or otherwise unavailable post with HTTP 200 and a differently-shaped payload (a "tombstone") rather than an error status. A scraper that doesn't check for that shape would emit a row that looks like a real, empty post instead of correctly reporting "this post is gone."

No token-guessing. The embed endpoint's token parameter is required, but this Actor doesn't attempt to derive whatever validation X applies to it — that would mean reverse-engineering a value meant to gate the endpoint, not reading something the page hands over freely. If a post can't be retrieved, that's reported plainly as a failure for that post rather than worked around.

Input

FieldTypeNotes
postsarrayFull x.com/twitter.com status URLs, or bare numeric post IDs.
proxyConfigurationobjectNot normally needed.

Output

{
"post_id": "x.com:20",
"text": "just setting up my twttr",
"author_name": "jack",
"author_screen_name": "jack",
"like_count": 308827,
"reply_count": 17988,
"created_at": "2006-03-21T20:50:14.000Z",
"url": "https://x.com/jack/status/20"
}

Field presence follows the content of the post itself — hashtags, mentions, media_urls, retweet_count and quote_count are null when a post genuinely has none of those, not because they were missed. A post that's deleted, protected, or otherwise withdrawn fails with a clear message for that post rather than returning a hollow row. Each run also writes a RUN_COVERAGE record to the key-value store with what was requested, what came back, and any per-post failures.

Local development

pip install -r requirements.txt
python test_local.py 20 --out sample_output.json
python test_local.py https://x.com/jack/status/20

sample_output.json is real output from a live run.