X Follower Scraper | $0.00015/Profile | Pay-Per-Result
Pricing
from $0.00015 / followers
X Follower Scraper | $0.00015/Profile | Pay-Per-Result
Scrape X (Twitter) followers, following, list members, subscribers & community members from $0.00015 per delivered profile on every Apify plan. Get 38 fields per row & compare audiences. No X login. Built by Xquik. World's fastest & cheapest X (Twitter) scraper service. Not affiliated with X Corp.
Pricing
from $0.00015 / followers
Rating
5.0
(6)
Developer
Xquik
Maintained by CommunityActor stats
12
Bookmarked
496
Total users
97
Monthly active users
an hour ago
Last modified
Share
English · Español · Türkçe · 简体中文 · 日本語 · 한국어 · Deutsch · Français · Italiano
Watch how Framer uses Xquik scrapers with
Claude Code, Codex, Cursor, and more, from 6:07.
Xquik is the world's fastest & cheapest X (Twitter) scraper service with the most complete X data. Xquik's X Follower Scraper collects followers, following, list members, subscribers & community members. Public benchmarks prove it is the cheapest & fastest of 10 follower Actors. Its full rows carry 2.5x the median Actor's fields, as the benchmark below shows. Most other Apify Actors charge before filtering or deduplicating. Xquik charges only for delivered, unique, filter-matching results.
Scrape X (Twitter) followers, following, verified followers, List members, List subscribers & Community members. Xquik's X Follower Scraper costs from $0.00015 per delivered profile on every Apify plan. Apify bills platform usage separately. You need no X login, & Xquik adds no start or query fee.
Xquik is an independent third-party service. Not affiliated with X Corp. "Twitter" and "X" are trademarks of X Corp.
What does X Follower Scraper do?
Xquik's X Follower Scraper returns available public profile data for followers, following, Lists & Communities. Each row names its source target & relation.
Core behavior
- Filters & duplicate removal run before billing.
- By default, a profile shared by several targets appears & bills once.
- One run accepts handles, numeric IDs, URLs & short paths.
- Merge mode records shared profiles, sources, relations &
overlapCount. - Run logs show page timing in
fetchDurationMs,processingDurationMs,pushDurationMs,statusDurationMs&fullPageDurationMs. - Runs keep delivered rows & progress when Apify restarts them.
What data can X Follower Scraper extract?
| Field | Description |
|---|---|
id | Numeric X user ID |
username | Handle (without @) |
name | Display name |
description | Bio text |
followers | Follower count |
following | Following count |
statusesCount | Total tweets posted |
mediaCount | Total media uploaded |
favouritesCount | Total likes given |
verified | Combined public Blue or legacy verified flag |
verifiedType | blue, business, government, or none |
location | Self-reported location |
url | Website URL from profile |
profilePicture | Avatar URL (full-size) |
coverPicture | Banner URL |
createdAt | Account creation timestamp string from X |
sourceTarget | Handle / ID you scraped this profile from |
sourceRelation | Relation: followers, following, list_members, ... |
sourceUrl | Exact URL the profile was discovered on |
sourceTargets | All targets that matched this profile in merge mode |
sourceRelations | All relations that matched this profile in merge mode |
sourceUrls | All source URLs that matched this profile in merge mode |
overlapCount | Number of matching relation-target pairs in merge mode |
resultType | Row type in full and raw output modes |
raw | Safe source profile before Actor-specific formatting |
Rows follow the public profile contract. It covers identity, counts, verification, availability, affiliates, professional data & biographies. Source attribution, entities & pinned tweet IDs remain available. See OpenAPI for the exact fields.
Set outputMode: "raw" or includeRaw: true to add a raw field. It holds a
safe copy of the source profile. Compact mode is the default.
Set outputMode: "full" for the most data per row. Every row keeps up to 13
list fields when X sends them, such as listedCount, defaultProfileImage &
advertiserAccountType. Full rows put them at the end. Compact rows stay
smaller & cost less to store.
verifiedOnly accepts public Blue & legacy verified profiles. If source flags
conflict, the true verification state wins.
Rows never include viewer-only state. Xquik removes follow, block, mute, DM, notification & similar viewer flags. Raw output drops them too.
Use cases
- Enrich leads & build research datasets with more fields per profile. Our median full row had 38 fields on 2026-09-29. That is 2.5x the median of 9 other Actors.
- Export competitor followers for lead research.
- Compare audiences across your account, competitors & public figures.
- Filter by follower count & verification to find matching profiles.
- Export X Community members.
- Build public social-network datasets for research.
- Segment follower bases by bio keyword, location, or profile type.
How do I use X Follower Scraper to scrape follower data?
Each example below is a complete input. Pick the one that fits your data.
- Open Xquik's X Follower Scraper in Apify Console.
- Add profile, List or Community URLs, X handles or numeric IDs.
- Pick a relation, such as
followersorverified_followers. - Set
maxItems& any profile filters. - Start the run.
- Export the dataset as JSON, CSV, Excel or HTML.
The inputs below cover common jobs.
Paste profile or list URLs
Paste profile, List or Community URLs. Each URL sets the relation to scrape:
{"startUrls": [{ "url": "https://x.com/nasa/followers" },{ "url": "https://x.com/spacex/verified_followers" },{ "url": "https://x.com/elonmusk/following" },{ "url": "https://x.com/i/lists/1748648376080666720/members" },{ "url": "https://x.com/i/communities/1493446837214187523/members" }],"maxItems": 5000}
Bulk handles
twitterHandles is shorthand for many /<handle>/followers targets. Handles
work with or without @:
{"twitterHandles": ["elonmusk", "nasa", "openai"],"relation": "followers","maxItems": 1000}
relation sets what to scrape for every handle. Use followers, following or
verified_followers.
Use follower_ids or following_ids when you need user IDs only. Each row
holds 1 user ID, its source target & its relation, & a page holds up to 5,000
IDs. Profile filters need profile fields, so leave them empty for these 2
relations.
Use affiliates for the accounts an organization lists as its affiliates, such
as a company's staff & products. Each row is a full profile. An account without
affiliates returns no rows.
Use subscriptions for the creators an account subscribes to. An account that
hides its subscriptions returns no rows.
The same input also accepts username, usernames & user_names as aliases.
Multi-relation runs
Set relations to read several relations for the same handles:
{"usernames": ["nasa"],"relations": ["followers", "following"],"maxItems": 1000}
Booleans such as getFollowers, getFollowing, getVerifiedFollowers,
getListMembers, getListFollowers & getCommunityMembers also work.
Scrape by numeric user, list, or community IDs
{"userIds": ["44196397"],"listIds": ["1748648376080666720"],"communityIds": ["1493446837214187523"],"relation": "followers","maxItemsPerTarget": 500,"maxItems": 1500}
Numeric user IDs also accept the twitterUserIds & user_ids aliases.
relation applies to numeric user IDs. List IDs default to members. Community
IDs always use members. maxItemsPerTarget keeps the first large target from
using up maxItems.
Filter before you pay
Add filters so only matching profiles enter your dataset:
{"twitterHandles": ["openai"],"relation": "followers","minFollowers": 1000,"verifiedOnly": true,"verifiedType": "business","minStatuses": 100,"usernameContains": "ai","bioContains": "founder, CEO","locationContains": "San Francisco","maxItems": 500}
The Actor may inspect more profiles than it writes. You pay only for rows that pass every filter & enter your dataset.
Separate bioContains alternatives with commas or new lines. A profile passes
when its bio contains any supplied term. Matching ignores case.
Find audience overlap
Use merge mode to compare competitors, lists, communities, or relation types:
{"twitterHandles": ["openai", "anthropicai", "GoogleDeepMind"],"relation": "followers","dedupeMode": "merge","maxItemsPerTarget": 5000,"maxItems": 15000}
The output has 1 row per unique profile. Shared profiles include
sourceTargets, sourceRelations, sourceUrls, sourceTargetKeys &
overlapCount. Sort by overlapCount or export the rows to CSV. Rows follow
your target order. Keep maxItems high enough for every target to add rows.
When maxItems ends a run early, the profiles it keeps can change between runs.
Use maxItemsPerTarget to set the depth for each account.
Accepted URL shapes
| URL | Relation |
|---|---|
https://x.com/<handle>/followers | followers |
https://x.com/<handle>/verified_followers | verified_followers |
https://x.com/<handle>/following | following |
https://x.com/<handle>/affiliates | affiliates |
https://x.com/<handle> | relation, else followers |
https://x.com/i/lists/<id>/members | list_members |
https://x.com/i/lists/<id>/followers | list_followers |
https://x.com/i/lists/<id> | list_members |
https://x.com/i/communities/<id>/members | community_members |
https://x.com/i/communities/<id> | community_members |
<handle>/followers | followers |
<handle>/following | following |
<handle>/verified_followers | verified_followers |
<handle>/affiliates | affiliates |
lists/<id>/members | list_members |
lists/<id>/followers | list_followers |
communities/<id>/members | community_members |
twitter.com & mobile.twitter.com URLs work everywhere too. URLs without
https://, such as x.com/nasa, also work.
Task examples
Choose from 50 public tasks. Each has a bounded input & a matching dataset view. Every task opens with a real audience or filter. Edit it before you run it.
- Discover AI builders in OpenAI followers
- Build an X audience dataset for AI agents
- Collect X audience data for RAG
- Find AI SEO practitioners on X
- Compare AI brand follower overlap
- Export Twitter followers to CSV
- Analyze competitor follower overlap
- Find micro-influencers in X followers
- Export curated Twitter list members
- Analyze public X Community members
- Collect Community members for AI agents
- Create repeatable X follower snapshots
How much does it cost to scrape X followers?
Xquik's X Follower Scraper costs $0.00015 per delivered profile on every Apify plan. Apify bills your platform usage separately. Xquik applies one charge per delivered data row. You need no separate Xquik subscription, & Xquik adds no start fee. Starts, targets & relation selection add no separate query charge.
One run can read many targets. Caps, deduplication & billing stay exact across them.
- Filters run before a profile enters your dataset, so filtered rows cost nothing.
- Number filters are
minFollowers,maxFollowers,minFollowing,maxFollowing,minStatuses,maxStatuses&minAccountAgeDays. - Profile filters are
verifiedOnly,verifiedType,bioContains,locationContains,usernameContains,hasWebsite&hasLocation. - The Actor removes repeats across targets before writing. Set
dedupeAcrossTargets: falseto keep them. - Xquik never bills rows the dataset rejects.
- Diagnostics are free in the
diagnosticsoutput. - No-input, invalid-input & zero-output runs write 1 actionable record to the
free
diagnosticsoutput.
A run that hits a problem, or a large run, also writes a run-report record.
Its estimatedChargeUsd uses the live pay-per-event price Apify exposes to the
Actor. A small run that goes well skips it & saves Apify usage. Turn on
alwaysSaveRunRecords to write it on every run.
Benchmark
Xquik's X Follower Scraper beat 9 other follower Actors on cost & speed. Its median full row had 38 fields, 2.5x the median of the others.
xquik/x-follower-scraper: 1,000 useful profiles, $0.000155 per useful profile, 100.0 per second & 38 fields per row. View runxquik/x-follower-scraper: 1,000 useful profiles, $0.000155 per useful profile, 77.9 per second & 38 fields per row. View runb2b_leads/X-Real-Time-Data: 286 useful profiles, $0.000388 per useful profile, 3.1 per second & 21 fields per row. View runkaitoeasyapi/premium-x-follower-scraper-following-data: 356 useful profiles, $0.000506 per useful profile, 21.9 per second & 50 fields per row. View runapi-ninja/x-twitter-followers-scraper: 350 useful profiles, $0.000809 per useful profile, 7.0 per second & 8 fields per row. View runaltimis/scweet: 332 useful profiles, $0.000922 per useful profile, 1.1 per second & 21 fields per row. View runapidojo/twitter-user-scraper: 323 useful profiles, $0.001160 per useful profile, 7.3 per second & 25 fields per row. View runatomus/twitter-scraper: 323 useful profiles, $0.001272 per useful profile, 6.2 per second & 13 fields per row. View runpracticaltools/cheap-simple-twitter-api: 283 useful profiles, $0.002036 per useful profile, 6.5 per second & 4 fields per row. Run 1, Run 2, Run 3maximedupre/twitter-scraper: 320 useful profiles, $0.002192 per useful profile, 2.1 per second & 15 fields per row. Run 1, Run 2, Run 3seemuapps/x-followers-following-scraper: 286 useful profiles, $0.003504 per useful profile, 3.9 per second & 9 fields per row. Run 1, Run 2, Run 3
Every Actor read the followers of NASA, SpaceX & esa. The other Actors ran on
2026-09-28. Xquik's runs set outputMode: "full" & ran on 2026-09-29. All runs
used the Bronze tier. A useful profile is unique, 30+ days old, with 1+ follower
& 1+ post. Cost is the customer's total spend per useful profile. Ours includes
the Apify usage our customers pay. A row with 3 runs adds them up. Fields per
row is the median count of non-empty fields, nested ones included. A list counts
as 1 field. Open a run for its input, log & dataset.
Input
The Input tab lists every option. Add at least 1 of startUrls,
twitterHandles, userIds, listIds or communityIds. Their documented
aliases count too. Every other field is optional.
Try these inputs:
- Add a competitor handle to
twitterHandleswithrelation: "followers". - Paste
https://x.com/<handle>/verified_followersinto Start URLs for verified profiles. - Paste a list URL into Start URLs to audit its members.
- Add 2+ handles. A shared profile appears once, under the target that returns
it first. That target can change between runs. Use
dedupeMode: "merge"for 1 stable row with every matching target. SetdedupeAcrossTargets: falseto keep 1 row per target.
Console & API input
The Console form has these controls:
- The Start URLs field accepts URL strings or
{ "url": "..." }objects. Its JSON editor keeps both API formats. - Relation, Output Mode & Dedupe Mode are select lists with fixed choices.
- Relations is a multi-select list for multi-relation runs.
- Result limits accept whole numbers of 1 or more.
- Numeric profile filters accept whole numbers of 0 or more.
Use canonical fields in new integrations. Aliases still work in JSON, API, SDK,
automation & task inputs. outputVariant & includeRaw are Output Mode
aliases. dedupeAcrossTargets is a Dedupe Mode alias. The visual form hides
aliases that duplicate a canonical control. Existing JSON & saved task inputs
with aliases keep working. Saved inputs with dedupeAcrossTargets: false or
dedupeMode: "none" keep 1 row per target.
Migrate from another follower Actor
Paste the input you already use. Xquik's X Follower Scraper reads the field names other X follower Actors use. It maps them to its own fields. Canonical names stay the documented default. An alias never drops a field & never changes what you pay.
Each line names the fields you already use, then the field they map to:
twitterHandles,usernames,user_names,handles,userNameList,screenNames:twitterHandlesusername,handle,screenName, as one string:twitterHandlestwitterUserIds,user_ids,userIdList:userIdsuser_id,userId, as one string:userIdsstartUrls,urls,targets,profileUrls,accountUrls:startUrlsprofileUrl, as one string:startUrlsgetFollowers,getFollowing:relationstypewithfollowersorfollowing:relationmaxResults,max_results,resultsLimit,count:maxItemsscrapeAllResults: no per-target cap
2 names mean something else here. In some Actors maxFollowers & maxFollowing
cap how many rows a run returns. In Xquik's X Follower Scraper they filter
profiles by their follower & following counts. Use maxItems to cap rows. The
Actor has no page unit, so replace maxPages with maxItems.
Always use the latest build
Store runs use the latest build of Xquik's X Follower Scraper. In API calls,
omit the build override or pass build=latest. Update Tasks & integrations that
pin an older build. Pinned builds never move on their own.
Output
Each profile is a JSON object. Compact mode returns normalized public fields, schema version fields & source metadata when available.
The dataset & run-report schemas describe every returned field. Primitive fields also carry examples for agents & generated integrations.
Sample values below are illustrative. Your rows carry live data at run time. A compact row looks like this:
{"schemaVersion": 1,"_schema_version": 1,"id": "44196397","username": "elonmusk","name": "Elon Musk","description": "...","followers": 180000000,"following": 500,"statusesCount": 42000,"mediaCount": 3200,"favouritesCount": 120000,"verified": true,"verifiedType": "blue","location": "...","url": "https://...","profilePicture": "https://...","coverPicture": "https://...","createdAt": "Tue Jun 02 20:12:29 +0000 2009","sourceTarget": "nasa","sourceRelation": "followers","sourceUrl": "https://x.com/nasa/followers"}
Merge dedupe mode adds overlap fields:
{"schemaVersion": 1,"_schema_version": 1,"id": "44196397","username": "elonmusk","sourceTargets": ["nasa", "spacex"],"sourceRelations": ["followers"],"sourceUrls": ["https://x.com/nasa/followers","https://x.com/spacex/followers"],"sourceTargetKeys": ["followers:nasa", "followers:spacex"],"overlapCount": 2}
Export the Apify dataset as JSON, CSV, Excel or HTML.
Run options
Set maxTotalChargeUsd in the Apify API to hard-cap spend. In Console, the same
limit is Max cost per run. Apify passes that limit to Xquik's X Follower Scraper
as ACTOR_MAX_TOTAL_CHARGE_USD. It stops before it accepts rows beyond the
limit. Leave maxItems empty to return as many profiles as the spend cap
allows. Set maxItems & maxItemsPerTarget only when you want fewer profiles
than the budget allows.
- Combine profile filters, such as
minFollowers,verifiedType&bioContains, to narrow the billed dataset. - By default, runs keep only unique profiles across targets. Set
dedupeAcrossTargets: falseto keep 1 row per target. - Set
dedupeMode: "merge"for 1 row per profile with every matching source target. - Set
outputMode: "full"for optional profile fields when available. These include pinned tweet IDs, entities & profile metadata. - Set
outputMode: "raw"orincludeRaw: trueto include a sanitizedrawobject beside normalized fields. - Schedule repeat runs & store each dataset to compare profile IDs. Xquik monitors emit supported tweet & profile events, not follower-list changes.
Empty, partial & stopped runs
Xquik's X Follower Scraper explains empty, partial & stopped runs with free diagnostics. A successful Actor exit confirms delivery, not complete extraction.
An interrupted run writes a free partial diagnostic. Results already delivered
stay in the dataset. Read availableResults, failedTargets, retryable &
nextAction before you retry.
The run status says why the run stopped. It also counts charged results, skipped
duplicates & targets read. The status names every cause of an early stop.
stopCauses lists each cause with its own message, retryable &
nextAction. The causes are target_not_found, target_suspended,
target_protected, target_failed & deadline_reached. target_suspended
names the accounts X suspended. A missing or suspended account joins the list
only when another cause stopped the run. The run is retryable when any cause
is.
X keeps the lists of a protected account private. That target gets
target_protected in 1 free diagnostic, & the run reads the other targets.
failedTargets counts targets that stopped after an error. These runs use
completionReason: "partial_failure". Their delivered profiles stay billable
data rows.
The default Apify timeout is 0, so runs have no time limit. The run continues
until it reaches the cap or runs out of profiles. You can still set a finite
timeout. Then completionReason: "deadline_reached" means that limit is near.
The run saves profiles & the report, then exits cleanly before the limit.
Delivered profiles bill once.
Runs with a problem always write run-report, including no-input and
invalid-input exits. run-report also has a version field with the exact
published Actor source version.
Related Xquik Actors
Every Xquik Actor shares the same extraction engine, filter-first billing & diagnostics. Pick the one that matches the data you need.
- X Tweet Scraper: Scrapes tweets from searches, profile timelines, Lists & tweet IDs with 50+ filters & flat exports. Use it when you need tweet data without analysis. From $0.00015 per row.
- X Profile Scraper: Scrapes profiles plus their posts, replies, media & followers from handles, IDs or URLs. Use it when you start from accounts rather than searches. From $0.00015 per row.
- X Reply Scraper: Scrapes replies, comments & whole conversations under posts with 25+ filters. Use it when you need the discussion beneath tweets. From $0.00015 per row.
- X Engagement Scraper: Scrapes replies, quotes, retweeters & threads for post URLs or IDs in bulk. Use it when you measure who engaged with posts. From $0.00015 per row.
- X User Search Scraper: Searches users by handle, bio & location with follower, verification, age & location filters. Use it when you build account lists from search. From $0.00015 per profile.
- X List Scraper: Scrapes List posts, members & followers from List URLs or IDs. Use it when a curated List defines your sources. From $0.00015 per row.
- X Community Scraper: Scrapes Community info, posts, searches, members & moderators. Use it when your sources are X Communities. From $0.00015 per row.
- X Space Scraper: Finds Spaces by keyword & reads their titles, states, times, listener counts, hosts & speakers. Use it when you track live audio on X. From $0.00015 per Space.
- X Trends Scraper: Scrapes real-time trends by location with rank, volume, query & WOEID. Use it when you track what is trending where. From $0.00015 per trend.
- X Jobs Scraper: Scrapes X job listings by keyword, place, workplace, seniority & company, with salaries & apply links. Use it when you collect job openings posted on X. From $0.00015 per job.
- X Article Scraper: Scrapes long-form X Articles as Markdown & text with covers, authors, dates & metrics. Use it when you need article bodies, not tweets. From $0.00015 per article.
- X Media Downloader: Extracts or stores photos, videos & GIFs from posts or profiles with MP4 & metadata options. Use it when you need the media files themselves. From $0.00015 per media row.
- X (Twitter) Brand Monitoring with AI Analysis: Tracks brand mentions with AI relevance, sentiment & customer-experience answers & compares runs. Use it when you watch a brand over time. From $0.0003 per analyzed tweet.
- X Tweet Sentiment Analysis with AI: Labels attitude, intensity & sarcasm probability for every tweet with AI. Use it when you need general sentiment on any topic. From $0.0003 per analyzed tweet.
- X (Twitter) Stock & Crypto AI Trading Signals: Labels bullish, bearish, neutral or mixed stance, content type, conviction & asset relevance with AI. Use it when you follow stocks, crypto or trading talk. From $0.0003 per analyzed tweet.
- X (Twitter) News Monitor with AI Analysis: Labels news posts by format, source attribution & topic relevance with AI. Use it when you separate reporting from commentary. From $0.0003 per analyzed tweet.
- X Tweet Classifier with AI Analysis: Answers your own category, score & yes/no questions for every tweet with AI. Use it when the preset analyses do not fit your labels. From $0.0003 per analyzed tweet.
- X Tweet Viral Score Analyzer with AI: Estimates a Viral Score from 0 to 100 & a verdict for every tweet from 8 AI trait answers. Use it when you study why tweets spread or flop. From $0.0003 per analyzed tweet.
Need more than scraping?
Xquik also offers 47 dashboard tools, a REST API, signed webhooks & an MCP server.
- API documentation: REST API guides
- Followers API: get an account's available followers
- Following API: get who a user follows
- List Members API: export members from a public X list
- MCP server: discover & run supported JSON or text operations
- Webhooks: receive supported Tweet & profile events
FAQ
Answers to common questions, then where to get help.
Do I need an X API key?
No. You need no X API key, login or credentials.
What limits a run?
Your item limit & your Apify spend limit stop the run. Apify account & platform limits still apply.
How fast is it?
The speed of Xquik's X Follower Scraper depends on target size, filters & X availability. Its 2 benchmark runs reached 77.9 & 100.0 useful profiles per second.
Why does my run return fewer rows than my limit?
Filters such as minFollowers, verifiedOnly & bioContains apply before
writes. Relax them to return more results. Xquik's X Follower Scraper also
removes repeats across targets.
How many followers can I scrape from a single account?
As many as X shows for that account. The run continues until your cap, your
spend limit or the end of the list. maxItemsPerTarget caps each target only.
Does the Actor retry temporary failures?
Yes. It recovers from temporary X errors on its own. After a hard failure, the run keeps its partial results.
What happens near the Apify run time limit?
Xquik's X Follower Scraper adds no shorter deadline of its own. Before your limit, it saves profiles, writes the report & exits. Rows that never reach the dataset cost nothing.
Can I resume where I left off?
Not yet. A new run on the same target starts from the beginning.
Can I use the Apify API to run this?
Yes. See the API tab for Python, JavaScript & cURL examples.
Can I schedule recurring scrapes?
Yes. Use Apify's built-in scheduling to run this Actor on a cron. Compare stored datasets to find follower changes.
Is it legal to scrape X data?
Xquik's X Follower Scraper requests public X profile fields. Results can contain personal data, including self-reported locations. Confirm a lawful purpose & follow applicable privacy rules. Ask qualified counsel when uncertain.
Where do I get help?
Open an issue in the Issues tab on the Actor page. You can also contact support@xquik.com with the run ID.
Where are the API docs?
Read the API documentation.