X/Twitter Tweet Scraper avatar

X/Twitter Tweet Scraper

Pricing

from $0.25 / 1,000 results

Go to Apify Store
X/Twitter Tweet Scraper

X/Twitter Tweet Scraper

Fastest⚡️ Twitter (X) scraping from searches, URLs, lists, and profiles with customizable filters. Extract data at high speed (100 tweets/sec) and scale efficiently. Perfect for researchers, businesses, and developers looking for detailed Twitter insights.

Pricing

from $0.25 / 1,000 results

Rating

0.0

(0)

Developer

Data Doping

Data Doping

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

X Tweet Scraper New | Twitter Tweet, Replies & Conversation Scraper

Scrape any public tweet — details, replies, quotes, reposters, likers, media, polls, cards, and Community Notes — from one Actor.

This is a production-ready Tweet Scraper / Twitter Scraper for Apify. Paste tweet URLs or IDs, choose the datasets you need, and export structured JSON for analytics, monitoring, research, and automation.

If you need a practical Twitter API alternative for conversation-level data — without building GraphQL clients or maintaining browser farms — this Actor is built for you.


Why use this Actor

A single viral post can contain the story: the original message, the thread underneath it, quote commentary, and the people amplifying it. Collecting that manually doesn’t scale. Official API access is often expensive, rate-limited, or incomplete for engagement graphs.

Problems it solves

ProblemHow this Actor helps
You need the full conversation under a postReplies + thread expansion with depth
You track brand crises or campaignsScrape quotes, replies, and engagement users
You measure amplificationExport reposters (and likers when X exposes them)
You archive evidence for research/journalismSnapshot tweet details + media + notes
You train models / RAG systemsStructured tweet + reply corpora
You monitor competitor announcementsSchedule scrapes of known tweet URLs
You hate juggling 4 scrapers for one postOne Actor, feature toggles, typed outputs

Who it's for

  • Social listening and brand protection teams
  • Growth / performance marketers
  • Journalists, investigators, and OSINT analysts
  • Academic researchers studying discourse
  • Agencies reporting on campaign performance
  • Data scientists building NLP / RAG datasets
  • Product and trust-and-safety teams
  • Developers wiring Apify into pipelines

Features

CapabilityIncluded
Tweet details (text, author, counts, URLs)
Conversation / replies timeline
Thread expansion with reply depth
Quote tweets
Likers (when publicly available)
Reposters / retweeters
Media extraction (photos, videos, variants)
Polls (choices + vote counts when present)
Cards / link previews
Community Notes / Birdwatch (when present)
Multiple tweets per run
URL or numeric tweet ID inputs
Per-feature limits
Parallel tweet processing
Rate limiting + empty-page retries
Typed Apify Output tabs
Combined default dataset
Apify Tasks & Schedules

What can be scraped

Tweet details

  • Tweet ID
  • Canonical x.com URL (and Twitter URL when available)
  • Full text (including long-form note text when present)
  • Created time
  • Language
  • Conversation ID
  • Like / reply / repost / quote / bookmark counts
  • View count (when available)
  • Reply / quote / repost flags
  • Author profile snapshot (id, username, name, avatar, verification, follower counts)

Conversation & replies

  • Reply tweets under the root post
  • Parent tweet IDs
  • Nested depth when thread expansion is enabled
  • Author + engagement fields on each reply

Quotes & amplification

  • Quote tweets referencing the root
  • Quoted tweet ID linkage
  • Users who reposted the tweet
  • Users who liked the tweet (subject to X visibility — see Limitations)

Rich entities (from detail payload)

  • Media objects (type, URLs, dimensions, video variants when present)
  • Polls (labels, votes, end time, finality flag)
  • Cards (name, URL, binding values)
  • Community Notes / Birdwatch pivot text and links when X attaches them

How it works

  1. Paste one or more tweet URLs or IDs.
  2. Enable Tweet Details, Replies/Conversation, Quotes, Likers, and/or Reposters.
  3. Optionally include media, polls, cards, and Community Notes on detail rows.
  4. Set max limits per feature.
  5. Run and download typed datasets (tweets, replies, quotes, engagement) or the combined default dataset.

