X X (Twitter)

Twitter Scraper: extract tweets, replies and profiles from X

Apidojo Twitter Scraper is a no-login X (Twitter) data API that collects tweets, replies, profiles, Lists and media from any public search, profile or URL. It costs $0.40 per 1,000 tweets, returns up to 64 tweets per second, and exports JSON, CSV or Excel.

Free Apify plan: 5 runs a month, 10 items a run. No credit card.

Open record ↵4 queries
$0.40
per 1,000 tweets
64/s
peak tweet rate
148K
users on Apify
99.82%
run success, 30 days

Users and run success are the six Twitter scrapers combined. Read on 21 September 2026.

What are the Twitter Scraper specifications?

Apidojo Twitter Scraper runs on the Apify platform and accepts 4 input types: search queries, tweet or profile URLs, Twitter handles and conversation IDs. Each tweet returns 20 fields plus a 12-field author object, exported as JSON, CSV or Excel.

Twitter Scraper specificationsapidojo/tweet-scraper
Data sources on XSearch results, profile timelines, single tweets, reply threads, Lists, X Articles
InputssearchTerms, startUrls, twitterHandles, conversationIds
Price$0.40 per 1,000 tweets; the single-job scrapers add a $0.004–$0.016 query fee
Speed49 tweets/sec (search) · 58 (profile) · 64 (tweet URLs)
Results per query100,000+ tweets when X has the data
FiltersLanguage (ISO 639-1), verified authors, Twitter Blue, images, videos, quotes, minimum likes / retweets / replies, geo radius, date range
Sort modesLatest · Top · Latest + Top
Export formatsJSON, JSONL, CSV, Excel, XML, HTML table, API
Login or X API keyNot required
Concurrency1 run at a time per account; up to 5 batched queries per run
Free planDemo mode, 5 runs per month, 10 items per run
IntegrationsApify REST API, Python and JavaScript clients, n8n, Make, Zapier, webhooks, MCP
MaintenanceDaily, by a dedicated engineering team

What does Twitter Scraper output look like?

Twitter Scraper output is one JSON object per tweet. Each object carries the tweet ID, both the x.com and twitter.com URLs, the text, creation date, language, 5 engagement counts and a nested author object with username, follower count and verification type.

Choose an input type to see its output

Runs onapidojo/tweet-scraper

Keyword, hashtag and boolean queries in X advanced search syntax.

Input

{
  "searchTerms": ["bitcoin min_faves:1000 min_retweets:100"],
  "sort": "Top",
  "maxItems": 1000
}

Output

{
  "type": "tweet",
  "id": "1728108619189874825",
  "url": "https://x.com/elonmusk/status/1728108619189874825",
  "twitterUrl": "https://twitter.com/elonmusk/status/1728108619189874825",
  "text": "More than 10 per human on average",
  "likeCount": 104121,
  "retweetCount": 11311,
  "replyCount": 6526,
  "quoteCount": 2915,
  "bookmarkCount": 702,
  "createdAt": "Fri Nov 24 17:49:36 +0000 2023",
  "lang": "en"
}

Runs onapidojo/tweet-scraper

A timeline by handle or from: query, split into date windows for large accounts.

Input

{
  "searchTerms": [
    "from:NASA since:2026-01-01 until:2026-06-01",
    "from:NASA since:2026-06-01 until:2026-12-01"
  ],
  "sort": "Latest"
}

Output

"author": {
  "type": "user",
  "userName": "NASA",
  "name": "NASA",
  "id": "11348282",
  "url": "https://x.com/NASA",
  "isVerified": true,
  "isBlueVerified": true,
  "verifiedType": "government",
  "followers": 87611884,
  "following": 158
}

Runs onapidojo/twitter-scraper-lite

Tweet Scraper does not collect reply threads. Twitter Scraper Unlimited does, and has no 50-item minimum.

Input

{
  "startUrls": [
    "https://x.com/elonmusk/status/1728108619189874825"
  ],
  "maxItems": 500
}

Output

{
  "type": "tweet",
  "isReply": true,
  "text": "…",
  "likeCount": 312,
  "createdAt": "Sat Nov 25 09:14:02 +0000 2023",
  "author": { "userName": "…", "followers": 4821 }
}

