X (Twitter) Scraper Unlimited โ No Limits
Pricing
from $2.00 / 1,000 results
X (Twitter) Scraper Unlimited โ No Limits
Scrape X (Twitter) posts, profiles, articles and threads with no login or cookies. Get text, likes, views, author, media and profile analytics from links, handles or search terms. Bulk input, advanced filters, auto proxy fallback. Export JSON, CSV or Excel for social listening.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
6
Monthly active users
7 days ago
Last modified
Categories
Features
Share
What is X (Twitter) Scraper Unlimited?
X (Twitter) Scraper Unlimited โ No Limits is an X (Twitter) scraper that turns links, handles, search terms and post ids into clean datasets of posts, profiles, X Articles, threads and profile analytics, with no login, cookies or API key. Export JSON, CSV or Excel for lead generation, brand monitoring and research, from $0.002 per result on the Gold plan ($0.003 on the Free plan).
X (Twitter) Scraper Unlimited is an Apify Actor that reads public data from X. You paste profile links, post links, article links, search links, handles, search terms or post ids, and you get one row per post, profile, analytics summary or failed input. Use it for:
- ๐ฏ Twitter lead generation: find accounts by topic, filter them by followers, bio and location, and export the contact details written in their bios.
- ๐ฃ Twitter brand monitoring: search for your brand or hashtags on a schedule and keep only posts newer than your last run.
- ๐ฌ Twitter sentiment analysis and research datasets: collect posts by keyword, language and date range as clean rows for analysis.
- ๐ Twitter competitor analysis and influencer research: compare posting pace, engagement rate and top hashtags across accounts.
- ๐ Twitter data extraction for dashboards: send results to Google Sheets, Make, Zapier or your own database.
The Actor runs on the Apify platform, so you also get the Apify API, scheduling, webhooks, integrations and JSON, CSV and Excel exports.
What can X (Twitter) Scraper Unlimited do?
- ๐ Bulk input: a Twitter bulk scraper for hundreds of links, handles, search terms and post ids in one run.
- ๐ Advanced search operators: from:, to:, lang:, since:, until:, min_faves:, min_retweets:, min_replies: and filter: phrases.
- ๐ค Profiles and account search: bios, follower counts, bio emails and a topic search that finds accounts.
- ๐ Engagement and analytics: engagement rate per post and an optional analytics row per profile.
- ๐งต Threads, articles and reply chains: full X Article text, thread position and the posts above a reply.
- ๐งฐ Filters before you pay: date range, language, minimum likes, reposts, replies and views, verified authors, media and quote posts.
- ๐ No account needed: no key, login or cookies are needed, and results are billed per result.
What data can X (Twitter) Scraper Unlimited extract?
The Actor extracts public posts, profiles and analytics. Rows come in four types, set in the type field: tweet (a post), user (a profile), profileStats (analytics for one profile) and error (an input that gave no result).
| Field | Description |
|---|---|
๐ท type | Row type: tweet, user, profileStats or error. |
๐ id, url, twitterUrl | Post or account id, and the link on x.com and on twitter.com. |
๐ text | Full text of the post, long posts included. |
๐ createdAt, createdAtIso | Creation time in X's date format and as an ISO 8601 UTC string. |
๐ likeCount, retweetCount, replyCount, quoteCount, bookmarkCount, viewCount | Counts of likes, reposts, replies, quote posts, bookmarks and views. |
๐ engagement, engagementRate, engagementRateByViews | Likes + reposts + replies + quotes, as a number, as a percentage of followers and as a percentage of views. |
๐ค author | The account that wrote the post: user name, name, verification, followers, following and, when available, bio, location, website and creation date. |
๐ผ media, mediaUrls | Photos, videos and GIFs with details, plus direct links to original-size photos and the best video quality. |
๐ hashtags, mentions, urls, domains | Hashtags, mentioned accounts, links in the post and the domains of those links. |
๐ isRetweet, isQuote, retweeted, quote, quoteId | Whether the post is a repost or a quote, with the original or quoted post. |
๐งต conversationId, threadId, threadPosition, threadLength, isReply, inReplyToId, inReplyToUserName, isPinned, thread | Conversation and thread details, reply links, the pinned flag and the posts above a reply. |
๐ฐ article | X Article attached to the post: id, title, preview, cover image, dates, plain text and content blocks. |
๐ lang, source, place, card, isLongPost, possiblySensitive, isEdited, editTweetIds, hasAiGeneratedMedia | Language, sending app, place, link card or poll, and post flags. |
๐งญ matchedSearchTerm, discoveredVia, dataQuality | The search term that found the row, a short source label, and the reason when a row has fewer details than usual. |
๐ userName, name, isVerified, isBlueVerified, verifiedType, followers, following, tweetsCount, isProtected | Profile rows: handle, display name, verification and counts. |
๐ description, location, website, profilePicture, profileBanner, birthdate | Profile rows: bio, location, website, images and public birthdate when shared. |
โ bioEmails, bioLinks, bioMentions, bioHashtags | Email addresses, links, handles and hashtags written in the bio. |
๐ข mediaCount, likesGiven, affiliatesCount, highlightedPostsCount, subscribersCount | Extra profile counts, present when available. |
๐ postsAnalyzed, originalPosts, retweets, replies, quotes, withMedia, withLinks, from, to, postsPerWeek | Analytics rows: what was analysed and the posting pace. |
๐ likes, retweetCounts, replyCounts, views, avgEngagementRate, topHashtags, topMentions, topDomains, postsByWeekdayUtc, bestHourUtc, sources, topPosts, threads | Analytics rows: average, median, maximum and total counts, top hashtags, mentions and domains, best posting hour and the three top posts. |
๐ง input, error | Error rows: the input that gave no result and why. |
Note: not every field is present in every row. Fields such as
source,place,threadId,viewCountand the extra profile counts appear only when X provides them, anddataQualityis set only on rows with fewer details than usual.
What data can't X (Twitter) Scraper Unlimited extract?
Only public data is collected. Protected accounts, private messages and posts that need an account to view are not available. X Lists are skipped, geo search and place search are not supported, and only the first post of a conversation is returned, not the replies to it.
How to scrape X (Twitter) data
- Create a free Apify account or sign in.
- Open X (Twitter) Scraper Unlimited and go to the Input tab.
- Paste profile, post, article or search links into
urls, or add handles totwitterHandles, keywords tosearchTermsor post ids totweetIds. - Set
maxItems, chooseoutputMode(posts, profiles or both) and add optional filters such asstart,end,tweetLanguageorminimumFavorites. - Click Start and watch rows appear in the Output tab while the run is going.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
How much does it cost to scrape X (Twitter)?
X (Twitter) Scraper Unlimited uses pay-per-event pricing: you pay for each result saved to the dataset, and platform usage is billed in addition. Error rows are never billed. The price per result depends on your Apify plan.
| Plan | Price per result | Price per 1,000 results |
|---|---|---|
| Free | $0.003 | $3.00 |
| Bronze | $0.0027 | $2.70 |
| Silver | $0.0024 | $2.40 |
| Gold | $0.002 | $2.00 |
Every run also has a start event of $0.00005 per GB of memory, with a minimum of one. The default memory is 1 GB, so one start event costs $0.00005.
Worked example: 1,000 results on the Gold plan cost 1,000 x $0.002 = $2.00, plus one start event of $0.00005, with platform usage billed in addition.
Is scraping X (Twitter) free?
You can start for free. The $5 monthly credit on the Apify Free plan covers about 1,666 results at the Free price of $0.003 ($5 / $0.003), before platform usage. Higher plans pay less per result. See the pricing page for current prices.
Input
Add at least one link, handle, search term or post id; the run stops with an input problem message otherwise. Everything else is optional. See the full input schema. A minimal input looks like this:
{"urls": ["https://x.com/NASA"],"maxItems": 10,"outputMode": "tweets","sort": "Latest","timelineKind": "posts","profileMatch": "all","proxyConfiguration": {"useApifyProxy": false}}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array | No | ["https://x.com/NASA"] (prefill) | Post, article, profile or search links, one per line. Handles such as @NASA and plain post ids also work. |
twitterHandles | array | No | none | Profile handles, with or without the @. |
searchTerms | array | No | none | Keywords or advanced-search phrases such as from:NASA filter:media min_faves:100. |
profileSearchTerms | array | No | none | Find accounts by topic. Set outputMode to profiles or both to receive account rows. |
tweetIds | array | No | none | Plain post ids to read directly. |
conversationIds | array | No | none | Ids of conversations whose first post you want. |
maxItems | integer | No | 10 | Maximum number of rows (posts and profiles) saved in total. Use 0 for no row cap. |
outputMode | string | No | tweets | tweets, profiles or both. |
sort | string | No | Latest | Latest, Top or Latest + Top. |
timelineKind | string | No | posts | Profile tab to read: posts or highlights. |
maxItemsPerSource | integer | No | 0 | Maximum posts per profile, link or search term. 0 shares maxItems across all inputs. |
start | string | No | none | Keep posts on or after this date (YYYY-MM-DD). |
end | string | No | none | Keep posts before this date (YYYY-MM-DD, this day excluded). |
sinceId | string | No | none | Keep only posts with an id above this post id, for monitoring. |
tweetLanguage | string | No | all languages | Keep posts written in this language. |
minimumFavorites | integer | No | none | Minimum likes. |
minimumRetweets | integer | No | none | Minimum reposts. |
minimumReplies | integer | No | none | Minimum replies. |
minimumViews | integer | No | none | Minimum views. |
onlyVerifiedUsers | boolean | No | false | Keep posts from verified accounts. |
onlyTwitterBlue | boolean | No | false | Keep posts from authors with a Blue subscription. |
onlyImage | boolean | No | false | Keep posts with an image. |
onlyVideo | boolean | No | false | Keep posts with a video. |
onlyQuote | boolean | No | false | Keep quote posts. |
excludeRetweets | boolean | No | false | Leave out reposts. |
excludeReplies | boolean | No | false | Leave out replies. |
author | string | No | none | Added to every search term as a from: filter. |
inReplyTo | string | No | none | Added to every search term as a to: filter. |
mentioning | string | No | none | Added to every search term as an @ mention filter. |
minFollowers | integer | No | none | Minimum followers for profile rows and account search. |
maxFollowers | integer | No | none | Maximum followers for profile rows and account search. |
profileBioContains | array | No | none | Keep accounts whose bio contains at least one of these words. |
profileLocationContains | array | No | none | Keep accounts whose location contains at least one of these words. |
onlyVerifiedProfiles | boolean | No | false | Keep verified accounts only. |
profileMatch | string | No | all | How strictly an account found by topic must match: all, any or off. |
includeAuthorProfile | boolean | No | true | Add the author's bio, location, website and creation date to every post. |
includeArticles | boolean | No | true | Add the full text of X Articles. |
includeThreadAncestors | boolean | No | false | For replies, add the chain of posts above them (up to 10). |
includeSearchTerms | boolean | No | false | Add matchedSearchTerm to each post. |
includeProfileStats | boolean | No | false | Add one analytics row per profile. |
includeErrorRows | boolean | No | true | Add a row that explains why an input gave no result. Never billed. |
outputFields | array | No | all fields | Limit post rows to these fields. |
proxyConfiguration | object | No | {"useApifyProxy": false} | Optional network setting. Leave the default unless you need a specific network or country. |
Search terms and filters
- โ
Good:
from:NASA filter:media min_faves:100combines an author, a media filter and a likes threshold in one term. - โ
Good: use
startandendfor date ranges andtweetLanguagefor one language. - โ Bad:
near:andplace:filters,list:andsince_id:inside a search term; they are not supported and are ignored with a notice. - โ Bad: expecting every post on X from a keyword search; keyword matches cover the posts that are reachable without an account.
Warning:
author,inReplyToandmentioningare added to search terms only. Links and handles are not filtered by them.
Find accounts by topic
- โ
Good:
profileSearchTermswith a phrase such asweb3 founderandoutputModeset toprofiles. - โ
Good: add
minFollowers,profileBioContainsorprofileLocationContainsto narrow the list. - โ Bad: leaving
outputModeontweets; no account rows are returned then.
Warning: with
profileMatchset toall, an account must contain every word in its name, handle, bio or location. Set it toanyorofffor broader results.
Row limits
- โ
Good: set
maxItemsto the number of posts and profiles you want, andmaxItemsPerSourceto spread it across inputs. - โ Bad:
maxItemsof 0 with a very broad search term; the run then takes as many rows as it can find.
Warning: analytics rows from
includeProfileStatsare billed like any other result, but they do not count towardsmaxItems.
Output
Results appear in the Output tab and in the run's dataset as soon as they are saved. Separate views show posts, engagement, authors, media and links, reposts and quotes, articles, threads and replies, source and quality, profiles, profile analytics and errors. Download the data as JSON, CSV or Excel, or read it through the API. A run summary is saved under the key SUMMARY in the key-value store.
JSON example
A post row (shortened) for the input above:
{"type": "tweet","id": "1700000000000000001","url": "https://x.com/example/status/1700000000000000001","twitterUrl": "https://twitter.com/example/status/1700000000000000001","text": "Example post text with a link https://example.com/launch","retweetCount": 12,"replyCount": 4,"likeCount": 150,"quoteCount": 2,"createdAt": "Fri Nov 24 17:49:36 +0000 2023","lang": "en","bookmarkCount": 7,"isReply": false,"author": {"type": "user","userName": "example","name": "Example","isVerified": false,"isBlueVerified": true,"followers": 5200,"following": 120},"isRetweet": false,"isQuote": false,"viewCount": 9800,"createdAtIso": "2023-11-24T17:49:36.000Z","conversationId": "1700000000000000001","isPinned": false,"hashtags": ["example"],"mentions": [],"urls": [{"url": "https://example.com/s","expandedUrl": "https://example.com/launch","displayUrl": "example.com/launch"}],"media": [],"engagement": 168,"engagementRate": 3.23,"engagementRateByViews": 1.71,"mediaUrls": [],"domains": ["example.com"],"discoveredVia": "direct"}
With outputMode set to profiles, each account becomes a profile row (shortened):
{"type": "user","userName": "example","url": "https://x.com/example","twitterUrl": "https://twitter.com/example","id": "100000001","name": "Example","isVerified": false,"isBlueVerified": true,"profilePicture": "https://example.com/avatar.jpg","followers": 5200,"following": 120,"description": "Example bio. Contact: hello@example.com","location": "Example City","website": "https://example.com","createdAt": "Mon Jan 01 10:00:00 +0000 2018","tweetsCount": 3400,"isProtected": false,"bioEmails": ["hello@example.com"],"bioLinks": [],"bioMentions": [],"bioHashtags": []}
With includeProfileStats on, each profile also gets an analytics row (shortened):
{"type": "profileStats","userName": "example","followers": 5200,"postsAnalyzed": 100,"originalPosts": 60,"retweets": 40,"postsPerWeek": 22.5,"likes": { "avg": 120.5, "median": 70, "max": 2000, "total": 7230 },"avgEngagementRate": 0.02,"topHashtags": [{ "tag": "example", "count": 5 }],"bestHourUtc": 20,"topPosts": [{"id": "1700000000000000001","url": "https://x.com/example/status/1700000000000000001","engagement": 168}],"threads": 2}
An input that gives no result becomes an error row:
{"type": "error","input": "@example","error": "no tweets found"}
The SUMMARY record holds posts, profiles, analyticsRows, errorRows, rowsBilled, postsExamined, filteredOutBy, durationSeconds and the status of every input under inputs.
Notes and limitations
- Only public data is available; protected accounts and posts that need an account to view are not.
- Keyword and hashtag searches, and the older history of an account, are partial: only the posts reachable without an account are found.
- For some large accounts only a selection of popular posts is available, so rows may not be newest first; a note appears in the run log when this happens.
- A post that appears more than once in a run is saved once.
- If X limits requests for an account, the log asks you to wait a few minutes and run again; only part of the posts may be collected that time.
- The run stops cleanly when your maximum cost per run is reached and keeps the rows already saved.
Tips and advanced usage
- Start with a small
maxItemssuch as 10, check the rows, then raise it. - Use
sinceIdwith the last post id of your previous run and a schedule to collect only new posts. - Set
outputFieldsto keep only the columns you need, for exampletext,likeCountandauthor. - Turn off
includeAuthorProfileandincludeArticleswhen you only need post text and counts. - Use
minimumFavorites,minimumRetweetsorminimumViewsto keep strong posts only; every filter you set must match. - Check
filteredOutByin theSUMMARYrecord to see which filter removed the most posts when a run returns few rows. - Use Twitter advanced search operators in
searchTermsfor a precise Twitter search by keyword. - A Twitter min faves filter such as
min_faves:100keeps strong posts only. - Add
filter:verifiedor setonlyVerifiedUsersto find Twitter verified accounts. - For Twitter monitoring of new posts, save the last id in
sinceIdand run on a schedule. - Twitter hashtag tracking works the same way, with a
#tagas the search term. - Twitter trend analysis and Twitter data collection work best with a date range and a language.
- Read
bioEmailsfor the Twitter bio email andauthor.followersfor the Twitter followers count. - Use
mediaUrlsfor a Twitter media download, andthreadIdwiththreadPositionfor a Twitter conversation thread. - As a tweet scraper it returns whole posts, and as a Twitter hashtag scraper it takes
#tagsas search terms. - As a Twitter keyword scraper it matches your words against the posts that are reachable, and you can export tweets to Excel from the dataset.
Integrations and API
Can I use X (Twitter) Scraper Unlimited as an API?
Yes. Start the Actor and read its dataset with the Apify API, or use the apify-client packages for Node.js and Python. Open the API tab for ready-made code and endpoints.
How to scrape X (Twitter) with Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("data_minds/twitter-x-scraper-unlimited-no-limits").call(run_input={"urls": ["https://x.com/NASA"],"maxItems": 10,"outputMode": "tweets","sort": "Latest","timelineKind": "posts","profileMatch": "all","proxyConfiguration": {"useApifyProxy": False},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["url"], item["text"])
Can I integrate X (Twitter) Scraper Unlimited with other apps?
Yes. Connect it with Make, Zapier, Google Sheets, Slack and other tools through Apify integrations, trigger actions with webhooks, and use schedules to run it hourly, daily or weekly.
Can I use X (Twitter) Scraper Unlimited with AI agents (MCP)?
Yes. Apify Actors can be used as tools by AI agents through the Apify MCP server. Open the MCP tab of this Actor for the connection details.
Other X (Twitter) scrapers
Looking for more social media data? These Actors by data_minds work the same way: public data, no login, results in a dataset.
| Actor | What it does |
|---|---|
| ๐ Reddit Post Comments Scraper | Scrape every comment from any Reddit post or thread โ full nested replies, scores, authors and timestamps โ streamed live to your dataset, with a... |
| ๐ Reddit Post & Subreddit Extractor | Scrape Reddit posts, comments, communities and user profiles by keyword, URL or full subreddit โ no API key, no login. |
| ๐ฝ Reddit Scraper - Posts, Comments, Search & Subreddits | Bulk Reddit scraping without an API key or login: posts, comments, communities and users. |
| ๐ธ Instagram Scraper | Scrapes public Instagram profiles, posts, reels, comments, hashtags, topics and places. No login or cookies. |
| ๐ X (Twitter) Profile Posts Scraper | Scrapes posts from public X (Twitter) profiles without login. |
FAQ
Is it legal to scrape X (Twitter) data?
Scraping publicly available data is generally considered legal in many places, but the answer depends on your country, the data you collect and how you use it. Personal data may fall under privacy laws. Read Is web scraping legal? and ask a lawyer. This is not legal advice.
How does X (Twitter) Scraper Unlimited work?
You give it links, handles, search terms or post ids, plus optional filters. The Actor collects the matching public posts and profiles, applies your filters and limits, and saves each row to the dataset as soon as it is ready. You can follow progress in the Output tab and download the results in several formats.
Why scrape X (Twitter) data?
People scrape X for lead generation, brand monitoring, sentiment analysis, competitor analysis and influencer research. Researchers build datasets of posts by keyword, language and date range, and marketers track hashtags or compare engagement between accounts. Structured rows in JSON, CSV or Excel are easier to analyse than copying posts by hand.
Do I need an X account, login or cookies?
No. The Actor reads public data and does not ask for your X login, cookies or an API key. You only need an Apify account. Because it works without an account, protected accounts and posts that require a login are not available, and keyword searches cover only the posts that are reachable.
Why did I get fewer results than expected?
Several things can reduce the count. Your filters may remove posts, maxItems or maxItemsPerSource may stop the run, and keyword searches and older history are only partly reachable. Open the SUMMARY record and check filteredOutBy, then relax a filter or add more inputs and run again.
Can I scrape tweets to CSV or Excel?
Yes. Every run saves its rows to an Apify dataset, and you can download that dataset as CSV, Excel, JSON and other formats from the Output tab or through the API. Nested fields such as author and media are easiest to read in JSON, and you can limit columns with outputFields.
How do I collect only new posts?
Save the id of the newest post from your last run and put it in sinceId. The Actor then keeps only posts with a higher id. Combine it with an Apify schedule and a webhook or integration to receive new posts automatically every hour, day or week.
X (Twitter) Scraper Unlimited is not working, what should I do?
First check that your input has at least one valid link, handle, search term or post id, and read the run log and the error rows for the reason. If the site is limiting requests, wait a few minutes and run again. If it still fails, open a ticket in the Issues tab with your run link.
Support and feedback
Found a bug or missing a field? Open a ticket in the Issues tab. For custom solutions or questions, contact hello.dataminds@gmail.com. Built and maintained by the data_minds team on Apify.
This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by X Corp. Collect data responsibly and follow the platform's terms and the laws that apply to you.