X (Twitter) Follower Scraper | $0.10/1K | Pay-Per Result avatar

X (Twitter) Follower Scraper | $0.10/1K | Pay-Per Result

Pricing

from $0.0001 / followers

Go to Apify Store
X (Twitter) Follower Scraper | $0.10/1K | Pay-Per Result

X (Twitter) Follower Scraper | $0.10/1K | Pay-Per Result

Rising star

Scrape X (Twitter) followers, following, verified followers, list members, list subscribers & community members from $0.10 per 1,000 profiles on paid Apify plans. Filter before you pay. No start fee. No query fee. No X API key. No rate limits. Built by Xquik. Not affiliated with X Corp.

Pricing

from $0.0001 / followers

Rating

5.0

(4)

Developer

Xquik

Xquik

Maintained by Community

Actor stats

10

Bookmarked

287

Total users

62

Monthly active users

a day ago

Last modified

Share

Scrape X (Twitter) followers, following, verified followers, list members, list subscribers and community members at scale from $0.10 per 1,000 delivered profiles on paid Apify plans. Apify's pricing box remains authoritative for your account before each run. No X API key or X login is required. There is no start or query fee. Built by Xquik.

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?

X Follower Scraper extracts available profile data for followers, following, list members, list subscribers and community members of a public X account. It returns structured JSON ready for audience analysis, lead generation, competitor research, or integration into your pipeline.

Core behavior

  • Metered follower scraping - paid Apify plans start at $0.10 per 1,000 delivered profiles, with no start fee, no query fee, and filters applied before billing
  • No forced relation split - scrape followers, following, verified followers, list members, list subscribers, and community members in one Actor
  • Works with the inputs users actually have - mix handles, numeric user IDs, profile URLs, list URLs, community URLs, and short paths in the same run
  • Built for audience intelligence - dedupe across targets, merge overlaps, preserve source targets, and export overlapCount without extra processing
  • Budget-safe by design - filtered-out profiles and duplicates are not charged, empty runs produce only 1 diagnostic row, and Apify spend limits stop writes cleanly at the maximum billable row count
  • Safe API inputs - relations, output, dedupe, and numeric limits validate before a billed run starts

Ready-to-run task examples

Choose from 50 public tasks with bounded inputs and useful dataset views. Each task opens with a real audience or filter and stays editable before you run it.

What can this scraper do?

  • Scrape X followers - paste a profile URL like https://x.com/nasa/followers and export profiles within the run limits
  • Scrape X following - paste https://x.com/nasa/following to export profiles within the run limits
  • Scrape X verified followers only - paste https://x.com/nasa/verified_followers to target only Premium / verified accounts
  • Scrape X list members - paste a list URL like https://x.com/i/lists/1748648376080666720/members to export members within the run limits
  • Scrape X list subscribers - export users who follow a list via https://x.com/i/lists/<id>/followers
  • Scrape X community members - export members of a public X Community via https://x.com/i/communities/<id>/members
  • Bulk X profile follower scraper - pass an array of handles like ["elonmusk", "nasa"] and scrape many targets in one run
  • Competitor-style aliases - use urls, targets, profileUrls, username, usernames, user_names, twitterUserIds, or user_ids
  • Short paths - pass handle/followers, handle/following, lists/ID/members, lists/ID/followers, or communities/ID/members
  • Multi-relation runs - set relations or relation booleans such as getFollowers and getFollowing to scrape multiple supported relations for the same target
  • Filters before billing - apply minFollowers, verifiedOnly, bioContains, locationContains, verifiedType, and activity filters before rows enter your dataset
  • Dedup across targets - keep per-target rows, first match only, or merged overlap rows with source arrays
  • Overlap analysis - set dedupeMode: "merge" or overlapMode: true to export sourceTargets, sourceRelations, sourceUrls, and overlapCount
  • Per-target attribution - every row carries sourceTarget, sourceRelation and sourceUrl so each row identifies its source

What data can X Follower Scraper extract?

