Tweet X Scraper
Pricing
from $0.15 / 1,000 tweets
Tweet X Scraper
Collect public X/Twitter tweets from usernames, from:username queries, tweet URLs, and tweet IDs. Export clean tweet text, author info, engagement metrics, media, links, and run summaries without X login.
Pricing
from $0.15 / 1,000 tweets
Rating
0.0
(0)
Developer
Muhammad Qaseem Iqbal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Tweet X Scraper ๐
Collect clean, ready-to-use public tweet data from X/Twitter without needing an X login. Tweet X Scraper currently focuses on public usernames, from:username queries, tweet URLs, and tweet IDs, then saves the results in a clear Apify dataset you can export, analyze, or send to your own tools. โจ
Use it for social listening, brand monitoring, market research, trend discovery, journalism, lead research, AI training datasets, RAG pipelines, and automated reporting. ๐
Tweet X Scraper works with public data only. It cannot access private or protected accounts, and it does not bypass X/Twitter permissions. Generic keyword, hashtag, mention, cashtag, and advanced search are reported as unsupported while X public search rejects guest requests. ๐
๐ What Can You Do With Tweet X Scraper?
- ๐ค Collect tweets from public usernames using simple profile inputs.
- ๐ Use simple
from:usernamequeries such asfrom:apifyorfrom:elonmusk. - ๐ Fetch exact tweets from tweet URLs or tweet IDs.
- ๐งน Remove duplicate tweets when searches overlap.
- ๐ Capture useful engagement data such as likes, replies, reposts, quotes, bookmarks, and views when available.
- ๐งโ๐ผ Include author details such as username, display name, profile URL, verification signals, and follower counts when available.
- ๐ผ๏ธ Detect media, links, hashtags, mentions, and cashtags.
- ๐ง Add optional local enrichments such as engagement score, simple sentiment, entities, and topics.
- ๐งพ Save a friendly run summary in
OUTPUTso you can quickly see what happened. - โ ๏ธ Optionally save structured error records for unavailable tweets or failed lookups.
- ๐ธ Run with cost-saving defaults from the first click.
โ Popular Use Cases
๐ฃ Brand Monitoring
Track posts from public accounts you care about, such as your brand, executives, competitors, partners, or industry voices.
Example sources:
from:openaifrom:apifyopenaiinfromUsers- Exact tweet URLs from X/Twitter
๐งญ Market Research
Discover what people are saying about products, industries, events, public figures, or fast-moving topics.
Great for:
- ๐งช Product research
- ๐ฃ๏ธ Voice-of-customer analysis
- ๐ Competitor monitoring
- ๐ Trend reports
- ๐ฐ Newsroom research
๐ค AI & Data Pipelines
Export clean JSON records for:
- ๐ง LLM research datasets
- ๐ Retrieval-augmented generation
- ๐ Knowledge bases
- ๐ Dashboards
- ๐งช Data science notebooks
- ๐ ๏ธ Internal automation
โฐ Scheduled Monitoring
Run the Actor every hour, day, or week to watch new posts appear over time. Use monitoringMode, lookbackMinutes, and stateKey to keep recurring jobs organized. ๐
๐ Quick Start
- Open the Actor on Apify.
- Choose one or more working sources: username,
from:usernamequery, tweet URL, or tweet ID. - Set the maximum number of tweets you want.
- Click Start.
- Download results from the Apify dataset as JSON, CSV, Excel, XML, RSS, or HTML. ๐
๐งช Simple Input Examples
๐ค Tweets From A Public User
{"fromUsers": ["openai"],"maxItems": 100,"sort": "latest"}
๐ Use A from:username Query
{"queries": ["from:apify"],"maxItems": 50}
๐ฃ Brand Account Monitoring
{"fromUsers": ["AcmeBank", "AcmeSupport"],"includeReplies": true,"includeRetweets": false,"maxItems": 1000}
โ ๏ธ Unsupported Keyword Search Diagnostic
{"queries": ["openai"],"includeErrors": true}
๐ Fetch Specific Tweet URLs
{"tweetUrls": ["https://x.com/elonmusk/status/1846846285917131130"],"includeAuthorDetails": true}
๐ Scheduled User Monitoring
{"fromUsers": ["openai"],"monitoringMode": true,"lookbackMinutes": 60,"stateKey": "openai-hourly","maxItems": 5000}
โฐ Hourly Monitoring
{"fromUsers": ["AcmeBank"],"monitoringMode": true,"lookbackMinutes": 60,"stateKey": "acme-bank-hourly","maxItems": 500}
๐งฐ Input Options In Plain English
| Input | What it means | Example |
|---|---|---|
queries ๐ | Simple from:username queries. Generic keyword search is currently reported as unsupported. | from:apify, from:openai |
advancedQuery ๐ง | Currently unsupported for public guest scraping | Leave empty |
tweetIds ๐ | Exact tweet/status IDs to fetch | "1846846285917131130" |
tweetUrls ๐ | Exact tweet links from x.com or twitter.com | https://x.com/user/status/... |
fromUsers ๐ค | Public accounts to search from | openai, elonmusk |
hashtags ๐ท๏ธ | Currently unsupported for public guest scraping | Leave empty |
mentions ๐ฃ | Currently unsupported for public guest scraping | Leave empty |
cashtags ๐น | Currently unsupported for public guest scraping | Leave empty |
maxItems ๐ฏ | Maximum tweet records to save | 50, 1000, 5000 |
sort ๐งญ | Result style where supported | latest, top, mixed |
startTime / endTime ๐
| Reserved for search-style sources; not required for username/tweet URL lookups | ISO timestamps |
language ๐ | Prefer tweets in one language | en, es, fr |
outputProfile ๐ฆ | How much detail to save | minimal, standard, full |
includeErrors โ ๏ธ | Save error rows for failed lookups | true or false |
proxyConfiguration ๐ | Optional Apify proxy settings | Off by default |
๐ฆ What Data Do You Get?
Tweet X Scraper saves results into the default Apify dataset. Each row is either a tweet record or, if enabled, an error record.
๐ฆ Tweet Records
Depending on the selected output profile and what X/Twitter makes available, tweet records can include:
- ๐ Tweet ID
- ๐ X URL and Twitter URL
- ๐ Tweet text
- ๐ Created date and UNIX timestamp
- ๐ Language
- ๐ฑ Source client when available
- ๐ค Author profile details
- ๐ Reply, repost, like, quote, view, and bookmark counts
- ๐งต Conversation and reply information
- ๐ผ๏ธ Media details
- ๐ Links
- ๐ท๏ธ Hashtags, mentions, and cashtags
- ๐ฉ Flags such as retweet, quote, pinned, sensitive, or conversation-controlled
- ๐ Search metadata showing which input produced the tweet
- ๐ง Optional enrichment fields
- โฑ๏ธ Scrape timestamp
โ ๏ธ Error Records
When includeErrors is turned on, the Actor can save clear error rows for cases such as:
- A tweet was deleted.
- A tweet is private, protected, or unavailable.
- A source could not be reached.
- A request was blocked or timed out.
This is useful when you need a full audit trail of what happened during the run. ๐งพ
๐งพ Sample Tweet Output
{"recordType": "tweet","id": "1846846285917131130","url": "https://x.com/elonmusk/status/1846846285917131130","twitterUrl": "https://twitter.com/elonmusk/status/1846846285917131130","text": "True","createdAt": "2024-10-17T09:30:41.000Z","lang": "en","author": {"username": "elonmusk","name": "Elon Musk","url": "https://x.com/elonmusk","isBlueVerified": true},"metrics": {"replyCount": 3480,"retweetCount": 18171,"likeCount": 85815,"quoteCount": 264,"viewCount": 10913296,"bookmarkCount": 1426},"entities": {"hashtags": [],"mentions": [],"urls": [],"cashtags": []},"media": [],"scrapedAt": "2026-06-15T08:00:00.000Z"}
โ ๏ธ Sample Error Output
{"recordType": "error","input": "0000000000000000004","operation": "tweetLookup","errorCode": "TWEET_UNAVAILABLE","errorMessage": "Tweet or source could not be found, is deleted, private, protected, or temporarily unavailable.","httpStatus": 404,"retryCount": 0,"scrapedAt": "2026-06-15T09:30:51.685Z"}
๐ธ Built To Run Cheaply
Tweet X Scraper is configured to avoid surprise costs by default. The standard settings are intentionally conservative:
- ๐พ
outputProfilestarts atminimalto reduce dataset size. - ๐ฏ
maxItemsstarts at50for small trial runs. - ๐
maxPagesPerQuerystarts at1so runs do not automatically crawl deep result pages. - โ ๏ธ
includeErrorsstarts atfalseso failed lookups do not add extra dataset rows unless you ask for them. - ๐ Apify Proxy is off by default to avoid proxy charges unless you enable it.
- ๐ Retries are limited by default to avoid long, expensive failed runs.
- ๐ง Deduplication is on, but persistent dedupe storage is off by default to reduce key-value store writes.
- ๐งฎ The Actor supports low-memory runs starting at
256 MB.
For larger or more difficult jobs, you can increase limits, enable proxy, add retries, or use standard / full output. In short: start small, scale only when you need to. ๐ฆ
๐ Reliable Username Monitoring
For recurring jobs, schedule the Actor with fromUsers, monitoringMode, lookbackMinutes, and a stable stateKey. This keeps runs small, predictable, and easier to compare over time. ๐งฉ
๐ง Optional Enrichments
Tweet X Scraper can add lightweight local analysis fields without calling outside AI services:
- ๐ Engagement score
- ๐ Basic sentiment
- ๐ท๏ธ Entities
- ๐งต Topics
- ๐๏ธ Custom topic labels
These enrichments are optional. Keep them off for the smallest, fastest output. Turn them on when you want more analysis-ready data. โจ
๐ API Usage Example
You can run the Actor through the Apify API and receive dataset items back.
curl --request POST \"https://api.apify.com/v2/acts/qaseemiqbal~tweet-x-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \--header "Content-Type: application/json" \--data '{"fromUsers": ["openai"],"maxItems": 100,"sort": "latest","outputProfile": "minimal"}'
Replace YOUR_APIFY_TOKEN with your Apify API token. ๐
๐ก๏ธ Important Notes
- ๐ Public data only: this Actor does not access private or protected accounts.
- ๐ซ No X login required: you do not need to provide X/Twitter credentials.
- ๐ฆ๏ธ Availability can vary: X/Twitter may limit, throttle, omit, or change public profile results.
- ๐งช Empty runs return no fake tweet records.
- โ ๏ธ Generic keyword, hashtag, mention, cashtag, and advanced search inputs are reported as unsupported while public X search rejects guest requests.
- โ ๏ธ If a tweet is deleted or unavailable, it cannot be recovered by the Actor.
- ๐ Proxy can improve reliability for difficult runs, but it may increase cost.
๐งฏ Troubleshooting
๐ I got no results. What should I try?
Try a public username, a from:username query, a tweet URL, or a tweet ID. Also remove strict filters such as includeImages, includeVideos, verifiedOnly, or high minimum engagement values.
๐ I expected more historical tweets.
Increase maxItems or split large username collections into separate runs. Public X availability can vary by account and by what the logged-out web app exposes.
๐ Should I enable proxy?
Proxy is off by default to keep costs low. Enable Apify Proxy when reliability matters more than the cheapest possible run, especially for larger jobs or blocked requests.
๐งพ Why do I see error records?
You turned on includeErrors. Error records help you see which inputs failed and why. Turn it off if you only want successful tweet records.
๐พ My dataset is too large.
Use outputProfile: "minimal", keep includeRawData disabled, and collect fewer items per run.
๐ I see duplicate-looking results.
Keep deduplicate enabled. Overlap can happen when a tweet URL, tweet ID, and username timeline point to the same tweet.
โ FAQ
Do I need an X/Twitter account? ๐
No. Tweet X Scraper is designed for public data and does not require your X/Twitter login.
Can it scrape protected accounts? ๐
No. Protected/private content is not available.
Can I search by hashtag, keyword, mention, and cashtag? ๐ท๏ธ
Not reliably through public guest access right now. The Actor reports these inputs as unsupported instead of spending requests on X search endpoints that currently return 404. Username timelines, from:username queries, tweet URLs, and tweet IDs are the supported paths.
Can I schedule it? โฐ
Yes. Use Apify schedules with monitoringMode, lookbackMinutes, and a stable stateKey.
Can I export the data? ๐ค
Yes. Apify datasets can be downloaded in common formats such as JSON, CSV, Excel, XML, RSS, and HTML.
Does it return fake data when nothing is found? ๐งช
No. Empty runs produce zero tweet records and a summary explaining what happened.
What is the cheapest way to start? ๐ธ
Start with maxItems: 50, outputProfile: "minimal", Apify Proxy disabled, and one focused username. Increase limits only after confirming the results look useful.
๐งโ๐ป Local Development
Install dependencies:
$npm install
Run tests:
$npm test
Run locally with Apify CLI:
$apify run
Start the Node entrypoint:
$npm start
๐๏ธ Changelog
0.1.0
- ๐ Initial production-ready JavaScript Actor.
- ๐งพ Added Apify manifest, input schema, output schema, and dataset schema.
- ๐ฆ Added public X/Twitter tweet lookup and search support.
- ๐ธ Added low-cost defaults for smaller trial runs.
- ๐งช Added automated tests and Docker support.