X.com Posts Scraper
parseforge/x-com-scraper
Social mediaDeveloper toolsOther
Scrapes X.com posts from user profiles, direct tweet URLs, or keyword-filtered timelines and returns each post as a flat row with full text, engagement counts, and optional cross-platform enrichment.
- Total users
- 897
- Monthly active
- 95
- Total runs
- 11.8K
- Bookmarked
- 16
- Rating
- 5.0 (3)
- Last modified
- 30 hours ago
Overview
X.com Posts Scraper
Scrape X.com posts from any user profile, tweet URL, or keyword search, up to a million per run. Every post comes with its full text, metrics, timestamp, and optional cross-platform enrichment. No API key required. Export to CSV, JSON, Excel, or XML.
X.com's official API requires a developer account, project approval, and strict rate limits that throttle your data collection. This actor reads the public web interface directly, pulling posts by username, keyword, or direct URL, and returns each match in one consistent schema. You control the volume, the filters, and the output format without writing a single line of code.
| Who uses it | What they scrape X.com for |
|---|---|
| Market researchers | Track what a set of influential accounts are saying about a product category this month. |
| PR and comms teams | Monitor executive or brand account posts for sentiment and narrative shifts. |
| Data journalists | Collect a corpus of posts around a breaking event from known sources. |
| Growth marketers | Analyze competitor posting cadence and top-performing content by engagement. |
What it does
This Actor collects X.com posts from user profiles, direct tweet URLs, or keyword-filtered user timelines, and returns each one as a flat row with full text, engagement counts, and optional enrichment data.
- ๐ Direct URLs: feed it tweet or profile URLs and it pulls every matching post, oldest first.
- ๐ Keyword search on usernames: list one or more usernames and an optional search term to filter their timelines.
- โจ Cross-platform enrichment: toggle on to attach Google Trends momentum, YouTube interest, or Apollo.io company profiles to each post.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with X.com data
๐ Monitor brand or executive accounts.
A comms team lists five executive usernames, sets maxItems to 5000, and exports a CSV of every post this quarter to audit messaging consistency.
๐ Research a topic across known voices.
A market researcher enters ten fintech founder usernames and the search term 'regulation', then pulls every matching post to map the debate.
๐ฐ Collect posts around a breaking event.
A journalist feeds the actor a list of tweet URLs from a news thread and exports the full text and timestamps for a timeline reconstruction.
๐ Benchmark competitor content performance.
A growth marketer scrapes a competitor's profile, sorts by engagement in a spreadsheet, and identifies the three post formats that drove the most replies.
Why choose this scraper
| What you get | |
|---|---|
| No API key or approval | Scrapes the public web interface. No developer account, no OAuth, no rate-limit headaches. |
| Up to 1,000,000 posts per run | Set your volume once and let the actor handle pagination and retries. |
| Optional enrichment | Attach Google Trends, YouTube, or Apollo.io company data to every row, on demand. |
| Fixed flat schema | Every post arrives with the same columns, ready for pivot tables, BI tools, or a database. |
Configure the run
Drive the Actor from direct tweet or profile URLs, or from a combination of usernames and an optional search keyword. Filters apply as each post is read so only matches land in your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"maxItems": 10,
"usernames": [
"elonmusk"
]
}
A larger pull:
{
"maxItems": 200,
"usernames": [
"elonmusk"
]
}
Pricing
Pay-per-result: $0.085 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $8.50 |
| 1,000 results | $85.00 |
| 10,000 results | $850.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the X.com Posts Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to X.com through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/x-com-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that you are not mixing startUrls with search filters. They are mutually exclusive. Also verify that the usernames you entered exist and that your searchQuery, if used, matches posts on their timelines.
The actor stops before reaching my maxItems limit.
The actor stops when it runs out of matching posts. If you are filtering by keyword, try broadening or removing the searchQuery. If you are using direct URLs, confirm the tweets still exist and are public.
I get an error about enrichment failing.
Make sure you have selected a valid enrichment connector and that the associated MCP server is reachable. If you are using the override fields for proxy URL or token, clear them and try again with the defaults.
The dataset has fewer columns than I expected.
Enrichment columns appear only when enrichOutput is toggled on and a connector is selected. If enrichment is off, you get the core post fields only.
Some posts are missing engagement metrics.
The actor extracts whatever metrics are visible on the public page. Posts that failed to load or were deleted mid-scrape may have incomplete data. Re-run with a smaller maxItems value to reduce the chance of timeouts.
FAQ
| Question | Answer |
|---|---|
| Do I need an X.com API key or login? | No. The actor reads the public web interface, so no developer account, API key, or authentication is required. |
| Can I search all of X.com for a keyword without specifying usernames? | No. Standalone keyword search across the entire platform is not supported. You must provide at least one username when using the searchQuery field. The search term filters that user's timeline. |
| What is the difference between startUrls and the search filters? | startUrls accepts direct tweet or profile URLs and scrapes them as-is. The search filters (usernames plus an optional searchQuery) pull a user's timeline and optionally filter it by keyword. The two input methods are mutually exclusive. |
| How many posts can I collect in one run? | You can set maxItems anywhere from 1 to 1,000,000. The actor stops when it hits your limit or exhausts the available posts. |
| What does the enrichment feature do? | When toggled on, it attaches cross-platform context to each post. Depending on the connector you pick, you get Google Trends momentum and YouTube interest for the topic, or Apollo.io company profile data for the post author. |
| Does enrichment cost extra? | Enrichment is off by default and costs nothing when disabled. When you enable it, you pay only for the enrichment calls you consume. |
| What export formats are supported? | You can export your dataset as CSV, JSON, Excel, or XML directly from the Apify platform. |
| Can I scrape replies to a specific tweet? | The actor collects the posts that match your input URLs or search criteria. It does not recursively fetch reply threads. For a full conversation tree, feed it the individual tweet URLs you need. |
| Is this legal? | The actor accesses publicly available web pages. You are responsible for complying with X.com's terms of service and applicable laws in your jurisdiction. |
| How do I scrape a private account? | The actor reads the public web interface only. Private or protected accounts are not accessible. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by X Corp. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| maxItems | integer | How many posts to collect per run. | 10 |
| startUrls | array | Direct URLs to scrape. Use this OR search filters below, not both. Supports tweet URLs (https://x.com/username/status/1234567890) and user profile URLs (https://x.com/username). | not set |
| searchQuery | string | Optional keyword filter applied to tweets pulled from the Usernames below. Standalone search across all of X is NOT supported: you must also list at least one username. Mutually exclusive with startUrls. | not set |
| usernames | array | List of X.com usernames (without @) to scrape tweets from. Required when using searchQuery. Combine with searchQuery to filter the user's tweets by keyword. | ["elonmusk"] |
| enrichOutput | boolean | Toggle on to add Google/YouTube/News momentum + growth rates to every tweet, keyed by the topic (search query, mentioned username, or hashtag). Default off (free of charge). Requires a connector below. | false |
| enrichConnector | string | Pick Apollo.io (primary) to enrich each tweet's author with their company profile (size, funding, industry, LinkedIn). Or pick Trends MCP (secondary) for cross-platform topic momentum. | not set |
| enrichTool | string | Override the auto-picked tool name. Leave empty for auto-detect. | not set |
| mcpProxyUrlOverride | string | Diagnostic only. Bypasses Apify's MCP proxy. Leave empty for normal use. | not set |
| mcpTokenOverride | string | Diagnostic only. Used with URL override. Leave empty for normal use. | not set |
Pricing
from $8.00 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.008 to $0.0085 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.08 to $0.085 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~x-com-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
Rated 5.0 out of 5 across 3 reviews. Read them on Apify.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