FieldDescription
idNumeric X user ID
usernameHandle (without @)
nameDisplay name
descriptionBio text
followersFollower count
followingFollowing count
statusesCountTotal tweets posted
mediaCountTotal media uploaded
favouritesCountTotal likes given
verifiedVerified (Premium) flag
verifiedTypeblue, business, government, or none
locationSelf-reported location
urlWebsite URL from profile
profilePictureAvatar URL (full-size)
coverPictureBanner URL
createdAtAccount creation timestamp string from X
sourceTargetHandle / ID you scraped this profile from
sourceRelationRelation: followers, following, list_members, ...
sourceUrlExact URL the profile was discovered on
sourceTargetsAll targets that matched this profile in merge mode
sourceRelationsAll relations that matched this profile in merge mode
sourceUrlsAll source URLs that matched this profile in merge mode
overlapCountNumber of matching relation-target pairs in merge mode
resultTypeRow type in full and raw output modes
rawSafe source profile before Actor-specific formatting

Compact and full rows preserve optional public profile metadata.

FieldDescription
affiliatesHighlightedLabelAffiliate label metadata
businessAccountAffiliatesCountBusiness affiliate count
creatorSubscriptionsCountCreator subscription count
hasGraduatedAccessGraduated access state
hasHiddenSubscriptionsOnProfileHidden subscription state
highlightsInfoProfile highlights metadata
identityVerificationIdentity verification metadata
isProfileTranslatableProfile translation availability
parodyCommentaryFanLabelParody or fan label
profileDescriptionLanguageDetected bio language
profileImageShapeProfile image shape
profileInterstitialTypeProfile interstitial type
profileSortEnabledProfile sorting state
profileTranslatorTypeProfile translator type
superFollowEligibleSubscription eligibility

Rows also preserve isBlueVerified, isVerified, profileBannerUrl, protected, hasCustomTimelines, isTranslator, withheldInCountries, possiblySensitive, pinnedTweetIds, isAutomated, automatedBy, unavailable, unavailableReason, communityRole, and profile_bio.

Full rows also include entities and pinned tweet IDs when available.

Set outputMode: "raw" or includeRaw: true to include a raw copy of the safe source profile. Compact mode remains the default.

Viewer-relative state belongs to Xquik's fetch account, not your dataset. Follow, block, mute, DM, notification, and similar viewer flags are always removed, including from raw output.

Why scrape X followers?

  • Lead generation - pull the followers of a competitor or niche influencer and build a targeted outreach list
  • Audience analysis - understand who follows you vs a competitor, spot overlap, find lookalike prospects
  • Influencer discovery - filter followers by minFollowers and verifiedOnly to find profiles matching your chosen audience thresholds
  • Competitor research - export a rival brand's follower base, segment by bio keyword, location, or engagement proxies
  • Community research - export available members of a public X Community for academic, market, or product research
  • List auditing - verify who is on a curated X list and how the list has grown
  • Retargeting seeds - build follower-based audiences for downstream ad, email, or outreach campaigns
  • Academic research - build social-network datasets for trend analysis, NLP training, or sociological study

Runs execute on Apify's platform with scheduling, webhooks, API access, integrations (Make, n8n, Zapier), proxy rotation, and dataset export in JSON, CSV, Excel, or HTML.

How much does it cost to scrape X followers?

On paid Apify plans, Xquik's listing price is $0.00010 per delivered profile ($0.10 per 1,000). The Apify Console pricing box is authoritative and shows the current price for your account tier before the run starts. Xquik charges only for rows written to the default dataset: profile rows and at most 1 diagnostic row for an empty run. No separate Xquik subscription or start fee applies. Each run also writes a run-report record with estimatedChargeUsd calculated from the live pay-per-event price Apify exposes to the Actor. Every outcome writes run-report, including no-input and invalid-input exits.

  • No separate start or query events. Starts, targets, and relation selection do not add separate query charges.
  • No charge for filtered-out profiles. Filters (minFollowers, verifiedOnly, bioContains, locationContains, minFollowing, maxFollowing, minStatuses, maxStatuses, minAccountAgeDays, verifiedType, usernameContains, hasWebsite, hasLocation) run before a profile enters your dataset.
  • No charge for removed duplicates. When dedupeAcrossTargets: true, repeats are dropped before the dataset write.
  • No charge for unwritten rows. On timeout or hard failure, the Actor flushes accepted profiles. Rows not accepted by the dataset are not billed.
  • One diagnostic row for non-data exits. No-input, invalid-input, and zero-output runs write 1 structured diagnostic dataset row with resultType: "diagnostic" and a status such as no-input, invalid-input, or zero-output. Diagnostic rows explain what happened and are easy to filter out with dataset.filter(r => r.resultType !== "diagnostic").

