X (Twitter) Tweet Scraper | $0.12/1K | No Login avatar

X (Twitter) Tweet Scraper | $0.12/1K | No Login

Pricing

from $0.10 / 1,000 tweet scrapeds

Go to Apify Store
X (Twitter) Tweet Scraper | $0.12/1K | No Login

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

FeedMiner

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

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
X Tweet Scraper
➤ You are here
X Profile Scraper
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.

{ "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

ParameterTypeDefaultDescription
searchTermsarraySearch queries, advanced syntax supported
startUrlsarrayProfile, tweet, search, list, community, /media or /highlights URLs
twitterHandlesarrayAccounts to pull, with or without the @
conversationIdsarrayTweet IDs whose replies you want
maxItemsinteger1000Caps the dataset size
sortselectLatestLatest, Top, or both merged

Filter tweets

ParameterTypeDefaultDescription
tweetLanguageselectKeeps only tweets X detected in this language
onlyVerifiedUsers, onlyTwitterBluebooleanfalseAuthor badge filters
onlyImage, onlyVideo, onlyQuotebooleanfalseMedia and type filters
includeRepliesbooleanfalseAdds an account's replies to its posts

Search operators

ParameterTypeDefaultDescription
author, inReplyTo, mentioningstringScope to accounts
minimumFavorites, minimumRetweets, minimumRepliesintegerEngagement floors
start, enddateDate window, YYYY-MM-DD

Location

ParameterTypeDefaultDescription
geotaggedNear, withinRadius, geocode, placeObjectIdstringScope a search to a place

Advanced

ParameterTypeDefaultDescription
includeSearchTermsbooleanfalseTags each tweet with the term that found it
sessionsarrayYour own X accounts, for anyone who would rather run on accounts they control. Optional
debugModebooleanfalseExtra 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)?

FieldTypeDescription
id, urlstringTweet ID and direct link
text, fullTextstringFull tweet text, long form posts included
createdAtstringPublication time, ISO format
likeCount, retweetCount, replyCountintegerCore engagement
quoteCount, bookmarkCountintegerExtended engagement
viewCountintegerViews, on every tweet that has them
isReply, isQuote, isRetweet, isPinnedbooleanTweet type flags
conversationId, inReplyToId, inReplyToUsernamestringThread context
hashtags, mentions, linksarrayEntities, links unwrapped to their real destination
media, mediaTypearrayPhoto URLs and playable MP4 video links
lang, source, searchTerm, sourceTypestringLanguage, client, and which input surfaced the row
authorobjectuserName, 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)

EventPricePer 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.

ScraperPer 1,000 tweets
Market leader$0.40
Usual challengers$0.15 to $0.28
FeedMiner$0.12

What real runs cost:

RunCost
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 ApifyClient
client = 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

MeasureValue
Reading speed27 posts per second, measured on a 600 post run
Timeline depthAround 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 linksA hundred pasted post links cost barely more time than one
Partial resultsKept 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.

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