Only enabled features are requested. That keeps costs predictable.


Input options

Sources

ParameterTypeDefaultDescriptionExample
tweetsstring[](required)Public tweet URLs or numeric IDs. Duplicates are removed.["https://x.com/elonmusk/status/2066538446781382800"]

Accepted forms:

2066538446781382800
https://x.com/user/status/2066538446781382800
https://twitter.com/user/status/2066538446781382800

What to scrape

ParameterTypeDefaultDescription
scrapeTweetDetailsbooleantrueScrape the root tweet detail record.
scrapeRepliesbooleantrueScrape replies to each tweet.
scrapeConversationThreadbooleantrueFetch the conversation timeline (same backend path as replies).
expandThreadbooleantrueCompute reply depth from parent relationships.
scrapeQuotesbooleanfalseScrape quote tweets.
scrapeLikersbooleanfalseScrape users who liked the tweet (when available).
scrapeRepostersbooleanfalseScrape users who reposted the tweet.

Rich entities

These fields are parsed from the tweet detail payload when present — they do not add separate list endpoints:

ParameterTypeDefaultDescription
includeMediabooleantrueAttach media objects on tweet detail rows.
includePollsbooleantrueAttach poll data when the tweet is a poll.
includeCardsbooleantrueAttach card / link-preview metadata.
includeCommunityNotesbooleantrueAttach Community Notes when X provides them.

Limits

ParameterTypeDefaultDescription
maxRepliesinteger100Max replies / conversation items per root tweet.
maxQuotesinteger100Max quote tweets per root tweet.
maxLikersinteger100Max likers per tweet.
maxRepostersinteger100Max reposters per tweet.

Output

Dataset / tabContains
TweetsRoot tweet detail rows (type: "tweet")
RepliesConversation replies (type: "reply")
QuotesQuote tweets (type: "quote")
EngagementLikers + reposters (type: "liker" / "reposter")
All Fields (combined)Every row together

Sample tweet detail

{
"type": "tweet",
"id": "2066538446781382800",
"url": "https://x.com/elonmusk/status/2066538446781382800",
"text": "Sample announcement text",
"createdAt": "Wed Jun 18 18:22:11 +0000 2025",
"lang": "en",
"conversationId": "2066538446781382800",
"likeCount": 15420,
"replyCount": 2103,
"retweetCount": 3401,
"quoteCount": 512,
"bookmarkCount": 880,
"viewCount": 2400000,
"author": {
"id": "44196397",
"username": "elonmusk",
"name": "Elon Musk",
"verified": true,
"avatar": "https://pbs.twimg.com/profile_images/.../normal.jpg",
"followersCount": 220000000,
"followingCount": 1200
},
"media": [
{
"type": "photo",
"url": "https://pbs.twimg.com/media/abc.jpg",
"previewUrl": "https://pbs.twimg.com/media/abc.jpg",
"width": 1600,
"height": 900
}
],
"poll": null,
"card": null,
"communityNotes": null,
"isReply": false,
"isQuote": false,
"isRepost": false,
"inputTweetId": "2066538446781382800",
"input": "https://x.com/elonmusk/status/2066538446781382800"
}

Sample reply

{
"type": "reply",
"id": "2066540000000000001",
"url": "https://x.com/analyst42/status/2066540000000000001",
"text": "Interesting point — here’s the context…",
"likeCount": 42,
"replyCount": 3,
"retweetCount": 5,
"parentTweetId": "2066538446781382800",
"depth": 1,
"author": {
"id": "99887766",
"username": "analyst42",
"name": "Alex Analyst",
"verified": false
},
"inputTweetId": "2066538446781382800"
}

Sample engagement user

{
"type": "reposter",
"tweetId": "2066538446781382800",
"user": {
"id": "11223344",
"username": "techwire",
"name": "Tech Wire",
"verified": true,
"followersCount": 540000
},
"inputTweetId": "2066538446781382800"
}

Sample poll (when present on the tweet)

