X (Twitter) Follower Scraper | $0.06/1K | Followers & Following avatar

X (Twitter) Follower Scraper | $0.06/1K | Followers & Following

Pricing

from $0.05 / 1,000 account returneds

Go to Apify Store
X (Twitter) Follower Scraper | $0.06/1K | Followers & Following

X (Twitter) Follower Scraper | $0.06/1K | Followers & Following

Export the followers and following of any X (Twitter) account, plus its verified followers and the members of any X list. One row per account with handle, name, bio, follower and following counts, verification, location, links and join date, exported as JSON, CSV or Excel. Flat price. By FeedMiner.

Pricing

from $0.05 / 1,000 account returneds

Rating

0.0

(0)

Developer

FeedMiner

FeedMiner

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

💸 $0.06 per 1,000 accounts, down to $0.05 on the larger Apify plans. The most visible follower list on the store bills $0.15 per 1,000, the next one $0.25 plus a start fee on every run. Here there is no start fee.

🧩 Three audiences, one actor. Followers, following and verified followers come out of the same run, tagged by relation, so a competitor audit is one input instead of three tools.

🧬 Same fields as the rest of the suite. An account row here carries the field names of X Profile Scraper and of the author block in X Tweet Scraper. Three actors, one schema, no mapping to write.

🛟 A dead handle never kills a run. Renamed, suspended and protected accounts are reported and skipped, and the accounts already collected are kept and delivered.

FeedMiner · X (Twitter) suite • Posts, profiles, audiences, media, trends
X Follower Scraper
➤ You are here
X Advanced Search Scraper
Every X operator as a form field · $0.12/1K posts
X Media Scraper
Photos, videos, every encoding · $0.40/1K files

Copy to your AI assistant

