🐦 Twitter (X) User Scraper avatar

🐦 Twitter (X) User Scraper

Pricing

from $3.99 / 1,000 results

Go to Apify Store
🐦 Twitter (X) User Scraper

🐦 Twitter (X) User Scraper

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

ScraperX

ScraperX

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Scrape public Twitter / X user profiles, followers, following counts and retweeter networks at scale β€” no login or API key required. Powered by the Apify platform with built-in auto proxy escalation, live result streaming and a smart fallback strategy for blocked requests.

⚑ Get clean, structured user data straight from x.com β€” verified status, follower/following counts, bio, location, account age, profile pictures, banners, professional badges, and an enriched about payload.


✨ Why this actor

Other scrapers🐦 This actor
Login requiredOften❌ Never (optional)
Block handlingManualβœ… Auto direct β†’ datacenter β†’ residential
Live results❌ End-of-run onlyβœ… Streamed per-user
PricingSubscriptionπŸ’Έ Pay-per-event
OutputsSingle datasetπŸ“¦ Dataset + per-section KVS files

πŸš€ Key features

  • πŸ”— Bulk URLs β€” paste a list of profile URLs or plain usernames.
  • 🌐 No-proxy by default β€” automatically escalates to Apify DATACENTER then RESIDENTIAL proxies (with 3 retries) only when X blocks the connection.
  • πŸ“‘ Live streaming β€” every captured user is pushed to the dataset immediately, so a crash mid-run never wipes your progress.
  • πŸͺͺ Rich profile mode β€” toggle πŸͺͺ Include rich 'about' profile to fetch verification info, profile image shape, account creation source, etc.
  • πŸ‘» Unavailable users β€” optionally surface suspended / protected accounts.
  • πŸ“š Per-section output β€” each input URL writes its own grouped JSON file to the run’s key-value store, plus a combined OUTPUT key.

πŸ“₯ Input

FieldTypeDefaultDescription
πŸ”— startUrlsarray–Profile URLs or @usernames. Bulk supported.
πŸ” getRetweetersbooltrueCapture retweeters / related users from the timeline.
πŸ‘₯ getFollowersbooltrueInclude follower count on each record.
🀝 getFollowingbooltrueInclude friends (following) count.
πŸͺͺ getAboutbooltrueEnrich with verification / account metadata.
πŸ‘» includeUnavailableUsersboolfalseSurface suspended / protected accounts.
🎯 maxItemsint100Cap users collected per source URL.
⏱️ requestDelaynumber1.0Float seconds between pagination requests.
πŸ” authTokenstring (secret)–Optional X auth_token cookie.
πŸ›‘οΈ csrfTokenstring (secret)–Optional X ct0 cookie.
🌐 proxyConfigurationobjectdirectDefaults to no proxy. Overrides auto-escalation.

Example input

{
"startUrls": [
"https://twitter.com/elonmusk",
"https://x.com/openai"
],
"getRetweeters": true,
"getFollowers": true,
"getFollowing": true,
"getAbout": true,
"includeUnavailableUsers": false,
"maxItems": 100,
"requestDelay": 1.0,
"proxyConfiguration": { "useApifyProxy": false }
}

πŸ“€ Output

Each record is pushed live to the default dataset.

{
"inputSource": "https://twitter.com/elonmusk",
"type": "user",
"userName": "elonmusk",
"url": "https://x.com/elonmusk",
"twitterUrl": "https://twitter.com/elonmusk",
"id": "44196397",
"name": "Elon Musk",
"isVerified": true,
"hasNftAvatar": false,
"profilePicture": "https://pbs.twimg.com/profile_images/.../m8mdWZCG_normal.jpg",
"coverPicture": "https://pbs.twimg.com/profile_banners/44196397/1774145451",
"description": "https://t.co/dDtDyVssfm",
"location": "",
"followers": 239969983,
"following": 1332,
"protected": false,
"createdAt": "Tue Jun 02 20:12:29 +0000 2009",
"statusesCount": 102639,
"mediaCount": 4489,
"favouritesCount": 227779,
"listedCount": 169028,
"about": {
"accountBasedIn": "",
"locationAccurate": false,
"profileImageShape": "Circle",
"avatarUrl": "https://pbs.twimg.com/profile_images/.../m8mdWZCG_normal.jpg",
"usernameChangeCount": "0",
"accountCreatedAt": "Tue Jun 02 20:12:29 +0000 2009",
"accountSource": "",
"verifiedSince": "-156836000000000"
}
}

The run also writes a per-section JSON to the key-value store (source_01_elonmusk.json, source_02_openai.json, …) and a combined OUTPUT.json that mirrors the legacy grouped-by-name format.


πŸš€ How to use (Apify Console)

  1. Log in at https://console.apify.com β†’ Actors.
  2. Open 🐦 Twitter (X) User Scraper.
  3. Paste your profile URLs into πŸ”— Profile URLs.
  4. Pick which networks / fields you want (πŸ”, πŸ‘₯, 🀝, πŸͺͺ).
  5. (Optional) Drop in an authToken + csrfToken for tougher targets.
  6. Hit Start.
  7. Watch the live log β€” it will tick πŸ“₯ @username β€” N followers per user.
  8. Open the Dataset or Key-value store tab when the run completes.
  9. Export to JSON / CSV / XLSX.

πŸ€– Use via API

curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": ["https://twitter.com/elonmusk"],
"maxItems": 50
}'

🎯 Best use cases

  • 🧠 Audience research β€” analyze who is engaging with a brand or person.
  • πŸ“ˆ Influencer discovery β€” find creators by exploring a competitor's retweeter / quoter graph.
  • 🏷️ Lead generation β€” extract bios and external links from prospects.
  • πŸ›‘οΈ Brand safety β€” monitor verified status changes on managed accounts.

πŸ’Έ Pricing

This actor uses Apify's pay-per-event (PPE) model:

EventWhen it fires
apify-actor-startOnce at run start (synthetic; Apify covers the first 5s).
row_resultOne charge per user record written to the default dataset.
  • No data β†’ no charge. If a source fails or returns nothing, no row_result events are emitted, so you are not billed for empty runs.
  • Skipped unavailable users and the per-section KVS mirror copies are not chargeable events β€” only successful default-dataset writes are.
  • When your spend cap (ACTOR_MAX_TOTAL_CHARGE_USD) is reached, the actor stops pushing further items and exits cleanly β€” never with a failed-run.

Configure the row_result event's USD price (and any tiered discounts) in Apify Console β†’ Actor β†’ Publication β†’ Monetization.


❓ FAQ

Do I need an X account? No. The actor runs in guest mode out of the box. You can paste an auth_token + ct0 for harder cases β€” both stay encrypted in Apify Secrets.

Why does the first run take a few seconds? The actor warms up by fetching the X web client bundle so it can stay in sync with the latest GraphQL schema. After that, throughput is steady.

How do you handle rate limits? On a block we escalate proxies (direct β†’ datacenter β†’ residential) and rotate residential IPs up to three times before failing the source.

Will protected / suspended accounts appear? Only if you enable πŸ‘» includeUnavailableUsers. They are tagged with isUnavailable: true and an unavailableReason.


πŸ›Ÿ Support & feedback

  • 🐞 Issues β€” open a ticket on the Apify Store actor page.
  • πŸ’¬ Questions / feature requests β€” ping the maintainer via Apify chat.

Data is collected only from publicly available profile information. End users are responsible for compliance with applicable laws (GDPR, CCPA), the X Terms of Service and robots.txt.


Built with ❀️ for the Apify platform.