# How to Scrape Twitter (X) Data in 2026

To scrape Twitter (X) data in 2026, run an X search query through a scraper such as apidojo's Tweet Scraper V2 on Apify, which returns each matching post as JSON, CSV or Excel.

[![apidojo](/blog/authors/apidojo.png)**Apidojo** *15+ years of experience in data retrieval.*](/blog/authors/apidojo/)

**30 September 2026** Published

**6 min** Read

![Cover card reading 'How to Scrape Twitter (X) Data in 2026'](/blog/covers/how-to-scrape-twitter.png)

**To scrape Twitter (X) data in 2026, run an X search query through a scraper such as apidojo’s [Tweet Scraper V2](https://apify.com/apidojo/tweet-scraper) on Apify, which returns each matching post as JSON, CSV or Excel.** It costs $0.40 per 1,000 tweets and accepts the same operators you type into X search.

This guide covers what Twitter data you can collect, the three ways to collect it, which apidojo actor fits each task, and the limits that decide cost and speed. Each task links to a step-by-step guide.

## What Twitter Data Can You Scrape?

**You can scrape public Twitter data: posts, replies, threads, profiles, follower and following lists, list members and media URLs.** Posts from protected accounts are visible only to approved followers and are not available to search-based tools. Listed below are the 6 data types and the fields each returns.

| Data type | Main fields | apidojo actor |
| --- | --- | --- |
| Posts from a search | id, url, text, createdAt, lang, likeCount, retweetCount, replyCount, quoteCount, bookmarkCount, author | Tweet Scraper V2 |
| Replies and threads | The same post fields, for every reply in a conversation | Twitter Replies Scraper, Twitter Scraper Unlimited |
| A profile’s timeline | Posts and their replies from one account | Twitter Profile Scraper |
| Profiles, followers, following | id, userName, name, description, followers, following, isVerified | Twitter User Scraper |
| List timelines | Posts from members of a public list | Twitter List Scraper |
| Single posts and articles | One post or X article by URL | Twitter Scraper Unlimited |

Post fields above are taken from Tweet Scraper V2’s output example ([Apify](https://apify.com/apidojo/tweet-scraper)); profile fields from Twitter User Scraper’s dataset schema ([Apify](https://apify.com/apidojo/twitter-user-scraper/input-schema)).

## What Are the Ways to Scrape Twitter Data?

**The three ways to collect Twitter data are the official X API, a hosted scraper, and a scraper you build and run yourself.** The table compares them on the points that decide the choice.

| Route | Cost | Coverage | Setup |
| --- | --- | --- | --- |
| X API (pay-per-use) | $0.005 per post read; 3 million post reads per month cap | Recent search: last 7 days; full archive: back to March 2006 | Developer account, app, bearer token |
| Hosted scraper (apidojo on Apify) | From $0.40 per 1,000 tweets | What X web search shows, back to 2006 | Apify account and token |
| Self-built scraper | Your servers, proxies and maintenance time | Whatever you keep working | Code, accounts, anti-blocking |

X API prices and limits are from X’s documentation ([X API pricing](https://docs.x.com/x-api/getting-started/pricing), [X API search](https://docs.x.com/x-api/posts/search)). At those rates 100,000 posts cost $500 through the X API and $40 through Tweet Scraper V2. The full comparison is in X API vs Twitter scraper API.

## Which apidojo Actor Should You Use?

**Choose the apidojo actor by the shape of your input: a search query, a post, a profile, or a list of accounts.** Listed below are the 6 common tasks and the actor for each.

| Task | Actor | Input | Price |
| --- | --- | --- | --- |
| Posts by keyword, user, date or any operator, 50+ results per query | Tweet Scraper V2 | searchTerms | $0.40 per 1,000 tweets |
| Small queries, single posts, conversation threads | Twitter Scraper Unlimited | searchTerms, startUrls, conversationIds | $0.016 per query + from $0.0004 per item |
| Every reply to a post | Twitter Replies Scraper | Post ID or URL | From $0.40 per 1,000 items |
| One account’s timeline with replies | Twitter Profile Scraper | Profile | From $0.40 per 1,000 items |
| Profiles, followers, following | Twitter User Scraper | twitterHandles, getFollowers, getFollowing | From $0.40 per 1,000 items |
| Posts from a public list | Twitter List Scraper | List URL | See the listing |

Prices are the listed starting prices on Apify in September 2026 ([Tweet Scraper V2](https://apify.com/apidojo/tweet-scraper), [Twitter Scraper Unlimited](https://apify.com/apidojo/twitter-scraper-lite), [Twitter Replies Scraper](https://apify.com/apidojo/twitter-replies-scraper), [Twitter User Scraper](https://apify.com/apidojo/twitter-user-scraper/input-schema)).

## How Do You Scrape Tweets With Tweet Scraper V2?

**You scrape tweets with Tweet Scraper V2 by writing an X search query, putting it in the `searchTerms` input, and running the actor from the Apify console or the API.** Listed below are the 5 steps.

1.  **Test** your query in X search first; the actor fetches what that search shows ([Apify](https://apify.com/apidojo/tweet-scraper)).
2.  **Open** [Tweet Scraper V2](https://apify.com/apidojo/tweet-scraper) and click **Try for free**.
3.  **Paste** the query into `searchTerms`, choose `sort` (`Latest`, `Top`, or `Latest + Top`), and set `maxItems`.
4.  **Start** the run.
5.  **Download** the dataset as JSON, CSV or Excel from the run’s Storage tab.

The same run from Python with the Apify client:

```
from apify_client import ApifyClient

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

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["createdAt"], item["author"]["userName"], item["text"])
```

The full Python workflow, including pagination by date range and deduplication, is in how to collect tweets with Python.

## What Limits Apply to Twitter Scraping With apidojo?

**apidojo’s Twitter actors limit concurrency and query size to keep runs reliable, and the free Apify plan runs them in demo mode only.** Listed below are the 5 limits that shape a scraping plan ([Tweet Scraper V2](https://apify.com/apidojo/tweet-scraper), [Twitter Scraper Unlimited](https://apify.com/apidojo/twitter-scraper-lite)).

1.  **Minimum 50 tweets per query** on Tweet Scraper V2; smaller queries go to Twitter Scraper Unlimited.
2.  **One concurrent run** per actor, with up to 5 batched queries on Tweet Scraper V2.
3.  **No repeated polling** on Tweet Scraper V2: don’t run the same query at short intervals. Recurring collection belongs on Twitter Scraper Unlimited, as shown in how to monitor a keyword on X.
4.  **No single posts or conversations** on Tweet Scraper V2.
5.  **Free plan demo mode**: 5 runs per month, 10 items per run.

If a query returns fewer results than expected, the actor’s documentation suggests switching `sort` to `Top` or removing `until:` from the query.

## Twitter Scraping Guides by Task

**Each Twitter scraping task has its own guide with inputs, code and costs.** Listed below are the 10 guides in this series.

-   [How to scrape tweets by keyword](/blog/twitter-scraping/scrape-tweets-by-keyword/)
-   [How to scrape tweets by date range](/blog/twitter-scraping/scrape-tweets-by-date/)
-   How to scrape tweets from a user profile
-   How to scrape Twitter search results
-   How to scrape a Twitter thread and all its replies
-   How to scrape images and videos from tweets
-   How to export tweets to CSV or JSON
-   How to collect tweets with Python
-   How to collect tweets with JavaScript and Node.js
-   Twitter scraper pagination: cursors, limits and deduplication

API-based collection is covered in the [Twitter search API guide](/blog/twitter-api/search-api/), and recurring use cases start at how to monitor a keyword on X.

## Is Scraping Twitter Legal?

**Scraping public Twitter data is a legal question that depends on your country, the data you collect and how you use it, so check X’s Terms of Service and the data protection law that applies to you before collecting.** Personal data in posts and profiles falls under laws such as the GDPR in the EU regardless of how it was collected. Collect only what your use case needs and store it securely.

## The scrapers behind this

-   [Tweet Scraper V2 Tweets from searches, profiles, Lists and URLs; 49–64 tweets/sec; minimum 50 per query $0.40 / 1K tweets](/scrapers/twitter-scraper/)
-   [Twitter Scraper Unlimited Single tweets, reply threads, X Articles and small queries; no minimum $0.016 / query + $0.40 / 1K](/scrapers/twitter-scraper-lite/)

## Questions people ask

### Do you need an X account or API key to scrape with apidojo?

No, apidojo's actors need only an Apify account and API token; you don't log in to X or apply for X API access.

### How fast is Tweet Scraper V2?

Tweet Scraper V2 is listed at 30 to 80 tweets per second ([Apify](https://apify.com/apidojo/tweet-scraper)).

### Can you scrape tweets older than 7 days?

Yes, the actors search the same history as X web search, back to 2006. The X API's recent search endpoint covers only 7 days; see the 7-day limit explained.

### Where do you start for a production pipeline?

Start at the [apidojo Twitter Scraper](/scrapers/twitter-scraper/) page, then pick the actor for your input from the table above.

![apidojo](/blog/authors/apidojo.png)

## [Apidojo](/blog/authors/apidojo/)

15+ years of experience in data retrieval.

API Dojo is always ready for you. With 15+ years of experience, data acquisition has never been that easy. Cheapest prices with high availability.

-   🏯 15+ years of experience in data retrieval.
-   💰 Cheapest prices, qualified data.
-   ⚙️ High availability, extreme maintenance.
-   🐉 Hyper communicative, excellent support.

-   [apidojo.io](https://apidojo.io)

## More in this cluster

-   [Scraping X (Twitter) data: guides by task Turning an X search query into structured data: which actor fits each job, what a run costs, and the limits that decide how you batch it.](/blog/twitter-scraping/)
-   [How to rebuild an X conversation tree from replies Replies arrive as a flat list. Two fields, conversationId and inReplyToId, are what turn that list back into the threaded conversation you saw on X.](/blog/twitter-scraping/x-reply-tree/)
-   [How to Scrape Tweets by Date Range To scrape tweets by date range, add since: and until: to the query in the searchTerms input of apidojo's Tweet Scraper V2, and split long periods into.](/blog/twitter-scraping/scrape-tweets-by-date/)
-   [How to Scrape Tweets by Keyword To scrape tweets by keyword, put the keyword query in the searchTerms input of apidojo's Tweet Scraper V2 on Apify, set sort and maxItems, and run it.](/blog/twitter-scraping/scrape-tweets-by-keyword/)
-   [Reading account age in X reply data Every reply carries the responder's account creation date, follower counts and post history. Here is what those fields can and cannot tell you.](/blog/twitter-scraping/x-replier-account-age/)
-   [When the X replies endpoint under-returns A thread that looks busy on X can come back thin from a scrape. Here is how to tell a quiet conversation from a short run, and what the second flow fixes.](/blog/twitter-scraping/x-replies-vs-search-flow/)