Runs onapidojo/twitter-list-scraper

Tweets and members of any X List URL. Same tweet schema as search.

Input

{
  "startUrls": ["https://x.com/i/lists/1234567890"],
  "maxItems": 2000
}

Output

{
  "type": "tweet",
  "id": "1801234567890123456",
  "url": "https://x.com/user/status/1801234567890123456",
  "text": "…",
  "likeCount": 44,
  "retweetCount": 6,
  "author": { "userName": "…", "followers": 12904 }
}

What the fields are

  • Tweet content

    ID, both URLs, full text, language, creation time, source client, X Article body

  • Engagement

    Likes, retweets, replies, quotes, bookmarks

  • Author profile

    Username, display name, user ID, followers, following, verification type, avatar

  • Media and context

    Link cards, place, reply / retweet / quote flags, quoted tweet ID

Field dictionary28 fields
FieldTypeExample valueGroup
idstring1728108619189874825Content
urlstringhttps://x.com/elonmusk/status/1728108…Content
twitterUrlstringhttps://twitter.com/elonmusk/status/…Content
textstringMore than 10 per human on averageContent
createdAtstring (RFC 2822)Fri Nov 24 17:49:36 +0000 2023Content
langstring (ISO 639-1)enContent
sourcestringTwitter for AndroidContent
articleobjecttitle, previewText, coverImage, contentStateContent
likeCountinteger104121Engagement
retweetCountinteger11311Engagement
replyCountinteger6526Engagement
quoteCountinteger2915Engagement
bookmarkCountinteger702Engagement
isReplybooleanfalseContext
isRetweetbooleanfalseContext
isQuotebooleantrueContext
quoteIdstring1728107610631729415Context
cardobject{}Context
placeobject{}Context
author.userNamestringelonmuskAuthor
author.namestringElon MuskAuthor
author.idstring44196397Author
author.followersinteger172669889Author
author.followinginteger538Author
author.isVerifiedbooleantrueAuthor
author.isBlueVerifiedbooleantrueAuthor
author.verifiedTypestringbusinessAuthor
author.profilePicturestringhttps://pbs.twimg.com/profile_images/…Author

Which Apidojo X (Twitter) scraper fits your job?

Apidojo publishes 6 Twitter scrapers. Tweet Scraper collects tweets in bulk from searches, profiles and Lists at $0.40 per 1,000 with a 50-tweet minimum; Twitter Scraper Unlimited handles single tweets and reply threads with no minimum; the Profile, User, List and Replies scrapers each handle one account-level or thread-level job.

Start here

Tweet Scraper

apidojo/tweet-scraper
99.9K users · 3.9 (195)

The main scraper. Collects tweets in bulk from keyword and hashtag searches, profile timelines, List URLs and tweet URLs, using X advanced search syntax and 20+ filters.

  • Searches, hashtags and boolean queries
  • Profile timelines with date ranges
  • Full tweet, engagement and author fields
  • Up to 64 tweets per second
  • 100,000+ tweets per query
  • Minimum 50 tweets per query

$0.40 / 1,000 tweetsPay per result, no per-run fee

X scrapers for a single job

How much does Twitter Scraper cost?

Twitter Scraper costs $0.40 per 1,000 tweets on Tweet Scraper, billed per result with no per-run fee. The Unlimited, Profile, User, List and Replies scrapers charge the same $0.40 per 1,000 items plus a query fee between $0.004 and $0.05 per profile, List or tweet.

Tweet Scraper

$0.40per 1,000 tweets

  • Pay per result, no per-run fee
  • The same price at 1,000 or 1,000,000 tweets
  • Minimum 50 tweets per query