feedminer/x-follower-scraper on Apify. Exports the followers, following and verified followers of X (Twitter) accounts. One row per account with id, userName, name, description, followers, following, isVerified, isBlueVerified, location, profilePicture, createdAt, plus relation and source. Call ApifyClient("TOKEN").actor("feedminer/x-follower-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Requires handles (string[]), relations (string[] of followers|following|verifiedFollowers), maxItems (int). Full spec: GET https://api.apify.com/v2/acts/feedminer~x-follower-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

How to scrape followers on X (Twitter)

Paste handles, choose what you want, press Start.

Basic: the followers of one account

{ "handles": ["apify"], "relations": ["followers"], "maxItems": 5000 }

Who a founder follows, which is the shorter and denser list

{ "handles": ["paulg"], "relations": ["following"], "maxItems": 3000 }

Following lists are usually a few hundred accounts and say far more about interests than a follower list of a million.

Verified followers only, for a partner shortlist

{ "handles": ["stripe"], "relations": ["verifiedFollowers"], "maxItems": 2000 }

Compare two audiences in one run

{
"handles": ["stripe", "adyen"],
"relations": ["followers"],
"maxItems": 20000
}

Every row carries source, so one pivot on that column gives you the overlap and the difference between the two audiences.


Input parameters

ParameterTypeDefaultDescription
handlesarrayAccounts to read, as handles or profile URLs
relationsarray['followers']Followers of the account, accounts it follows, or its verified followers
maxItemsinteger1000Stop once this many accounts have been collected, shared across the targets

Advanced

ParameterTypeDefaultDescription
sessionsarrayOptional. The Actor works without one. X accounts of your own, for anyone who would rather the run used accounts they control
debugModebooleanfalseVerbose logs for support

Coming from another follower scraper

Paste the input you already send elsewhere. user_names, userNameList, usernames, twitterHandles, urls, profileUrl and startUrls are all read as accounts, and userIds, user_ids and userIdList as numeric account ids, which skip the lookup entirely, getFollowers, getFollowing, getVerifiedFollowers, relation and type all select what to collect, and maxFollowers, maxFollowings and maxResults all cap the run. Nothing to rewrite.

Nothing to connect

Paste handles and press Start. There is no account to create, no cookie to copy and nothing to keep alive on your side.

If you would rather the run worked from accounts you own, the optional sessions field takes them as browser cookies. Several can be given at once and the work spreads across them.


What data can you extract from X (Twitter) followers?

FieldTypeDescription
idstringNumeric account id, stable across renames
userNamestringHandle, without the at sign
namestringDisplay name
descriptionstringBio, where the job titles and the emails are
followersintegerFollower count
followingintegerFollowing count
statusesCountintegerPosts published
mediaCountintegerPhotos and videos published
favouritesCountintegerPosts this account has liked
isVerifiedbooleanLegacy verification
isBlueVerifiedbooleanPaid verification
locationstringFree text location from the profile
twitterUrlstringProfile URL
profilePicturestringAvatar URL
coverPicturestringHeader image URL
createdAtstringAccount creation date, RFC 3339
relationstringWhy this row is here: followers, following, verifiedFollowers
sourcestringThe handle the row was collected from

Example output

{
"id": "2244994945",
"userName": "apify",
"name": "Apify",
"description": "Full-stack web scraping and data extraction platform.",
"followers": 6280,
"following": 412,
"statusesCount": 3891,
"isBlueVerified": true,
"location": "Prague",
"twitterUrl": "https://x.com/apify",
"createdAt": "2013-12-14T04:35:55Z",
"relation": "followers",
"source": "apify"
}

Column mapping, if you are switching

Three vocabularies exist on this market. Ours is the one X Profile Scraper and X Tweet Scraper already use, so the three FeedMiner actors feed one pipeline. Here is what to rename if you came from elsewhere.

Herekaitoeasyapiapi-ninjaxquik
idid_struser_idid
userNamescreen_namescreen_nameusername
namenamenamename
descriptiondescriptiondescriptiondescription
followersfollowers_countfollowers_countfollowers
followingfriends_countfriends_countfollowing
statusesCountstatuses_countstatuses_countstatusesCount
mediaCountmedia_countmedia_countmediaCount
favouritesCountfavourites_countnot returnedfavouritesCount
isVerifiedverifiedverifiedisVerified
isBlueVerifiednot returnedblue_verifiednot returned
locationlocationlocationlocation
profilePictureprofile_image_url_httpsprofile_imagenot returned
createdAtcreated_atcreated_atnot returned
relationtypenot returnedresultType
sourcetarget_usernamenot returnednot returned

One field appears elsewhere and not here on purpose: email. X does not publish an email on a profile, so a column named that way is empty on every row.

Pricing: Pay Per Event (PPE)

EventPrice
Account returned$0.00006

That is $0.06 per 1,000 accounts, with no start fee and no charge for a run that returns nothing. A 50,000 account audience costs $3. The price steps down on its own for the larger Apify plans, to $0.055 and then $0.05 per 1,000.


What a run costs

A 5,000 account audience$0.30
Two competitors compared, 20,000 accounts each, 40,000 rows$2.40

Free tier

The Apify free plan includes $5 of usage every month, which is roughly 83,000 accounts here. No card required.

Advanced usage

Audience overlap. Run two competitors in one job, export to CSV, pivot on userName counting source. Anyone appearing twice follows both, which is the shortest path to a lookalike list.

Filter before you enrich. followers, description and isBlueVerified are on every row, so a 100,000 row export narrows to the 2,000 accounts worth enriching before you spend anything on enrichment.

Track an audience over time. Schedule the same handles weekly. Comparing two exports on id shows who joined and who left, which is how you spot a competitor's new hires and lost customers.

Big audiences. A million follower account is walked from the newest follower backwards, so a partial run is still the most recent slice, not a random one.


Integrate X follower data into your stack

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("feedminer/x-follower-scraper").call(run_input={
"handles": ["stripe", "adyen"],
"relations": ["followers"],
"maxItems": 20000,
})
rows = client.dataset(run["defaultDatasetId"]).list_items().items
both = {r["userName"] for r in rows if r["source"] == "stripe"} & \
{r["userName"] for r in rows if r["source"] == "adyen"}
print(len(both), "accounts follow both")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('feedminer/x-follower-scraper').call({
handles: ['stripe'],
relations: ['verifiedFollowers'],
maxItems: 2000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const leads = items.filter((i) => i.followers > 1000 && /founder|ceo/i.test(i.description || ''));

No code

The dataset connects to Google Sheets, Airtable, Slack, Zapier, Make and n8n from the Integrations tab of the run, with no extra work.


Performance

MeasureValue
Accounts per page20, the same page size X's own web app requests
ParallelismOne worker per account supplied, so more accounts means more speed
Partial resultsKept and delivered when a limit is reached

FAQ

Do I need an X account? No. Paste handles and press Start. The optional sessions field is there for anyone who would rather run on accounts they own.

Is my account safe? The run reads at the pace of a person browsing, one page of twenty at a time, and stops an account as soon as X pushes back instead of hammering it. Give a secondary account rather than your main one, as you would to any third party tool.

How many followers can I get from one account? X paginates a follower list deeply, and this scraper follows the cursor as far as your maxItems asks. Very large audiences are walked newest first, so stopping early still gives you the freshest slice.

Can I get followers of a protected account? No. A protected account hides its relations from everyone, and the run reports it instead of failing.

Why is a row missing an email? X profiles have no email field. What people do put in description is often a contact, which is why the bio is on every row.

What happens when an account gets rate limited? The run moves the work to another account you supplied, and keeps everything already collected. With one account it slows down rather than failing.

Can I schedule this? Yes. Apify Schedules run it daily or weekly, and comparing two exports on id gives you joins and leaves.


Support

Something wrong in a row, a field you need, an audience you cannot reach: write from the actor page and it gets read.


This actor collects data that X publishes on public profiles. It does not access private accounts, direct messages or anything behind a follow request. Personal data in the output is subject to GDPR, CCPA and similar regimes: collect what you have a lawful basis to collect, keep it only as long as you need it, and honour deletion requests. You are the controller of what you export.


FeedMiner · Fast, honestly priced scrapers, kept alive when platforms change.

X Tweet Scraper · X Profile Scraper · X Follower Scraper · X Advanced Search Scraper · X Media Scraper · X Mentions Monitor · X Engagement Scraper · X Likes and Reposts Scraper · X Trends Scraper · All FeedMiner Actors