X (Twitter) Followers & Following Scraper avatar

X (Twitter) Followers & Following Scraper

Pricing

from $0.15 / 1,000 results

Go to Apify Store
X (Twitter) Followers & Following Scraper

X (Twitter) Followers & Following Scraper

Export followers and following of any X (Twitter) account to clean JSON, CSV or Excel. No login or API key needed. Scrape followers lists, verified followers & subscriptions in bulk. Filter by follower count for lead generation, audience & competitor analysis.

Pricing

from $0.15 / 1,000 results

Rating

0.0

(0)

Developer

Chidubem Aneke

Chidubem Aneke

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Share

X (Twitter) Followers & Following Scraper — Export Any Account's Social Graph

Turn any X (Twitter) account's followers and following into a clean, structured contact list. Point it at one or more handles, pick the graphs you want — followers, following, verified followers, or subscriptions — and get one flat JSON row per user, ready for your CRM, spreadsheet, database, or AI pipeline.

No X API keys. No developer account. No login. Just enter usernames and press Start.

Public data, zero setup • 🎯 Followers + following in one run • 🧩 Flat, predictable JSON • 💸 Pay only for what you export


Why this Actor

  • Skip the official X API. No $100–$5,000/mo tiers, no OAuth apps, no rate-limit math.
  • Both directions at once. Export who follows an account and who that account follows in a single run — each row is tagged so you can tell them apart instantly.
  • Built for scale. Results stream straight to the dataset as they arrive. Runs comfortably on 256 MB and can pull the entire follower graph of an account when you set the per-account limit to unlimited.
  • Never loses a run to one bad input. A private, suspended, or misspelled account becomes a tidy unavailable row — the rest of your run keeps going.
  • Automation-native. Pipe results to Google Sheets, Airtable, a webhook, your database, or an AI agent via the Apify API and MCP.

Use cases & outcomes

🎯 Lead generation & prospecting Export the followers of a competitor, a niche influencer, or an industry account, filter for users above a follower threshold, and turn a warm audience into a ready-made prospect list.

🔍 Competitor & audience analysis Pull a competitor's followers and the accounts they follow to understand who they target, who amplifies them, and where their audience overlaps with yours.

🧠 Influencer & creator vetting Check an influencer's verified followers and subscriptions to gauge real reach and audience quality before a partnership.

📊 Community & network mapping Snapshot a founder's or brand's social graph over time to track growth, churn, and notable new followers.

🤖 AI agents & RAG pipelines Feed flat, consistently-named JSON straight into an LLM — no brittle parsing, stable field names, canonical x.com URLs on every row.


What you can export

RelationshipTurn on withYou get
Followers (default)relationships: ["followers"]Every account that follows the source account
Following (default)relationships: ["following"]Every account the source account follows
Verified followersrelationships: ["verified_followers"]Only the verified accounts that follow them
Subscriptionsrelationships: ["subscriptions"]Paid subscriptions for the source account

Select any combination — each selected relationship is exported for every account you provide.


Quick start

  1. Open the Actor in Apify Console.
  2. Enter one or more usernames (without @).
  3. Pick your relationships (defaults to followers + following).
  4. Set Max users per account100 to sample, or 0 to export the entire graph.
  5. Press Start and watch rows stream into the dataset.
  6. Export as JSON / CSV / Excel, or pull via the Apify API, integrations, or MCP.

Example — followers + following of one account

{
"usernames": ["nasa"],
"relationships": ["followers", "following"],
"maxUsersPerAccount": 500
}

Example — a lead list of large followers

{
"usernames": ["openai"],
"relationships": ["followers"],
"minFollowers": 1000,
"maxItems": 5000
}

Example — export the entire following of several accounts

{
"usernames": ["nasa", "spacex", "esa"],
"relationships": ["following"],
"maxUsersPerAccount": 0
}

Example — verified followers only, by user ID

{
"userIds": ["11348282"],
"relationships": ["verified_followers"],
"maxUsersPerAccount": 0
}

Input reference

FieldTypeDefaultDescription
usernamesstring[][]X handles to export, without @.
userIdsstring[][]Numeric user IDs (skips username resolution).
relationshipsstring[]["followers","following"]Any of followers, following, verified_followers, subscriptions. Each is exported for every account.
maxUsersPerAccountinteger100Max users per account per relationship. 0 = unlimited (bounded by maxItems).
minFollowersinteger0Keep only exported users with at least this many followers. 0 = off.
maxItemsinteger100000Global ceiling on total exported users — the main cost lever.
pageSizeinteger1000Users requested per page. Does not cap totals — the Actor keeps paginating. Higher = fewer requests.
maxRetriesinteger5Automatic retries on rate limits / temporary errors.
retryBaseDelayMsinteger2000Initial retry backoff (grows exponentially).
retryMaxDelayMsinteger30000Maximum retry backoff.
includeRawbooleanfalseAttach the untouched source payload under raw.