Run your first query
Query fees on the single-job scrapers
ScraperQuery feePer item
Twitter Scraper Unlimited$0.016 per query · $0.05 per single tweet URL$0.40 / 1K
Twitter Profile Scraper$0.016 per profile (40 tweets included)$0.40 / 1K
Twitter User Scraper$0.004 per profile · $0.016 per follower list$0.40 / 1K
Twitter List Scraper$0.008 per List$0.40 / 1K
Twitter Replies Scraper$0.014 per tweet$0.40 / 1K
What a real job costsArithmetic shown
JobScraperCalculationCost
100,000 tweets from a hashtag searchTweet Scraper100,000 × $0.0004$40.00
10 profiles × 1,000 tweetsTweet Scraper10,000 × $0.0004$4.00
1 profile, 1,000 tweets and its repliesProfile Scraper$0.016 + 960 × $0.0004$0.40
500 replies under one tweetReplies Scraper$0.014 + 500 × $0.0004$0.21
5,000 followers of one accountUser Scraper$0.016 + 5,000 × $0.0004$2.02
One X List, 2,000 tweetsList Scraper$0.008 + 2,000 × $0.0004$0.81

Prices apply to Apify paid plans. The free Apify plan runs Tweet Scraper in demo mode: 5 runs per month, 10 items per run, no credit card.

How does Twitter Scraper compare with the official X API?

Twitter Scraper collects 1,000 tweets for $0.40. The official X API pay-per-use plan charges $0.005 per post read, which is $5.00 per 1,000 tweets, and caps reads at 3 million posts per monthly billing cycle. Twitter Scraper needs no developer account and no OAuth token.

Side by sidePer 1,000 items
What you getApidojo Twitter ScraperOfficial X API
Cost per 1,000 tweets$0.40$5.00
Cost for 100,000 tweets$40$500
Cost per 1,000 follower records$0.40 plus a $0.016 query fee$10.00
Monthly read capNone set by the scraper3,000,000 posts, then Enterprise
Historical searchYes, via since: and until:Full archive on Enterprise only
SetupAn Apify account. No X credentials.Developer account, app approval, OAuth 2.0
Output shapeFlat JSON, CSV, ExcelNested JSON with expansions
Post, like or send a DMNo, read-onlyYes
Contractual SLANo. Maintained daily, no contract.Enterprise only

X API rates read from docs.x.com/x-api/getting-started/pricing on the snapshot date: posts read $0.005 per resource, user reads $0.010, pay-per-usage capped at 3 million post reads per billing cycle. X states prices are subject to change in the Developer Console.

How to scrape X with Apidojo in 4 steps

Scraping Twitter with Apidojo takes 4 steps: open the scraper, enter a query or URL, set the filters, then run and export. No code, proxy or X account is required.

  1. 01

    Open Twitter Scraper on Apify

    Sign in with a free Apify account. No credit card is needed to run it in demo mode.

  2. 02

    Enter a query, handle or URL

    Paste from:NASA, a tweet URL or a List URL. The built-in Query Wizard writes the syntax for you.

  3. 03

    Set filters and limits

    Pick a language, date range, media type, engagement floor and maxItems to cap both the run and the cost.

  4. 04

    Run and export the dataset

    Start the run, then download JSON, CSV or Excel, or pull the results straight through the API.

Which search operators it supports

Which search operators it supports13 entries
OperatorReturnsExample query
from:Tweets posted by an accountfrom:NASA
to:Replies sent to an accountto:NASA
@Tweets mentioning an account@NASA
since: until:Tweets inside a date windowfrom:NASA since:2026-01-01 until:2026-06-01
conversation_id:Unlimited or Replies ScraperEvery reply in a threadconversation_id:1728108619189874825
min_faves: min_retweets:Tweets above an engagement floorbitcoin min_faves:1000 min_retweets:100
filter:mediaalso images, videosTweets with attachmentsfrom:NASA filter:videos
-filter:retweetsOriginal tweets onlyfrom:elonmusk -filter:retweets
filter:verifiedTweets by verified accountscryptocurrency filter:verified
filter:linksTweets containing URLsfrom:TechCrunch filter:links
lang:Tweets in one language#AI lang:en
near: within:Geotagged tweets in a radiusconcert near:"New York" within:10mi
OR ( ) -Boolean logic(puppy OR kitten) -filter:retweets min_faves:100

How do you call the Twitter Scraper API?

