sfoln/x-followers · Social media, Lead generation, Automation On request
Export the followers of any public X (Twitter) account, newest first: full profiles with bio, location, follower counts and join date, or bulk follower IDs. $0.30 per 1,000 follower profiles + $0.002 per page of 200; IDs $0.05 per 1,000 + $0.003 per page of 5,000.
Twitter Followers Scraper (X) exports the followers of any public X (Twitter) account, newest first, as clean, flat records. Choose full follower profiles (handle, name, bio with expanded links, location, website, follower / following / post counts, avatar, account creation date, automated-account label) or bulk follower IDs (up to 5,000 per request, the cheapest way to map a follower graph). Built for audience research, influencer vetting, competitor analysis, lead lists and social-graph datasets.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
X follower profile x-follower-profile
$0.0003
$0.30 / 1,000
Charged once per follower profile delivered (mode "profiles").
X follower ID x-follower-id
$0.00005
$0.05 / 1,000
Charged once per follower id delivered (mode "ids").
Followers page x-followers-query
$0.002
$2 / 1,000
Charged once per upstream page of up to 200 follower profiles (mode "profiles"), including the last page and empty pages; covers the provider's per-call minimum.
Follower IDs page x-follower-ids-query
$0.003
$3 / 1,000
Charged once per upstream page of up to 5,000 follower ids (mode "ids"), including the last page and empty pages; covers the provider's per-call minimum.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~x-followers/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Export the 200 newest followers of @apify on X with their bios, locations and follower counts.
Input
Input fields
Paste X (Twitter) handles. The Actor returns their followers (newest first), one dataset record per follower, plus one summary record per account.
Field
Type
Default
Meaning
handles *
array
required
Handles or profile URLs X handles (with or without @) or profile URLs, one per line. Duplicates are removed. Accounts on the Apify free plan can process up to 10 accounts per run.
maxFollowersPerUser
integer
200
Max followers per account How many of the most recent followers to return per account (1–5000). Range 1–5000.
mode
string
"profiles"
Mode "profiles" returns full follower profiles (pages of up to 200). "ids" returns only numeric follower ids (pages of up to 5,000), much cheaper per row. One of "profiles", "ids".
maxItems
integer
1000
Max accounts Safety cap on the number of accounts processed in this run. Accounts beyond it are not processed or charged; their number is reported in the run's status message and OUTPUT (inputItemsDropped). Range 1–10000.
concurrency
integer
3
Concurrency Accounts processed in parallel (1–5). Range 1–5.
itemTimeoutSecs
integer
300
Per-account time limit (seconds) Stop paginating an account after this long; rows already delivered are kept. Range 30–1800.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified TwitterAPI.io user object to each profile record under `raw` (profiles mode only).
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The input item this record corresponds to.
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan (result rows are always ok) e.g. "ok"
charged
boolean
Charged Whether this record incurred a pay-per-event charge.
chargedEvent
string
Charged event Pay-per-event event charged for this record.
source
string
Source Upstream data source (twitterapi = TwitterAPI.io).
fetchedAt
string
Fetched at ISO timestamp.
error
object
Error code / message when status is not ok.
warnings
array
Warnings Non-fatal notes (e.g. stopped early).
recordType
string
Row type follower (one per profile, charged) | follower-id (one per id, charged) | account-summary (one per input account, free).
ofHandle
string | null
Of account The input account whose followers this row lists.
position
integer | null
Position 1 = most recent follower (newest first).
handle
string | null
Handle X handle without @. e.g. "NASA"
userId
string | null
User id Numeric X user id as a string.
name
string | null
Name Display name.
bio
string | null
Bio Profile description with t.co links expanded.
location
string | null
Location Free-text profile location.
url
string | null
Website Website link from the profile (expanded).
profileUrl
string | null
Profile URL https://x.com/<handle>.
followers
integer | null
Followers Follower count.
following
integer | null
Following Accounts followed.
tweets
integer | null
Posts Total posts incl. replies and reposts (statusesCount).
likes
integer | null
Likes given Posts this account has liked (favouritesCount).
mediaCount
integer | null
Media Media posts.
isBlueVerified
boolean | null
Blue verified Has a blue check (null when the endpoint does not report it).
verifiedType
string | null
Verified type Business / Government / null.
profileImageUrl
string | null
Avatar Profile image URL.
coverImageUrl
string | null
Banner Banner image URL.
createdAt
string | null
Created at ISO 8601 account creation time.
isAutomated
boolean | null
Automated Labelled as an automated account.
automatedBy
string | null
Automated by Handle of the operator of an automated account.
canDm
boolean | null
Can DM Accepts direct messages.
possiblySensitive
boolean | null
Possibly sensitive Marked as possibly sensitive.
withheldInCountries
array
Withheld in Country codes where the account is withheld.
pinnedTweetIds
array
Pinned post ids Ids of pinned posts.
unavailable
boolean | null
Unavailable Account is suspended / deactivated / unavailable.
unavailableReason
string | null
Unavailable reason e.g. suspended.
unavailableMessage
string | null
Unavailable message Upstream message for unavailable accounts.
mode
string | null
Mode profiles | ids (summary rows).
followersReturned
integer | null
Rows returned followers delivered for this account (summary rows).
pageFeesCharged
integer | null
Page fees charged Per-page events charged for this account (summary rows).
pageFeeEvent
string | null
Page fee event Event name of the per-page fee (summary rows).