{
"poll": {
"choices": [
{ "label": "Yes", "votes": 12840 },
{ "label": "No", "votes": 3920 }
],
"endDatetime": "2025-06-20T18:00:00.000Z",
"countsAreFinal": true,
"totalVotes": 16760
}
}

Export via Apify as JSON, CSV, Excel, and more.


Examples

1) Tweet details only

{
"tweets": ["https://x.com/openai/status/2066538446781382800"],
"scrapeTweetDetails": true,
"scrapeReplies": false,
"scrapeConversationThread": false
}

2) Full conversation thread

{
"tweets": ["2066538446781382800"],
"scrapeTweetDetails": true,
"scrapeReplies": true,
"scrapeConversationThread": true,
"expandThread": true,
"maxReplies": 500
}

3) Quotes for narrative analysis

{
"tweets": ["https://x.com/user/status/2066538446781382800"],
"scrapeTweetDetails": true,
"scrapeQuotes": true,
"maxQuotes": 300,
"scrapeReplies": false,
"scrapeConversationThread": false
}

4) Amplification map (reposters)

{
"tweets": ["https://x.com/brand/status/2066538446781382800"],
"scrapeTweetDetails": true,
"scrapeReposters": true,
"maxReposters": 500,
"scrapeReplies": false,
"scrapeConversationThread": false
}

5) Engagement pack (replies + quotes + reposters)

{
"tweets": [
"https://x.com/a/status/111",
"https://x.com/b/status/222"
],
"scrapeTweetDetails": true,
"scrapeReplies": true,
"scrapeQuotes": true,
"scrapeReposters": true,
"maxReplies": 200,
"maxQuotes": 200,
"maxReposters": 200
}

6) Rich entities focus (media / polls / notes)

{
"tweets": ["https://x.com/user/status/2066538446781382800"],
"scrapeTweetDetails": true,
"includeMedia": true,
"includePolls": true,
"includeCards": true,
"includeCommunityNotes": true,
"scrapeReplies": false,
"scrapeConversationThread": false
}

7) Likers attempt (when X exposes the list)

{
"tweets": ["https://x.com/user/status/2066538446781382800"],
"scrapeTweetDetails": true,
"scrapeLikers": true,
"maxLikers": 200,
"scrapeReplies": false,
"scrapeConversationThread": false
}

Note: X frequently restricts public liker lists. A high likeCount does not guarantee liker rows. Prefer scrapeReposters for reliable amplification graphs.


Use cases

  1. Brand crisis response — capture replies and quotes within minutes of a spike.
  2. Campaign measurement — archive announcement tweets and conversation volume.
  3. Influencer amplification — list who reposted a launch post.
  4. Journalism — preserve a public thread with nested reply depth.
  5. OSINT / investigations — snapshot text, media, and Community Notes.
  6. Customer support ops — collect reply chains under support tweets.
  7. Political / civic research — study discourse under high-visibility posts.
  8. Academic NLP — build reply corpora with stable schema fields.
  9. RAG / LLM evaluation — feed real conversation trees into pipelines.
  10. Competitive intelligence — monitor competitor announcement threads.
  11. Agency reporting — export CSV/JSON for client decks.
  12. Trust & safety — sample engagement graphs around flagged content.
  13. Trend detection — compare quote velocity across related posts.
  14. Creator analytics — inspect which replies drive secondary engagement.
  15. Market research — gather qualitative reactions at scale.
  16. Legal / compliance archives — store time-stamped public post snapshots.
  17. Product feedback mining — extract reply themes under product tweets.
  18. PR measurement — quantify quote sentiment around press posts.
  19. Bot / spam studies — analyze engagement-user metadata distributions.
  20. Automation — schedule Apify Tasks to scrape known tweet IDs nightly.

Performance

  • Parallel processing of multiple tweet inputs (bounded concurrency)
  • Cursor pagination for replies, quotes, likers, and reposters
  • Empty-page retries on first-page flakiness
  • Rate limiting between backend requests
  • Selective execution — disabled features skip network calls
  • Deduping of tweet IDs and output rows

Actual speed depends on conversation size, enabled engagement lists, and platform responsiveness. Start with one tweet and moderate limits, then scale.