Twitter Scraper runs through the Apify REST API and the official Python and JavaScript clients. One POST to the run-sync endpoint starts the scraper and returns the tweets as JSON in the same response.

Choose a language
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("apidojo/tweet-scraper").call(run_input={
    "searchTerms": ["from:NASA since:2026-01-01"],
    "sort": "Latest",
    "maxItems": 1000,
})

for tweet in client.dataset(run.default_dataset_id).iterate_items():
    print(tweet["createdAt"], tweet["likeCount"], tweet["text"])
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('apidojo/tweet-scraper').call({
  searchTerms: ['#AI lang:en min_faves:100'],
  sort: 'Top',
  maxItems: 1000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].text);
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tweet-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms":["from:NASA since:2026-01-01"],"sort":"Latest","maxItems":500}'
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=apidojo/tweet-scraper",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
  • n8n

    Apify node to Twitter Scraper to Google Sheets, on a schedule.

  • Make

    Scheduled run, results into Airtable.

  • Zapier

    New dataset item triggers a Slack alert.

  • Webhooks

    POST to any URL on run success.

How fast is Twitter Scraper?

Twitter Scraper returns 64 tweets per second from tweet URLs, 58 from profile timelines and 49 from search queries in Apidojo’s published benchmark. At 58 tweets per second a 10,000-tweet profile export finishes in under three minutes.

Tweet URLs64 tweets/sec
Profile timeline58 tweets/sec
Search query49 tweets/sec
How long a run takes
Dataset sizeAt 49/sec, searchAt 58/sec, profile
1,000 tweets≈ 20 s≈ 17 s
10,000 tweets≈ 3 min 24 s≈ 2 min 52 s
100,000 tweets≈ 34 min≈ 29 min

Benchmark published on the Tweet Scraper listing, run with identical inputs and resources per input type. Real speed varies with X response times and the shape of the query.

99.9K
users on Tweet Scraper
163M
Tweet Scraper runs, all time
3.9 / 5
from 195 Apify reviews
6
Twitter scrapers in the family

That rating is Tweet Scraper’s own, not an average across the six. Most of what pulls it down is people reaching for it when they needed single tweets or reply threads, which the limits above route elsewhere.

What can you build with Twitter Scraper data?

Twitter Scraper data powers 6 common workflows: brand monitoring, sentiment analysis, lead research, AI training datasets, academic research and market signals. Each recipe below gives the exact query, the fields it uses and where the output lands.

  • 01

    Brand monitoring

    "yourbrand" OR @yourbrand -filter:retweets

    Fields
    text, likeCount, author.followers
    Lands in
    Slack via n8n, hourly
  • 02

    Sentiment analysis

    #iPhone17 lang:en min_faves:10

    Fields
    text, lang, createdAt
    Lands in
    An LLM classifier, then a dashboard
  • 03

    Lead research

    "looking for" (CRM OR "sales tool") -filter:retweets

    Fields
    author.userName, author.followers, text
    Lands in
    Your CRM, with a lawful basis recorded
  • 04

    AI training datasets

    lang:en min_faves:50 -filter:links since:2026-01-01

    Fields
    text, lang, likeCount
    Lands in
    JSONL for fine-tuning or a RAG index
  • 05

    Academic research

    #climate since:2025-01-01 until:2025-12-31

    Fields
    The full tweet and author objects
    Lands in
    CSV into R or pandas
  • 06

    Market signals

    $TSLA min_retweets:50

    Fields
    createdAt, retweetCount, likeCount
    Lands in
    A time-series database

What are the limits of Twitter Scraper?

Tweet Scraper operates under 5 documented limits. Each one below states the workaround, and four of the five are answered by another scraper in the same family.

  • 50-tweet minimum per query

    A query that would return fewer than 50 tweets is not supported on Tweet Scraper.

    Use Twitter Scraper Unlimited, which bills per query and has no minimum.

  • No single-tweet fetching

    Tweet Scraper will not return one specific tweet by URL or ID.

    Twitter Scraper Unlimited takes a single tweet URL at $0.05 per query.

  • No reply or conversation scraping

    Tweet Scraper does not walk reply threads.

    Twitter Scraper Unlimited or Twitter Replies Scraper both do, by tweet URL or ID.

  • 1 concurrent run per account

    One run at a time, batching up to 5 queries inside it.

    Put several handles or searches into one searchTerms array rather than starting parallel runs.

  • Only what X search shows

    Tweets X hides, filters or shadow-bans do not appear, and X can change its search behaviour without notice.

    Test the query on x.com/search first, then widen the date range or switch sort to Top or Latest + Top.