Set maxTotalChargeUsd in the Apify API, or Max cost per run in Console, to hard-cap spend. Apify exposes that limit to the Actor as ACTOR_MAX_TOTAL_CHARGE_USD, and the Actor respects it strictly. Leave maxItems empty to let the run return as many profiles as the spend cap allows. Set maxItems only when you want a smaller result cap than the budget would allow.

How do I use X Follower Scraper to scrape follower data?

1. Paste profile or list URLs

Paste any mix of profile, list, or community URLs and the scraper routes each to the correct relation automatically:

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

2. Bulk handles

Shorthand for many /<handle>/followers targets. Usernames accept @ or no prefix:

{
"twitterHandles": ["elonmusk", "nasa", "openai"],
"relation": "followers",
"maxItems": 1000
}

Set relation to followers, following, or verified_followers to switch what is scraped for every handle.

Aliases accepted for the same input include username, usernames, and user_names.

3. Multi-relation runs

{
"usernames": ["nasa"],
"relations": ["followers", "following"],
"maxItems": 1000
}

You can also use booleans such as getFollowers, getFollowing, getVerifiedFollowers, getListMembers, getListFollowers, and getCommunityMembers.

4. Scrape by numeric user, list, or community IDs

{
"userIds": ["44196397"],
"listIds": ["1748648376080666720"],
"communityIds": ["1493446837214187523"],
"relation": "followers",
"maxItems": 2000
}

Aliases accepted for numeric user IDs include twitterUserIds and user_ids.

5. Filter before you pay

Apply filters so only matching profiles enter your dataset:

{
"twitterHandles": ["openai"],
"relation": "followers",
"minFollowers": 1000,
"verifiedOnly": true,
"verifiedType": "business",
"minStatuses": 100,
"usernameContains": "ai",
"bioContains": "founder",
"locationContains": "San Francisco",
"maxItems": 500
}

The Actor may inspect more profiles than it writes. You only pay for rows that pass every filter and enter your dataset.

6. 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 contains one row per unique profile. Shared profiles include sourceTargets, sourceRelations, sourceUrls, sourceTargetKeys, and overlapCount, so you can sort by overlap or export directly to CSV. Keep maxItems high enough to let every target contribute rows; use maxItemsPerTarget to control depth per account.

Accepted URL shapes

URLRelation
https://x.com/<handle>/followersfollowers
https://x.com/<handle>/verified_followersverified_followers
https://x.com/<handle>/followingfollowing
https://x.com/<handle>default relation (followers if unset)
https://x.com/i/lists/<id>/memberslist_members
https://x.com/i/lists/<id>/followerslist_followers
https://x.com/i/lists/<id>list_members
https://x.com/i/communities/<id>/memberscommunity_members
https://x.com/i/communities/<id>community_members
<handle>/followersfollowers
<handle>/followingfollowing
<handle>/verified_followersverified_followers
lists/<id>/memberslist_members
lists/<id>/followerslist_followers
communities/<id>/memberscommunity_members

twitter.com and mobile.twitter.com are also accepted everywhere.

Input

See the Input tab for the complete list of options. All fields are optional except at least one of: startUrls, twitterHandles, userIds, listIds, or communityIds, or their documented aliases.

Common patterns:

  • Competitor follower export - add the competitor handle to twitterHandles with relation: "followers"
  • Verified-only lead list - paste https://x.com/<handle>/verified_followers into Start URLs
  • List audit - paste the list URL into Start URLs
  • Multi-account overlap - add 2+ handles, set dedupeAcrossTargets: true to keep only the first matching profile row, or use dedupeMode: "merge" to keep one row with all matching source targets

