Scrape Twitter/X with Apify: which Actor, at what price
Search the Apify Store for "twitter" and you get a wall of Actors that all describe themselves the same way. Each listing sells only itself, so nothing on that page tells you which one is cheap.
Which Apify Twitter scraper should you use?
Apify's X/Twitter Actors are not priced alike. Verified 2026-09-09 against Apify's public Actor API: the same 1,000 tweets cost $0.25 on kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest and $18.99 on forge-api/x-scraper at free-plan rates. Tweet Scraper V2 sits in between at $0.40 and is the only one of the six that charges every plan the same rate.
Tweet Scraper V2 · The $0.25/1k option · Create an Apify account
What does each X/Twitter Actor cost per 1,000 tweets?
Every price below was read on 2026-09-09 from api.apify.com/v2/acts/<actor>, which returns each Actor's pay-per-event table directly rather than the marketing figure on the Store card. Cheapest first.
| Actor | Free-plan rate per 1,000 | Lowest published rate | Users (30 days) | Charging model |
|---|---|---|---|---|
kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest | $0.25 | $0.18 (GOLD and above) | 4,059 | Per tweet |
apidojo/tweet-scraper (Tweet Scraper V2) | $0.40 | $0.40 — no tier discount | 7,562 | Per tweet |
apidojo/twitter-scraper-lite | $0.40–$2.00 plus $16 per 1,000 queries | Same at every tier | 2,033 | Per query and per item |
scraping_solutions/twitter-x-scraper-post-timeline-search-replies | $1.00 | $0.50 (GOLD and above) | 34 | Per result |
cryptosignals/twitter-scraper | $5.00 | $1.00 (DIAMOND) | 22 | Per result |
forge-api/x-scraper | $18.99 | $13.99 (GOLD and above) | 21 | Per tweet |
Field coverage is not identical across the six, so cheapest is not automatically equivalent. forge-api/x-scraper advertises engagement thresholds, geo filters, five pre-built dataset views and built-in residential proxy support, which the $0.25 Actor does not. Whether that is worth 76 times the per-tweet price is a decision only your field list can make. Pull 50 rows from two of them and diff the JSON before you commit.
The safe default is Tweet Scraper V2, at $0.40/1,000 tweets subject to change · verified 2026-09-09. It has 99,176 total users against 24,050 for the cheaper option, and a 100% run-success rate on its own Store page. The part that matters for budgeting: it is the only Actor in the table whose advertised price is the price at every plan level.
If you are already on a Business or Enterprise plan and pulling millions of tweets, the arithmetic flips: kaitoeasyapi at $0.18 saves $2,200 per 10 million tweets over Tweet Scraper V2's flat $0.40. At 50,000 tweets a month it saves eleven dollars.
Why the Store card price is not the price you pay
Apify lets an Actor developer set a different per-event price for each discount tier, and Apify's own docs name the tiers as FREE, BRONZE, SILVER, GOLD, PLATINUM, and DIAMOND, with PLATINUM and DIAMOND reserved for enterprise customers (docs.apify.com, checked 2026-09-09).
Two of the six Actors put their best tier price in the listing title:
forge-api/x-scrapershows "$13.99 / 1,000 tweets" on its Store page. The API returns$0.01899per tweet for the FREE tier — $18.99 per 1,000, 36% more.kaitoeasyapiis literally titled "Tweet Scraper | $0.18/1K Tweets". The FREE-tier event price is$0.00025, or $0.25 per 1,000.
Apify's docs name the tiers but do not publish which subscription plan maps to which tier, so there is no way to read the mapping off a public page. Open the Actor's Pricing tab while signed in to your own account and read your own rate. That is the only reliable answer.
twitter-scraper-lite is priced on run shape, not on volume
apidojo/twitter-scraper-lite charges $0.016 per search or profile query (covering roughly the first 40 results), $0.05 per single-tweet-URL lookup, and then a per-item rate that climbs with how many queries you put in one run: $0.0004 per item for 5 queries or fewer, rising through $0.0008, $0.0012 and $0.0016 to $0.002 per item above 100 queries.
The effect, working from those published rates:
- 4,000 tweets from 5 broad queries: 5 × $0.016 + 4,000 × $0.0004 = $1.68, or $0.42 per 1,000.
- 10,000 tweets from 250 narrow queries: 250 × $0.016 + 10,000 × $0.002 = $24.00, or $2.40 per 1,000.
Same Actor, same data volume, a 5.7× difference in unit cost. If your job is "one hashtag, lots of tweets" it is competitive. If it is "600 handles, a few tweets each" it is the most expensive option in the table.
Can you test these Actors on the Apify free plan?
Barely, on the two most popular ones. Both apidojo/tweet-scraper and apidojo/twitter-scraper-lite state on their Store pages that free-plan users get 5 runs per month, capped at 10 items per run. That is 50 tweets a month, and it is an Actor-level restriction, separate from the $5 of monthly platform credit the Free plan includes (apify.com/pricing, checked 2026-09-09).
Tweet Scraper V2 also sets a floor in the other direction: each query must return at least 50 tweets, so you cannot bill yourself a 10-tweet sample on a paid plan either.
One number to watch if you plan to schedule runs: Apify's own two sources disagree on free-plan concurrency. apify.com/pricing lists Free at 5 concurrent runs; docs.apify.com/platform/limits lists it at 25 (both checked 2026-09-09). Neither is safe to assume. Plan for 5 when you design a schedule and confirm on your account's Limits page before you depend on it. Both sources agree on the paid plans: 32 concurrent runs on Starter, 128 on Scale, 256 on Business.
Is the official X API cheaper than Apify?
Not for bulk collection, and the reason is more recent than most guides on this topic reflect. X no longer sells a flat monthly Basic tier, so any "$200 a month versus Apify" comparison, including the one this page used to carry, is priced against a product that no longer exists. X's developer docs now state: "The X API uses pay-per-usage pricing. No subscriptions—pay only for what you use" (docs.x.com, checked 2026-09-09). Reads are billed per resource returned, writes per request, there is no free allowance, and credits are bought up front.
| Job | Apify, cheapest verified Actor | Official X API |
|---|---|---|
| Pull 10,000 tweets once | $2.50 (10,000 × $0.00025) | $50.00 (10,000 Post resources × $0.005) |
| Re-poll the same 500 posts hourly for a day | $3.00 (12,000 charged items) | $2.50 — resources are deduplicated within a 24-hour UTC window, so you pay once per unique post |
| Read a user profile | Included in the per-tweet price on most listings | $0.010 per User resource |
| Post a tweet | Not supported. Store Actors read only | $0.015 per request, $0.200 if the post contains a URL |
| Monthly floor | None. Pay per event, no subscription | None. No subscription, but credits are purchased up front |
Where X's own API genuinely wins: high-frequency monitoring of a small, stable set of posts. That 24-hour deduplication window means re-polling the same 500 posts every hour costs you 500 charged reads, not 12,000. Every Apify Actor in the table charges per item returned, on every run. Working the arithmetic through on that 500-post set, X's API becomes the cheaper path above about 12 polls a day against Tweet Scraper V2's $0.40 rate, or about 20 polls a day against the $0.25 rate. It is also the only path that is versioned, licensed, and able to write.
Use Apify when you need volume, historical search, or fields the endpoints do not expose. Use the X API when you are re-reading the same content on a tight loop, when you need to post, or when a contract requires first-party access.
One thing that never appears as a line item. Under pay-per-event, Apify's monetization docs put the underlying compute, proxy and storage costs on the Actor developer rather than on you, in the formula profit = (0.8 * revenue) - platform costs (docs.apify.com, checked 2026-09-09). So the per-tweet price really is the whole scraping bill on top of your plan fee.
How do you run an X Actor from the Apify API?
One POST, and the tweets come back in the response body. Field names below are read from Tweet Scraper V2's published input schema on 2026-09-09, not paraphrased.
curl -X POST \
"https://api.apify.com/v2/actors/apidojo~tweet-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["web scraping", "scraping from:apify"],
"maxItems": 50,
"sort": "Latest",
"tweetLanguage": "en",
"minimumFavorites": 10
}'
Python, same call:
import os, requests
r = requests.post(
"https://api.apify.com/v2/actors/apidojo~tweet-scraper/run-sync-get-dataset-items",
headers={"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"},
json={
"twitterHandles": ["apify"],
"maxItems": 50,
"sort": "Latest",
},
timeout=310,
)
tweets = r.json()
Four things the endpoint reference will not tell you until you hit them:
run-sync-get-dataset-itemsreturns 408 if the run passes 300 seconds (docs.apify.com, checked 2026-09-09). Anything larger than a few thousand tweets should start the run asynchronously and poll, or use a webhook.- Put the token in the header. Apify's API accepts
?token=, but its own docs discourage it because URLs land in browser history and server logs.Authorization: Bearer <token>is the documented recommendation. - Rate limits are generous and asymmetric. The Run Actor endpoint allows 400 requests per second per resource against a 60/second default elsewhere, under a global cap of 250,000 requests per minute per authenticated user. The limit that will actually bite you is X's roughly 800 results per search query, not Apify's.
maxItemsis a billing control. You are charged per item written to the dataset. Setting it is not a politeness feature.
For token setup, async runs and webhooks, see the Apify REST API tutorial.
What fields does an X Actor return?
These are the twelve fields in Tweet Scraper V2's own published dataset view, read from its build definition on 2026-09-09. Its Storage tab exposes more, including author metadata, media URLs and geolocation.
| Field | Description | Example |
|---|---|---|
| id | Tweet ID | 1834567890123456789 |
| url | Canonical tweet URL | https://x.com/apify/status/1834567890123456789 |
| twitterUrl | twitter.com form of the same link | https://twitter.com/apify/status/1834567890123456789 |
| text | Tweet body | Sample tweet text |
| createdAt | Publication timestamp | 2026-09-01T10:12:44.000Z |
| likeCount | Likes | 412 |
| retweetCount | Retweets | 88 |
| replyCount | Replies | 31 |
| quoteCount | Quote tweets | 7 |
| bookmarkCount | Bookmarks | 54 |
| isRetweet | Retweet flag | false |
| isQuote | Quote-tweet flag | false |
Key names come from the Actor's published dataset schema, read 2026-09-09. Values are illustrative — validate against your own export before you build on them.
{
"id": "1834567890123456789",
"url": "https://x.com/apify/status/1834567890123456789",
"twitterUrl": "https://twitter.com/apify/status/1834567890123456789",
"text": "Sample tweet text",
"createdAt": "2026-09-01T10:12:44.000Z",
"likeCount": 412,
"retweetCount": 88,
"replyCount": 31,
"quoteCount": 7,
"bookmarkCount": 54,
"isRetweet": false,
"isQuote": false
}
Once the schema matches, Make, n8n or a Google Sheets push will move rows on a schedule. The social media analytics guide covers turning those rows into a monitoring workflow, and scraping Instagram uses the same run-then-export pattern on a platform with different caps.
Which X/Twitter Actors are dead or about to change?
Checked against api.apify.com on 2026-09-09.
| Actor | Status |
|---|---|
apify/twitter-scraper | Gone. The API returns 404. Older guides still link it. Use apidojo/tweet-scraper instead. |
danek/twitter-timeline | Deprecated. Still listed at $39.99/month rental. |
web.harvester/twitter-scraper ($30/month) and epctex/twitter-scraper ($40/month) | Live, but on a pricing model that is being retired. See below. |
logical_scrapers/x-twitter-user-profile-tweets-scraper | Live at $1.00 per 1,000, with a pricing change scheduled for 2026-09-18. Do not budget from today's rate. |
Monthly rental Actors are being switched off. Apify's own rental-pricing doc states the timeline plainly: "April 1 - You can no longer publish new rental Actors or change pricing on existing ones. October 1 - Rental Actors are fully retired" (docs.apify.com, checked 2026-09-09). That is three weeks away. The same doc gives Apify's reason: under rental you pay "both the monthly rental fee and platform usage costs," and its own worked example is a $20/month Actor that ends up billing $35 to $50. Do not start a new X scraping project on a $30/month rental listing.
What changed since this page was last reviewed
Rewritten 2026-09-09. The previous version compared Apify against a $200/month X API "Basic" tier. That tier no longer exists. X moved the API to pay-per-usage with no subscription, so the comparison has been rebuilt around per-resource rates. Every Actor price on this page now comes from Apify's public Actor API rather than from a Store card, which is what surfaced the discount-tier gap described above.
Legality turns on jurisdiction, data type and platform terms, and none of this is legal advice. Read the web scraping legality guide and X's terms before large-scale collection, and treat personal data under GDPR or CCPA as in scope regardless of whether it is public.
Of the six Actors checked on 2026-09-09, kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest is cheapest at $0.25 per 1,000 tweets on the free tier and $0.18 at the top discount tier. Tweet Scraper V2 costs $0.40 per 1,000 but charges every plan the same rate, so it is easier to budget.
X moved the API to pay-per-usage: there is no subscription and no monthly minimum. You are billed per resource read (Posts $0.005, Users $0.010) and per write request (post creation $0.015), per docs.x.com/x-api/getting-started/pricing, verified 2026-09-09. Apify bills platform usage and Actor events instead. Pulling 10,000 tweets costs roughly $50 on X's API against $2.50 to $4.00 on a Store Actor. Compare total cost after a representative test run on both paths.
When you re-read the same content repeatedly. X deduplicates resources within a 24-hour UTC window, so polling the same 500 posts hourly costs 500 reads rather than 12,000. Apify Actors charge per item returned on every run. The X API is also the only path that supports posting and the only one with a first-party licence.
Most X Actors use tiered pay-per-event pricing and advertise their best tier. forge-api/x-scraper displays $13.99 per 1,000 tweets but charges free-plan accounts $18.99; kaitoeasyapi is titled $0.18 per 1,000 and charges free-plan accounts $0.25. Apify's docs name the tiers (FREE, BRONZE, SILVER, GOLD, PLATINUM, DIAMOND) but do not publish which plan maps to which, so check your own rate on the Actor's Pricing tab while signed in.
Only just. Both apidojo Actors limit free-plan accounts to 5 runs per month at 10 items per run, which is 50 tweets total. That cap is set by the Actor, not by your $5 of monthly platform credit. Budget a paid month if you need a real evaluation.
X's search caps a single query at roughly 800 results, per apidojo's own Store documentation. Raising maxItems will not get past it. Split the job into narrower queries by date window, author, or language and merge the datasets afterwards.
No, not for a new project. Apify's rental-pricing doc says rental Actors are fully retired on October 1, and under rental you pay both the monthly fee and platform usage on top. Every Actor in the comparison table above is pay-per-event, which is the model Apify is standardising on.
Not for the three most-used ones. The Store pages for apidojo/tweet-scraper, apidojo/twitter-scraper-lite and kaitoeasyapi (checked 2026-09-09) document search, handle, URL and conversation-ID inputs with no cookie field. Smaller listings vary, so read the README first. If one does ask for cookies, treat that as a signal about which data it is reaching, and never commit them to a repository.
Common mistakes and fixes
Run returns far fewer tweets than maxItems.
X's search caps a single query at roughly 800 results. Split the job into several narrower queries by date window or author rather than raising maxItems.
Free-plan run stops after 10 items.
Both apidojo Actors cap free-plan users at 5 runs per month and 10 items per run. That is an Actor-level limit, not your credit balance.
The bill is higher than the price on the Store card.
Most X Actors use tiered pay-per-event pricing and advertise the discounted tier. Open the Actor's Pricing tab while signed in to see your own rate.