X (Twitter) Tweet Scraper | $0.12/1K | No Login
Pricing
from $0.10 / 1,000 tweet scrapeds
X (Twitter) Tweet Scraper | $0.12/1K | No Login
Scrape tweets from X by search term, profile, tweet URL, conversation or community. No login, no cookies. Full engagement metrics and author data, exported to JSON, CSV or Excel. Flat $0.12 per 1,000 tweets with no start or query fees. By FeedMiner.
Pricing
from $0.10 / 1,000 tweet scrapeds
Rating
0.0
(0)
Developer
FeedMiner
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
🔓 Nothing to connect. No login, no cookie, no API key on your side, and nothing to create or keep alive. Paste your input and press Start.
⚡ Built for speed. Measured on a real run: 600 posts in 22 seconds, around 27 posts per second.
💸 One price, every input type. $0.12 per 1,000 tweets, down to $0.10 on the larger Apify plans. The market leader charges $0.40 for the same rows.
🧵 Whole threads, real views. Point it at a tweet and get every reply with its own metrics. Every row carries views, the number most X scrapers skip.
| FeedMiner · X (Twitter) suite • Posts, profiles, audiences, media, trends | ||
➤ You are here | Profile + first 100 posts included · $1.70/1K profiles | |
Copy to your AI assistant
feedminer/x-tweet-scraper on Apify. Scrapes X (Twitter) tweets by search term, profile, tweet URL, conversation ID or community. One row per tweet with full text, engagement counts (likes, reposts, replies, quotes, bookmarks, views) and author profile. Call ApifyClient("TOKEN").actor("feedminer/x-tweet-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Provide at least one of searchTerms (string[]), twitterHandles (string[]), startUrls (string[]) or conversationIds (string[]); cap the dataset with maxItems. Full spec: GET https://api.apify.com/v2/acts/feedminer~x-tweet-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
How to scrape tweets from X (Twitter)
Paste what you have, press Start. The scraper works out what each input is.
Basic: one search
{ "searchTerms": ["web scraping"], "maxItems": 200 }
Keyword search covers all of X, and the full X advanced syntax works as is: scraping from:apify min_faves:50 lang:en since:2026-01-01 does exactly what it says.
An account's timeline
{ "twitterHandles": ["NASA"], "maxItems": 3200 }
An account's timeline, replies included
{ "twitterHandles": ["NASA"], "includeReplies": true, "maxItems": 1000 }
A timeline stops at posts by default. includeReplies adds what the account answered to other people, which is where most of a support or community account's writing lives.
A thread, with every reply
{ "startUrls": ["https://x.com/elonmusk/status/1519480761749016577"], "maxItems": 200 }
A competitor set over a date window
{"searchTerms": ["from:openai", "from:anthropicai"],"start": "2026-07-01","end": "2026-08-01","includeSearchTerms": true}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchTerms | array | Search queries, advanced syntax supported | |
startUrls | array | Profile, tweet, search, list, community, /media or /highlights URLs | |
twitterHandles | array | Accounts to pull, with or without the @ | |
conversationIds | array | Tweet IDs whose replies you want | |
maxItems | integer | 1000 | Caps the dataset size |
sort | select | Latest | Latest, Top, or both merged |
Filter tweets
| Parameter | Type | Default | Description |
|---|---|---|---|
tweetLanguage | select | Keeps only tweets X detected in this language | |
onlyVerifiedUsers, onlyTwitterBlue | boolean | false | Author badge filters |
onlyImage, onlyVideo, onlyQuote | boolean | false | Media and type filters |
includeReplies | boolean | false | Adds an account's replies to its posts |
Search operators
| Parameter | Type | Default | Description |
|---|---|---|---|
author, inReplyTo, mentioning | string | Scope to accounts | |
minimumFavorites, minimumRetweets, minimumReplies | integer | Engagement floors | |
start, end | date | Date window, YYYY-MM-DD |
Location
| Parameter | Type | Default | Description |
|---|---|---|---|
geotaggedNear, withinRadius, geocode, placeObjectId | string | Scope a search to a place |
Advanced
| Parameter | Type | Default | Description |
|---|---|---|---|
includeSearchTerms | boolean | false | Tags each tweet with the term that found it |
sessions | array | Your own X accounts, for anyone who would rather run on accounts they control. Optional | |
debugMode | boolean | false | Extra logging for troubleshooting |
Filters stack: anything set in the form is added to every search term, and anything written inline in a term wins for that term.
What data can you extract from X (Twitter)?
| Field | Type | Description |
|---|---|---|
id, url | string | Tweet ID and direct link |
text, fullText | string | Full tweet text, long form posts included |
createdAt | string | Publication time, ISO format |
likeCount, retweetCount, replyCount | integer | Core engagement |
quoteCount, bookmarkCount | integer | Extended engagement |
viewCount | integer | Views, on every tweet that has them |
isReply, isQuote, isRetweet, isPinned | boolean | Tweet type flags |
conversationId, inReplyToId, inReplyToUsername | string | Thread context |
hashtags, mentions, links | array | Entities, links unwrapped to their real destination |
media, mediaType | array | Photo URLs and playable MP4 video links |
lang, source, searchTerm, sourceType | string | Language, client, and which input surfaced the row |
author | object | userName, name, followers, following, verification, bio, location, pictures, counts |
Example row
{"id": "1519480761749016577","url": "https://x.com/elonmusk/status/1519480761749016577","text": "Next I'm buying Coca-Cola to put the cocaine back in","createdAt": "2022-04-28T00:56:58Z","lang": "en","likeCount": 4206944,"retweetCount": 579238,"replyCount": 167997,"quoteCount": 168171,"bookmarkCount": 22546,"viewCount": 0,"isReply": false,"isQuote": false,"isRetweet": false,"conversationId": "1519480761749016577","author": {"userName": "elonmusk","name": "Elon Musk","followers": 227000000,"isBlueVerified": true,"twitterUrl": "https://x.com/elonmusk"},"sourceType": "conversation"}
The output uses the same field names as the most popular X scraper on the Store, so an existing pipeline keeps working when you point it here.
Pricing: Pay Per Event (PPE)
| Event | Price | Per 1,000 |
|---|---|---|
| Tweet delivered | $0.00012 | $0.12 |
No start fee and no per-query fee: you pay for rows, and only for rows. The price steps down on its own for the larger Apify plans, to $0.11 and then $0.10 per 1,000.
| Scraper | Per 1,000 tweets |
|---|---|
| Market leader | $0.40 |
| Usual challengers | $0.15 to $0.28 |
| FeedMiner | $0.12 |
What real runs cost:
| Run | Cost |
|---|---|
| A brand search, 500 tweets | $0.06 |
| One account's whole available timeline, around 1,100 posts | $0.13 |
| A daily 200 tweet monitor, for a whole month | $0.72 |
| A 10,000 tweet research dataset | $1.20 |
Free tier
The Apify free plan includes $5 of usage every month, which is roughly 40,000 tweets here. No card required.
Advanced usage
Trend and brand monitoring
Schedule a Latest search on your brand terms with minimumFavorites: 0 and a daily Apify Schedule. Each run reads X at that moment, nothing is cached, so the feed is live.
Influencer discovery
Search a niche term with sort: "Top" and an engagement floor like minimumFavorites: 100, then rank the author.followers column. Top reaches further back than Latest on quiet terms.
Research datasets
Combine searchTerms, a date window and includeSearchTerms: true to build labelled corpora. A list of a hundred post links costs barely more time than a single one.
Integrate tweets into your stack
Results flow through the Apify API into Python, JavaScript, Google Sheets, Make, Zapier, n8n, Airtable or Slack. Runs can be scheduled, monitored and chained with other Actors.
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("feedminer/x-tweet-scraper").call(run_input={"searchTerms": ["from:openai"],"maxItems": 200,})for tweet in client.dataset(run["defaultDatasetId"]).iterate_items():print(tweet["createdAt"], tweet["viewCount"], tweet["text"][:80])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('feedminer/x-tweet-scraper').call({twitterHandles: ['NASA'],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`${items.length} tweets`);
Performance
| Measure | Value |
|---|---|
| Reading speed | 27 posts per second, measured on a 600 post run |
| Timeline depth | Around 1,100 posts per account, measured on a real run. The run follows a timeline as far as X serves it; X's own ceiling, for any tool including its official API, is 3,200 |
| Long lists of links | A hundred pasted post links cost barely more time than one |
| Partial results | Kept and delivered when a limit is reached, never discarded |
FAQ
Do I need an X account or an API key?
No. There is nothing to connect and nothing to keep alive on your side. If you would rather the run used accounts you own, the optional sessions field takes them.
How far back can it go? On one account, around 1,100 posts on a measured run. X's documented ceiling is 3,200 for any tool, its own API included, and a run follows a timeline as far as X serves it. On a search, as far as the date window you set.
Can I get the replies to a specific tweet? Yes. Give it the tweet URL or the conversation ID and the thread under it comes back, each reply with its own metrics and author.
Can I pull just an account's photos and videos?
Yes. Add its /media URL. Highlighted posts are at /highlights.
Why is a search thinner than expected?
Recent windows on quiet terms have little to show. Switch sort to Top, which reaches back further, or anchor the search to an account with from:.
What does it not do? Follower and following lists, the accounts behind a like or a repost, and direct messages. Everything this Actor advertises, it delivers from the inputs on the form.
Is the data live? Yes. Every run reads X at that moment. Nothing is cached or resold.
Support
- Found something off in the output, or need a field that is missing? Open the Issues tab on this Actor's page with what you ran and what you expected. Issues are read daily.
- Need a custom variant of this scraper for your pipeline? Ask in the Issues tab, FeedMiner builds on request.
Legal compliance
This scraper collects only public data, the same information any visitor can see on x.com. Tweets and profiles can contain personal data: processing information about people in the EU, the UK or California requires a lawful basis under GDPR or CCPA. Use the data for research, analytics and business intelligence, not for spam or harassment.
FeedMiner · Fast, honestly priced scrapers, kept alive when platforms change.
X Tweet Scraper · X Profile Scraper · All FeedMiner Actors