X (Twitter): scrapers and the official API, compared
Public posts, profiles, search results, trends, media and Spaces.
Short answer
For most X (Twitter) jobs, start with Twitter (X) Media Downloader: it covers 3 of 7 core fields (text, likes, url) at $0.99 per 1,000 results on Apify's Free plan. The top published score for X (Twitter) goes to X (Twitter) Tweet Scraper by xquik (90 of 100), a Store tool from another publisher, listed for reference.
From published Store listings, output schemas and the official documentation. Checked 2026-11-12. How the ranking works.Twitter (X) Media Downloader: inputs, code and costOpen in Apify Store
What do you need from X (Twitter)?
- Download post media Twitter (X) Media Downloader Only this one: filename, fileSizeBytes, width 10,000 results: $10.30 on Free, incl. $0.40 start, plus Apify platform usage (compute)
- Retrieve post details X Post, Reply & Profile Lookup by Link or ID 10,000 results: $10.30 on Free, incl. $0.40 start, plus Apify platform usage (compute)
- Collect public profiles X (Twitter) Profile & Post Engagement Extractor Only this one: totalEngagement, isPinned, isHighlight 10,000 results: $10.30 on Free, incl. $0.40 start, plus Apify platform usage (compute)
- Transcribe public videos X Video Subtitle & Caption Transcript Converter Only this one: videoIndex, transcriptionMethod, transcriptAvailable 10,000 results: $10.30 on Free, incl. $0.40 start, plus Apify platform usage (compute)
Route map
Each line is one way to get X (Twitter) data; each stop is a field you probably need. Green lines are catalogue Actors, ranked by the published formula.
- 1 Twitter (X) Media Downloader 27 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - 2 X Post, Reply & Profile Lookup by Link or ID 9 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - 3 X (Twitter) Profile & Post Engagement Extractor 29 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - 4 X Video Subtitle & Caption Transcript Converter 29 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - + 7 other Store tools, combined Reference only 5 of 7 core fields
from $0.15 / 1K - API X API v2 Public API fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Catalogue Actors for X (Twitter)
Twitter (X) Media Downloader
Download videos, photos, GIFs, audio and poster images from public Twitter/X posts - no login, no cookies. Works with post links or usernames,…
X Post, Reply & Profile Lookup by Link or ID
Resolve X post links or IDs into text, author, media, polls, quoted/parent posts, engagement metrics and replies, or resolve a handle into that…
X (Twitter) Profile & Post Engagement Extractor
Get any public X profile - bio, followers, verification, avatar, banner - plus latest, top and media posts with full engagement metrics. No login…
Which route for which job
The catalogue Actors for X (Twitter) return different records. "Only this route" lists the published fields no other Actor in this table returns, which is usually what decides the choice. Cost is the published per-result rate; start events and platform usage are extra.
| Actor | Good for | Only this route | Core fields | 10K results |
|---|---|---|---|---|
| Twitter (X) Media Downloader | Download post media | filename, fileSizeBytes, width, height, audioFormat | 3/7 | $9.90 |
| X Post, Reply & Profile Lookup by Link or ID | Retrieve post details | no unique fields | 3/7 | $9.90 |
| X (Twitter) Profile & Post Engagement Extractor | Collect public profiles | totalEngagement, isPinned, isHighlight, following, postCount | 3/7 | $9.90 |
| X Video Subtitle & Caption Transcript Converter | Transcribe public videos | videoIndex, transcriptionMethod, transcriptAvailable, wordCount, fullTranscript | 3/7 | $9.90 |
| X/Twitter Keyword & Hashtag Tweet Search | Find keyword mentions | no unique fields | 3/7 | $9.90 |
| X Keyword Search with Mention & Reply Operators | Find indexed posts | no unique fields | 3/7 | $9.90 |
| X Community Activity & Member Finder | Community activity monitoring | memberCount, feed, moderatorCount, topic, description | 3/7 | $9.90 |
| X Broadcast Viewer History & Replay Link Scraper | Broadcast audience analysis | title, state, viewersNow, viewersTotal, startedAt | 1/7 | $9.90 |
Field matrix: who returns what
Every tool with a published output schema, against the 7 fields most X (Twitter) jobs need. A dot means the field name appears in the schema; rows can still leave it empty.
| Tool | post id | text | author | posted at | likes | reposts | url | Fields |
|---|---|---|---|---|---|---|---|---|
| Twitter (X) Media Downloader | – | ● | – | – | ● | – | ● | 3/7 |
| X Post, Reply & Profile Lookup by Link or ID | – | ● | – | – | ● | – | ● | 3/7 |
| X (Twitter) Profile & Post Engagement Extractor | – | ● | – | – | ● | – | ● | 3/7 |
| X Video Subtitle & Caption Transcript Converter | – | ● | ● | – | – | – | ● | 3/7 |
| X/Twitter Keyword & Hashtag Tweet Search | – | ● | – | – | ● | – | ● | 3/7 |
| X Keyword Search with Mention & Reply Operators | – | ● | – | – | ● | – | ● | 3/7 |
| X Community Activity & Member Finder | – | ● | – | – | ● | – | ● | 3/7 |
| X Broadcast Viewer History & Replay Link Scraper | – | – | – | – | – | – | ● | 1/7 |
| X Article Announcement Post Metadata Collector | – | – | – | – | – | – | ● | 1/7 |
| Twitter (X) Screenshot Generator | – | – | ● | – | – | – | ● | 2/7 |
| Twitter (X) Space Scraper | – | – | – | – | – | – | ● | 1/7 |
| X Trends Lookup by Country, City & WOEID | – | – | – | – | – | – | – | 0/7 |
| X (Twitter) Tweet ScraperReference only, by xquik | ● | ● | ● | – | ● | – | ● | 5/7 |
| Tweet ScraperReference only, by kaitoeasyapi | ● | ● | – | – | ● | – | ● | 4/7 |
| Tweet Scraper V2Reference only, by apidojo | ● | ● | – | – | ● | – | ● | 4/7 |
| Twitter (X.com) Scraper Unlimited: No LimitsReference only, by apidojo | ● | ● | – | – | ● | – | ● | 4/7 |
| Twitter (X) Follower ScraperReference only, by kaitoeasyapi | ● | – | – | – | – | – | ● | 2/7 |
| Twitter Profile Scraper: Get Profile Tweets + Their RepliesReference only, by apidojo | – | ● | – | – | ● | – | ● | 3/7 |
| Fast Twitter (X) User Scraper APIReference only, by apidojo | ● | – | – | – | – | – | – | 1/7 |
| Tools returning it | 6 | 12 | 3 | 0 | 11 | 0 | 17 |
Field dictionary: the exact keys
The same core field has a different key in each Actor's output. Map these before you merge datasets; a dash means the published schema has no matching key. Need a field that is not listed here, such as email? Search every X (Twitter) Actor by field.
| Core field | Twitter (X) Media Downloader | X Post, Reply & Profile… | X (Twitter) Profile & Post… |
|---|---|---|---|
| post id | – | – | – |
| text | altText, tweetText | text | text |
| author | – | – | – |
| posted at | – | – | – |
| likes | likeCount | likeCount | likeCount |
| reposts | – | – | – |
| url | tweetUrl | url | url, sourceUrl, profileUrl |
Download this comparison: CSV · JSON (every tool with a published schema, matching keys per core field, price and score).
All 20 tools, scored
Catalogue Actors link to their detail pages; the score (0 to 100) is the published formula, identical for every tool. Other Store tools follow in their own table, for reference. Price is the published primary-result rate per 1,000 (the Free-plan rate where the price is tiered; higher Apify plans pay less); start events and platform usage are excluded.
| Sample fields | ||||||
|---|---|---|---|---|---|---|
| 57 | Twitter (X) Media Downloader Catalogue Actor, pay per event | altText, likeCount, tweetUrl | 27 | $0.99 | 100% of 29 runs | Oct 2026 |
| 56 | X Post, Reply & Profile Lookup by Link or ID Catalogue Actor, pay per event | text, likeCount, url | 9 | $0.99 | 100% of 24 runs | Oct 2026 |
| 56 | X (Twitter) Profile & Post Engagement Extractor Catalogue Actor, pay per event | text, likeCount, url | 29 | $0.99 | 100% of 24 runs | Oct 2026 |
| 50 | X Video Subtitle & Caption Transcript Converter Catalogue Actor, pay per event | text, authorUsername, tweetUrl | 29 | $0.99 | 7 runs, too few to rate | Nov 2026 |
| 50 | X/Twitter Keyword & Hashtag Tweet Search Catalogue Actor, pay per event | text, likeCount, url | 18 | $0.99 | 6 runs, too few to rate | Nov 2026 |
| 50 | X Keyword Search with Mention & Reply Operators Catalogue Actor, pay per event | text, likeCount, url | 21 | $0.99 | 7 runs, too few to rate | Nov 2026 |
| 50 | X Community Activity & Member Finder Catalogue Actor, pay per event | text, likeCount, url | 21 | $0.99 | 10 runs, too few to rate | Nov 2026 |
| 48 | X Broadcast Viewer History & Replay Link Scraper Catalogue Actor, pay per event | url, title, state | 8 | $0.99 | 100% of 28 runs | Oct 2026 |
| 48 | X Article Announcement Post Metadata Collector Catalogue Actor, pay per event | sourceTweetUrl, title, author.username | 6 | $0.99 | 100% of 28 runs | Oct 2026 |
| 46 | Twitter (X) Screenshot Generator Catalogue Actor, pay per event | authorUsername, targetUrl, profileUrl | 59 | $0.99 | 6 runs, too few to rate | Nov 2026 |
| 41 | Twitter (X) Space Scraper Catalogue Actor, pay per event | url, title, state | 8 | $0.99 | 16 runs, too few to rate | Nov 2026 |
| 37 | X Trends Lookup by Country, City & WOEID Catalogue Actor, pay per event | location, trend, trendType | 10 | $0.99 | 14 runs, too few to rate | Nov 2026 |
Other Store tools, for reference
Scored with the same published formula and listed for comparison only; this site does not link or recommend them.
| Sample fields | ||||||
|---|---|---|---|---|---|---|
| 90 | X (Twitter) Tweet Scraper Reference only, by xquik | id, text, author | 120 | $0.15 | 100% of 3,051,112 runs | Nov 2026 |
| 84 | Tweet Scraper Reference only, by kaitoeasyapi | id, text, likeCount | 17 | $0.25 | 99% of 2,788,916 runs | Nov 2026 |
| 81 | Tweet Scraper V2 Reference only, by apidojo | id, text, likeCount | 12 | $0.40 | 100% of 4,913,864 runs | Nov 2026 |
| 81 | Twitter (X.com) Scraper Unlimited: No Limits Reference only, by apidojo | id, text, likeCount | 12 | $0.40 | 100% of 1,442,247 runs | Nov 2026 |
| 77 | Twitter (X) Follower Scraper Reference only, by kaitoeasyapi | id, url, target_username | 29 | $0.15 | 100% of 33,036 runs | Nov 2026 |
| 75 | Twitter Profile Scraper: Get Profile Tweets + Their Replies Reference only, by apidojo | text, likeCount, url | 10 | $0.40 | 100% of 55,587 runs | Nov 2026 |
| 70 | Twitter Scraper Reference only, by danek | No published schema | – | $0.30 | 100% of 2,641,409 runs | Oct 2026 |
| 67 | Fast Twitter (X) User Scraper API Reference only, by apidojo | id, name, userName | 11 | $0.40 | 100% of 650,777 runs | Nov 2026 |
What to check before you choose
Public X posts and profile activity help teams track mentions, follow conversations and compare engagement. Decide whether the collection starts with known links, account names or search terms: each route answers a different question.
Post lookup suits a defined list of URLs, while keyword search supports topic discovery. Media, captions, screenshots, trends and Spaces need specialist outputs; the official X API offers a separate route with resource-based charges and spending limits.
Checklist
- Match the output to the task. A screenshot preserves a visual record, while post search exposes text and engagement values that can be filtered and compared.
- Check naming before importing results: search tools publish author.username, createdAt, likeCount and retweetCount, which need mapping if your destination expects author, posted_at, likes and reposts.
- Compare billing units as well as headline prices. Store result-event charges can exclude start events and platform plan differences, while the official X API charges per resource returned.
Where the data is incomplete
The published keyword schemas include searchTerm and engagement values.
Specialist outputs have separate availability limits. Screenshot results can report protected, deleted or login_wall states; transcriptAvailable and replayAvailable need checking before treating a video or Space as usable source material.
Official API route
X API v2
X API v2 uses prepaid pay-per-usage credits. Published standard read rates include $0.005 per Post resource and $0.010 per User resource. Pay-per-use launched on February 6, 2026; legacy Basic and Pro plans migrated to pay-per-use.
Price. Charged per resource returned: $0.005 per Post, $0.010 per User. Owned Reads on qualifying own-account endpoints are $0.001 per resource. A 3 million Post-read monthly cap applies to self-serve pay-per-use.
Limits. Spending limits are configurable. Enterprise access is required above the monthly cap.
Terms and personal data
Follow X's terms and the X Developer Agreement when collecting or reusing public content. Do not bypass logins or access controls. This is general information, not legal advice.
Read X (Twitter)'s terms. Keep to public data, do not bypass logins or access controls, and check whether personal data is involved before you collect it. The can-I-scrape checklist walks through it.
How to start
- Configure a small collection using the documented inputs and review the billing conditions before starting it.
- Inspect the resulting records for post identity, text, author, posting time and engagement, then export the usable records and retain any status messages for review.
Call Twitter (X) Media Downloader from code
The example input uses the Actor's published defaults; set your own X (Twitter) query before you run it. You need an Apify API token.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"postUrls": [
"https://x.com/NASA/status/2107095768821576019"
],
"maxPostsPerUser": 1,
"maxItems": 1,
"mediaTypes": [
"video",
"photo",
"gif"
],
"imageQuality": "orig",
"videoQuality": "best",
"downloadAllQualities": False,
"includePosterImage": False,
"includeAltText": True,
"audioOnly": False,
"audioFormat": "m4a",
"includeQuotedMedia": True,
"includeMetadata": True,
"minLikes": 0,
"minRetweets": 0,
"onlyVerifiedAuthors": False,
"saveToFile": False
}
run = client.actor("dataspryva/twitter-x-media-downloader").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"postUrls": [
"https://x.com/NASA/status/2107095768821576019"
],
"maxPostsPerUser": 1,
"maxItems": 1,
"mediaTypes": [
"video",
"photo",
"gif"
],
"imageQuality": "orig",
"videoQuality": "best",
"downloadAllQualities": false,
"includePosterImage": false,
"includeAltText": true,
"audioOnly": false,
"audioFormat": "m4a",
"includeQuotedMedia": true,
"includeMetadata": true,
"minLikes": 0,
"minRetweets": 0,
"onlyVerifiedAuthors": false,
"saveToFile": false
};
const run = await client.actor("dataspryva/twitter-x-media-downloader").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/dataspryva~twitter-x-media-downloader/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"postUrls":["https://x.com/NASA/status/2107095768821576019"],"maxPostsPerUser":1,"maxItems":1,"mediaTypes":["video","photo","gif"],"imageQuality":"orig","videoQuality":"best","downloadAllQualities":false,"includePosterImage":false,"includeAltText":true,"audioOnly":false,"audioFormat":"m4a","includeQuotedMedia":true,"includeMetadata":true,"minLikes":0,"minRetweets":0,"onlyVerifiedAuthors":false,"saveToFile":false}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=dataspryva/twitter-x-media-downloader",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
Questions people ask
Should I choose the official X API or a Store tool?
Choose the official API when its documented endpoints and resource-based billing fit the collection you need. Choose a Store tool when its published output matches a specific task, such as screenshots, media downloads or caption extraction.
Can keyword search replace collecting replies to known posts?
Keyword search finds matching posts. For a defined conversation, review the link lookup tool's reply and quote collection options.
How should I compare engagement across collection runs?
Keep the posting time separate from the collection time, using createdAt and collectedAt where available. Compare likeCount and retweetCount with that timing context because the values can change after publication.
Does a video or Space result guarantee a transcript?
Check transcriptAvailable for video transcription and replayAvailable for Spaces before planning downstream processing.
What is the cheapest catalogue Actor for X (Twitter) data?
Twitter (X) Media Downloader lists $0.99 per 1,000 results (pay per event), with 27 fields in its published output schema. Start events and platform usage are billed separately. Checked 2026-11-12.
Which X (Twitter) scraper returns the most core fields?
Twitter (X) Media Downloader covers 3 of the 7 core X (Twitter) fields this page tracks (post id, text, author, posted at, likes, reposts, url), based on its published output schema.
Does X (Twitter) have an official API?
Public API: X API v2 uses prepaid pay-per-usage credits. Published standard read rates include $0.005 per Post resource and $0.010 per User resource. Pay-per-use launched on February 6, 2026; legacy Basic and Pro plans migrated to pay-per-use. Charged per resource returned: $0.005 per Post, $0.010 per User. Owned Reads on qualifying own-account endpoints are $0.001 per resource. A 3 million Post-read monthly cap applies to self-serve pay-per-use.
Is it legal to scrape X (Twitter)?
It depends on what you collect and how. Follow X's terms and the X Developer Agreement when collecting or reusing public content. Do not bypass logins or access controls. Read X (Twitter)'s terms (https://x.com/en/tos) before you collect, and check whether personal data is involved. This is general information, not legal advice.
More on X (Twitter)
- Ranked listBest X (Twitter) scrapers on Apify: Actors ranked by fields and price
- Official API pricingX API pricing in 2026: pay-per-use rates and a working cost calculator
- Retired toolNitter is offline: what killed it and what to use for X data
- Retired toolsnscrape after the X changes: what broke and what to use now
- Retired toolTwint is archived: the Twitter scraper that stopped working
- Topic groupSocial media data: every website compared
- ToolWhich X (Twitter) route fits your job?
- ToolX (Twitter) cost by Apify plan, rows and runs
Related websites
Sources
- Twitter (X) Media Downloader on Apify Store
- X Post, Reply & Profile Lookup by Link or ID on Apify Store
- X (Twitter) Profile & Post Engagement Extractor on Apify Store
- X Video Subtitle & Caption Transcript Converter on Apify Store
- X/Twitter Keyword & Hashtag Tweet Search on Apify Store
- X Keyword Search with Mention & Reply Operators on Apify Store
- X API v2 documentation
- X API v2 pricing
- Official source, checked 2026-11-09
- X (Twitter) terms
Cite this page
Scraper Finder. "How to get X (Twitter) data." https://scraperfinder.com/sites/x/ (data checked 2026-11-12).
Highest-scoring catalogue Actor
Twitter (X) Media Downloader: 3 of 7 core fields, $0.99 per 1,000 results, score 57. The highest score overall is 90 (X (Twitter) Tweet Scraper, a Store tool from another publisher); both are in the table above.