Best practices

  1. Don’t enable everything by default. Details + replies covers most monitoring needs.
  2. Use reposters for amplification. Likers are often empty even when like counts are high.
  3. Cap replies on viral posts. A mega-thread can be huge — set maxReplies intentionally.
  4. Batch tweet URLs that share a campaign, not unrelated firehoses.
  5. Keep rich-entity toggles on for details-only runs — they add fields without extra list crawls.
  6. Schedule follow-ups. Conversations evolve; re-scrape key IDs after 1h / 24h.
  7. Separate datasets downstream. Store replies and engagement in different tables for cleaner analytics.
  8. Validate one URL first before a 500-tweet job.
  9. Prefer status URLs with numeric IDs for unambiguous targeting.
  10. Respect laws and policies for scraping and storing personal data in your region.

FAQ

Does this require an X login in the input?

No. You provide tweet URLs/IDs; the Actor uses its configured backend. Configure any required environment secrets in Apify Actor settings as documented for your deployment.

Can I scrape multiple tweets in one run?

Yes. Pass an array of URLs/IDs in tweets. Duplicates are removed automatically.

How deep do conversations go?

Replies are paginated up to maxReplies. With expandThread: true, each reply includes a computed depth based on parent relationships observed in the collected set.

Can I get quote tweets?

Yes — enable scrapeQuotes and set maxQuotes.

Can I scrape who liked a tweet?

You can enable scrapeLikers, but X often does not expose liker lists to third-party scrapers even when the tweet shows a large like count. Treat likers as best-effort. Reposters are typically more reliable for amplification analysis.

Can I scrape who reposted a tweet?

Yes — enable scrapeReposters.

Are media, polls, and Community Notes separate API crawls?

No. They are parsed from the tweet detail payload when present. Toggle includeMedia, includePolls, includeCards, and includeCommunityNotes to include/exclude those fields on detail rows.

Can I export JSON?

Yes. Apify datasets support JSON, CSV, Excel, and API access.

Yes.

What if a tweet is deleted or protected?

Detail fetch fails for that ID; the Actor records an error row and skips dependent scrapes for that tweet.

Is this an official Twitter / X API?

No. It is a scraping Actor on Apify and should be treated as a Twitter API alternative for public tweet/conversation extraction — not an official X product.


Limitations

  • Public tweets only. Deleted, withheld, protected, or otherwise non-accessible posts cannot be fully scraped.
  • Liker availability is limited by X. Empty liker results with a non-zero likeCount are common and usually reflect platform visibility rules, not a missed toggle.
  • Quote / engagement completeness depends on what X returns for that post and how far you paginate.
  • Community Notes, polls, and cards appear only when present on the tweet payload.
  • Field schemas can evolve as upstream X response shapes change.
  • Not a firehose. This Actor targets specific tweet IDs/URLs you provide — it does not stream the global public timeline.
  • You are responsible for lawful use, retention policies, and compliance with Apify and platform terms.

Why this Actor vs piecing tools together

NeedMultiple narrow toolsX Tweet Scraper New
Tweet text + authorTool ATweet Details
Replies / threadTool BReplies + depth
QuotesTool CQuotes toggle
Reposters / likersTool DEngagement tab
Media / polls / notesCustom parsingParsed on detail rows
One Apify TaskGlue scriptsSingle configurable run

Use focused Actors when you always need one slice. Use this Actor when you want conversation-complete exports from a marketplace-ready control panel.


SEO keywords (naturally covered)

Tweet Scraper · Twitter Scraper · X Scraper · Twitter conversation scraper · Export X data · Twitter API alternative · Scrape tweet replies · Quote tweet scraper · Twitter engagement scraper


Getting started

  1. Open X Tweet Scraper New on Apify.
  2. Paste a public tweet URL.
  3. Keep Details + Replies on (defaults), or enable Quotes / Reposters as needed.
  4. Click Start.
  5. Review Tweets, Replies, Quotes, and Engagement tabs — or download the combined dataset.

You’ll get structured conversation data you can analyze, store, or pipe into the rest of your stack.