X/Twitter Tweet Scraper
Pricing
from $0.25 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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
| Problem | How this Actor helps |
|---|---|
| You need the full conversation under a post | Replies + thread expansion with depth |
| You track brand crises or campaigns | Scrape quotes, replies, and engagement users |
| You measure amplification | Export reposters (and likers when X exposes them) |
| You archive evidence for research/journalism | Snapshot tweet details + media + notes |
| You train models / RAG systems | Structured tweet + reply corpora |
| You monitor competitor announcements | Schedule scrapes of known tweet URLs |
| You hate juggling 4 scrapers for one post | One 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
| Capability | Included |
|---|---|
| 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.comURL (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
- Paste one or more tweet URLs or IDs.
- Enable Tweet Details, Replies/Conversation, Quotes, Likers, and/or Reposters.
- Optionally include media, polls, cards, and Community Notes on detail rows.
- Set max limits per feature.
- 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
| Parameter | Type | Default | Description | Example |
|---|---|---|---|---|
tweets | string[] | (required) | Public tweet URLs or numeric IDs. Duplicates are removed. | ["https://x.com/elonmusk/status/2066538446781382800"] |
Accepted forms:
2066538446781382800https://x.com/user/status/2066538446781382800https://twitter.com/user/status/2066538446781382800
What to scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
scrapeTweetDetails | boolean | true | Scrape the root tweet detail record. |
scrapeReplies | boolean | true | Scrape replies to each tweet. |
scrapeConversationThread | boolean | true | Fetch the conversation timeline (same backend path as replies). |
expandThread | boolean | true | Compute reply depth from parent relationships. |
scrapeQuotes | boolean | false | Scrape quote tweets. |
scrapeLikers | boolean | false | Scrape users who liked the tweet (when available). |
scrapeReposters | boolean | false | Scrape 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:
| Parameter | Type | Default | Description |
|---|---|---|---|
includeMedia | boolean | true | Attach media objects on tweet detail rows. |
includePolls | boolean | true | Attach poll data when the tweet is a poll. |
includeCards | boolean | true | Attach card / link-preview metadata. |
includeCommunityNotes | boolean | true | Attach Community Notes when X provides them. |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
maxReplies | integer | 100 | Max replies / conversation items per root tweet. |
maxQuotes | integer | 100 | Max quote tweets per root tweet. |
maxLikers | integer | 100 | Max likers per tweet. |
maxReposters | integer | 100 | Max reposters per tweet. |
Output
| Dataset / tab | Contains |
|---|---|
| Tweets | Root tweet detail rows (type: "tweet") |
| Replies | Conversation replies (type: "reply") |
| Quotes | Quote tweets (type: "quote") |
| Engagement | Likers + 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
likeCountdoes not guarantee liker rows. PreferscrapeRepostersfor reliable amplification graphs.
Use cases
- Brand crisis response — capture replies and quotes within minutes of a spike.
- Campaign measurement — archive announcement tweets and conversation volume.
- Influencer amplification — list who reposted a launch post.
- Journalism — preserve a public thread with nested reply depth.
- OSINT / investigations — snapshot text, media, and Community Notes.
- Customer support ops — collect reply chains under support tweets.
- Political / civic research — study discourse under high-visibility posts.
- Academic NLP — build reply corpora with stable schema fields.
- RAG / LLM evaluation — feed real conversation trees into pipelines.
- Competitive intelligence — monitor competitor announcement threads.
- Agency reporting — export CSV/JSON for client decks.
- Trust & safety — sample engagement graphs around flagged content.
- Trend detection — compare quote velocity across related posts.
- Creator analytics — inspect which replies drive secondary engagement.
- Market research — gather qualitative reactions at scale.
- Legal / compliance archives — store time-stamped public post snapshots.
- Product feedback mining — extract reply themes under product tweets.
- PR measurement — quantify quote sentiment around press posts.
- Bot / spam studies — analyze engagement-user metadata distributions.
- 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
- Don’t enable everything by default. Details + replies covers most monitoring needs.
- Use reposters for amplification. Likers are often empty even when like counts are high.
- Cap replies on viral posts. A mega-thread can be huge — set
maxRepliesintentionally. - Batch tweet URLs that share a campaign, not unrelated firehoses.
- Keep rich-entity toggles on for details-only runs — they add fields without extra list crawls.
- Schedule follow-ups. Conversations evolve; re-scrape key IDs after 1h / 24h.
- Separate datasets downstream. Store
repliesandengagementin different tables for cleaner analytics. - Validate one URL first before a 500-tweet job.
- Prefer status URLs with numeric IDs for unambiguous targeting.
- 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.
Does it work with twitter.com and x.com links?
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
likeCountare 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
| Need | Multiple narrow tools | X Tweet Scraper New |
|---|---|---|
| Tweet text + author | Tool A | Tweet Details |
| Replies / thread | Tool B | Replies + depth |
| Quotes | Tool C | Quotes toggle |
| Reposters / likers | Tool D | Engagement tab |
| Media / polls / notes | Custom parsing | Parsed on detail rows |
| One Apify Task | Glue scripts | Single 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
- Open X Tweet Scraper New on Apify.
- Paste a public tweet URL.
- Keep Details + Replies on (defaults), or enable Quotes / Reposters as needed.
- Click Start.
- 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.