Provide at least one username or userId.


Output

Every exported user is a flat JSON object. Rows from different graphs live in the same dataset and are distinguished by relationshipType and the source* fields.

FieldTypeDescription
featureType / relationshipTypestringWhich graph this row came from: followers, following, verified_followers, or subscriptions.
sourceUsernamestring | nullThe account whose graph this user belongs to (null when the account was given by ID).
sourceUserIdstringThe numeric ID of the source account.
inputRefstringThe username or ID you provided.
scrapedAtstringISO 8601 UTC timestamp of collection.
idstring | nullThe exported user's numeric ID.
usernamestring | nullThe exported user's handle.
displayNamestring | nullDisplay name.
biostring | nullProfile bio.
urlstring | nullCanonical https://x.com/... profile URL.
followersCountnumber | nullFollower count.
followingCountnumber | nullFollowing count.
tweetCountnumber | nullTotal posts.
listedCount / mediaCountnumber | nullLists containing the user / media posts.
verifiedboolean | nullLegacy verified flag.
isBlueVerifiedboolean | nullX Premium (Blue) verification.
verifiedTypestring | nullVerification type when present.
isProtectedboolean | nullWhether the account is protected.
locationstring | nullProfile location.
websitestring | nullProfile website.
createdAtstring | nullAccount creation date.
profileImageUrl / profileBannerUrlstring | nullAvatar / banner image URLs.

Example — a follower row:

{
"featureType": "followers",
"relationshipType": "followers",
"scrapedAt": "2026-07-06T12:00:00.000Z",
"sourceUrl": "https://x.com/jane_doe",
"inputRef": "nasa",
"sourceUserId": "11348282",
"sourceUsername": "nasa",
"id": "6000000000000000001",
"username": "jane_doe",
"displayName": "Jane Doe",
"bio": "Space nerd. Coffee. Code.",
"url": "https://x.com/jane_doe",
"followersCount": 1200,
"followingCount": 340,
"tweetCount": 5820,
"verified": false,
"isBlueVerified": true,
"location": "Austin, TX",
"profileImageUrl": "https://pbs.twimg.com/profile_images/…"
}

Couldn't be fetched? You get an explicit marker instead of a silent gap:

{
"featureType": "unavailable",
"status": "unavailable",
"reason": "not_found",
"message": "User @example not found.",
"inputRef": "example",
"relationshipType": null,
"scrapedAt": "2026-07-06T12:00:00.000Z"
}

After every run, the OUTPUT tab shows a summary: the relationships exported, accounts requested/resolved, counts per relationship, unavailable count, and any non-fatal errors.


Dataset views

The dataset ships with ready-made tabbed views in the Console — Overview, Followers, Following, and Unavailable — so you can read results without building a single filter. Filter on relationshipType to split "followers of @X" from "accounts @X follows", even when both are in the same dataset.


Controlling scope & cost

FieldEffect
maxUsersPerAccountThe per-account throttle. 100 samples; 0 exports the full graph.
maxItemsThe global ceiling and main cost lever. Lower it to keep runs lean.
minFollowersTrims small accounts out of the results before they're stored.

Large accounts have millions of followers — exporting the full graph uses more compute and time. Start with a modest maxUsersPerAccount and raise it once you've confirmed the output looks right.


FAQ

Do I need an X/Twitter API key or login? No. This Actor exports public follower/following data with zero credentials.

Can I export followers and following in one run? Yes — select both in relationships. Each row is tagged with relationshipType so you can tell them apart.

Can I get all followers of an account? Yes — set maxUsersPerAccount to 0 (unlimited). The run is then bounded only by maxItems.

What formats can I export? JSON, CSV, Excel, HTML, or RSS — plus the Apify API, webhooks, and integrations.

Will one bad username break my run? No. Failed accounts become unavailable rows and the run continues.

Can I schedule it? Yes — use Apify Schedules to run on any cron you like.


Support

Open an issue on the Actor page or contact the publisher with your run ID and your (redacted) input JSON.


Contact me

Need something built beyond this Actor? I take on custom projects — from Apify scrapers and data pipelines to full-stack web apps.

Emaildubem115@gmail.com
GitHubgithub.com/DrunkCodes

Reach out with a short description of your project and timeline — happy to discuss scope and pricing.