Twitter Scraper frequently asked questions

FAQ

Everything else people ask

Fifteen questions about this scraper and its family. Anything about the wider catalogue is answered on the scrapers hub.

All 26 scrapers

Using it

Do I need an X login or a Twitter API key to use Twitter Scraper?

No. Twitter Scraper collects public data without an X account, cookies or API key. You need only a free Apify account.

Can Twitter Scraper extract historical tweets?

Yes. Add since: and until: to the query, for example from:NASA since:2020-01-01 until:2020-12-31. Split large accounts into six-month windows to maximise results.

Can Twitter Scraper scrape replies and full threads?

Not Tweet Scraper itself. Use Twitter Scraper Unlimited or Twitter Replies Scraper: paste the tweet URL or ID and you get every reply with its author and engagement counts.

Can Twitter Scraper scrape several profiles at once?

Yes. Add several handles to twitterHandles, or several from: queries to searchTerms. Tweet Scraper batches up to 5 queries per run.

Does Twitter Scraper work with x.com URLs?

Yes. It accepts both twitter.com and x.com URLs, and returns both url and twitterUrl in every item.

Limits and results

How many tweets can one Twitter Scraper query return?

One query returns 100,000+ tweets when X has that many matching results. Set maxItems to cap both the run and the cost.

Why does Twitter Scraper return fewer tweets than expected?

Fewer tweets appear when the query is narrow, until: is set, or X filters the results. Switch sort to Top or Latest + Top, widen the date range, and check maxItems.

Which Apidojo Twitter scraper should I use?

Use Tweet Scraper for keyword, hashtag and profile datasets of 50 tweets or more. Use Twitter Scraper Unlimited for single tweets, reply threads or anything under 50. Use the Profile, User, List or Replies scraper when the job is one account, one follower list, one X List or one reply thread.

Does Twitter Scraper return view counts?

No. The output carries likes, retweets, replies, quotes and bookmarks, but X does not expose a view count in the data the scraper reads.

Does Twitter Scraper collect images and videos?

Yes. It returns media URLs for photos, videos and GIFs. Add filter:images or filter:videos to return only tweets carrying media.

Can Twitter Scraper get follower lists?

Every author object already carries follower and following counts. Full follower and following lists run on Twitter User Scraper at $0.016 per list plus $0.40 per 1,000 users.

Plans and integrations

Is there a free Twitter Scraper plan?

Yes. The free Apify plan runs it in demo mode: 5 runs per month, 10 items per run, no credit card.

Which formats does Twitter Scraper export?

JSON, JSONL, CSV, Excel, XML and HTML tables, plus the Apify API for pulling results straight into your stack.

Does Twitter Scraper work with n8n, Make and Zapier?

Yes, through the Apify app in all three, and through webhooks for anything else.

Can AI agents use Twitter Scraper through MCP?

Yes. The Apify MCP server exposes Twitter Scraper as a tool to Claude, Cursor and other MCP clients.

Other Apidojo scrapers

X (Twitter) is one of six sources in the catalogue. Every scraper publishes its inputs, its output fields and its price the same way this one does.

Browse all 26 scrapers

Run Twitter Scraper on your first query

Paste a search, a handle or a tweet URL. The free Apify plan runs it in demo mode with no credit card, and the output shape is the one documented on this page.

Run your first query

Somewhere to start

  • from:NASA since:2026-01-01 -filter:repliesOne account, this year, no replies
  • #AI lang:en min_faves:100A hashtag, English only, above an engagement floor
  • (puppy OR kitten) -filter:retweetsBoolean logic, originals only

Every one of these runs on Tweet Scraper at $0.40 per 1,000 tweets.

Apidojo is not affiliated with X Corp.