Console & API Input UX

The Console uses native controls for common choices:

  • Start URLs accepts URL strings or { "url": "..." } objects. The flexible JSON editor preserves both API formats.
  • Relation, Output Mode, and Dedupe Mode are validated selects.
  • Relations is a validated multi-select 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. Compatibility aliases remain available in JSON, API, SDK, automation, and task inputs. This includes outputVariant and includeRaw as Output Mode aliases. The visual form hides aliases that duplicate a canonical control.

Output

Each profile is a JSON object. Compact mode (default) returns 17 normalized profile fields, schema version fields, and source metadata:

Sample values are illustrative. Responses reflect source data at run time.

{
"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 as JSON, CSV, Excel, or HTML from the Apify dataset.

Tips & advanced options

  • Control spend - set Apify max total charge to cap run cost. Leave maxItems empty for maximum rows within that budget, or set maxItems and maxItemsPerTarget when you want fewer profiles.
  • Filter before you pay - combine minFollowers, verifiedOnly, verifiedType, minStatuses, usernameContains, bioContains, locationContains, hasWebsite, and hasLocation to narrow the billed dataset.
  • Dedup - set dedupeAcrossTargets: true when scraping multiple competitor handles to get only unique profiles across all targets.
  • Overlap analysis - set dedupeMode: "merge" to get one row per profile with every matching source target attached.
  • Full profile output - set outputMode: "full" to get optional profile fields such as pinned tweet IDs, entities, and profile metadata when available.
  • Safe source payload - set outputMode: "raw" or includeRaw: true to include a sanitized raw object alongside normalized fields.
  • Follower snapshots - schedule repeat Actor runs, store each dataset, and compare profile IDs. Xquik monitors emit supported tweet and profile events, not follower-list changes.

Use cases

  • Lead generation - export competitor followers and build targeted lists
  • Audience research - analyze who follows you, a competitor, or an influencer
  • Influencer discovery - filter by follower count and verification to find profiles matching your selected follower and verification thresholds
  • Community growth - export members of relevant X Communities for outreach
  • Academic research - build large-scale social-network datasets
  • Marketing intelligence - segment follower bases by bio keyword, location, or profile type

Data responsibility

The Actor requests public X profile fields. Results can contain personal data, including self-reported locations. Confirm a lawful purpose and follow applicable privacy rules. Ask qualified counsel when uncertain.

  • X Tweet Scraper - scrape tweets, engagement metrics, author profiles, and media with structured search filters and pay-per-result pricing

Need more than scraping?

Xquik provides 47 dashboard tools, 128 REST operations, signed webhooks, and a 2-tool MCP server.

FAQ

Do I need an X API key? No. This scraper uses its own infrastructure. No login or credentials required.

What limits a run? Your requested item limit and Apify spend limit stop the run. Apify account and platform limits still apply.

How fast is it? Runtime depends on target size, filters, and upstream availability.

Why is my run returning fewer rows than maxItems? Because filters (minFollowers, verifiedOnly, bioContains, etc.) are applied before rows are written. Relax filters if you want more results.

How many followers can I scrape from a single account? Large accounts (millions of followers) can be scraped, but X paginates in batches. Use maxItemsPerTarget to chunk very large targets across multiple runs.

Does the Actor retry temporary failures? Yes. It makes up to 3 attempts per page for timeouts, 429, and 5xx responses. It honors Retry-After when present. Otherwise, it uses exponential backoff. Hard failures preserve partial results.

What happens if the run hits the Apify timeout? The Actor detects it 15 seconds early, flushes everything already fetched, and exits cleanly with a Partial: ... status message. Rows not accepted by the dataset are not billed.

Can I resume where I left off? Resume cursor input is not exposed yet. Use maxItemsPerTarget to chunk large runs.

Can I use the Apify API to run this? Yes. See the API tab for integration examples in Python, JavaScript, cURL, and more.

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.

Where do I report issues? Open an issue on GitHub or use the Issues tab on this Actor's page.

Where are the API docs? Read the 128-operation API documentation.