Twitter Profile Scraper - $0.14/1k, No API Key
Pricing
Pay per event
Twitter Profile Scraper - $0.14/1k, No API Key
$0.14 per 1,000 profiles, flat on every plan - no volume tiers, no plan gates. Followers, following, bio, location, verification, join date, post counts and profile images. Pass a hundred handles in one run. No X API key, no developer plan.
Pricing
Pay per event
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
1
Bookmarked
33
Total users
17
Monthly active users
3 days ago
Last modified
Categories
Share
⚡ Twitter (X) User Scraper — Profiles, Followers & Bios (No Login, No API Key)
Get full X (Twitter) profile data without a login or API key. Feed it usernames and get back followers, following, tweet count, bio, location, verified status, profile image and join date — perfect for bulk profile enrichment, influencer vetting, lead lists and audience research. Export to JSON, CSV or Excel, call it from the API, or deliver straight to Notion.
$0.14 per 1,000 profiles ($0.00014 each), plus $0.0005 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for profiles actually returned. (From 2026-08-19 the run-start fee becomes $0.001; the per-profile price is unchanged.)
No account. No token to find. Paste handles and run.
Why this scraper wins
- 🔓 Keyless by default — a profile is a public, shareable page, and X serves it to a plain guest token, so no credentials are needed and none are asked of you. A session is held in reserve purely as a fallback for the rare run where the guest route is refused outright.
- 🛡️ Self-healing — auto-repairs when X rotates its GraphQL feature flags, so it keeps working when other scrapers break.
- 💸 Pay only for hits — $0.14 / 1,000 profiles, billed per profile actually returned. Suspended, not-found and blocked handles cost nothing.
- 🧹 Clean, flat records — one tidy object per profile, ready for spreadsheets or CRM import.
- 📬 Built-in Notion delivery — push results straight into Notion via Apify connectors, zero extra code.
- 🚦 Honest errors — a clear
errorCoderow for suspended/not-found handles instead of silent gaps.
Input
| Field | Notes |
|---|---|
twitterHandles | Usernames to look up, with or without the @ (e.g. nasa, elonmusk). |
startUrls | Or paste profile URLs directly (https://x.com/nasa). Mix freely with handles. |
proxyConfiguration | Leave it alone. The run rotates its own exit addresses — a large datacenter pool with rented static addresses behind it — and hops as soon as one is throttled, because X's guest limit is counted per address. None of it is billed per gigabyte. Set this only to route through proxy servers you already pay for. |
sessionCookies | Optional, and not needed for a normal run. Leave it empty. If you do supply an auth_token=…; ct0=… pair from your own logged-in x.com, it is used only as a fallback when the keyless route is refused. Stored as a secret. |
notionConnector | Optional. Deliver each profile into your connected Notion workspace via an Apify MCP connector — no extra code. |
notionParentId | Optional Notion database / data-source id to create the pages in. Leave empty and pages are created privately in your workspace. |
Output (one record per profile)
{"id": "11348282","userName": "NASA","name": "NASA","description": "There's space for everybody. ✨","followersCount": 84000000,"friendsCount": 180,"statusesCount": 71000,"verified": true,"isBlueVerified": false,"location": "","profileImageUrl": "https://pbs.twimg.com/profile_images/....jpg","createdAt": "Wed Dec 19 20:20:32 +0000 2007","url": "https://x.com/NASA"}
Every field above comes straight from X's own profile record. Where X publishes nothing — an empty location, for instance — you get an empty value rather than a guess.
Pricing
| Event | When | Price |
|---|---|---|
| Actor start | Once per run, per GB of run memory | $0.0005 |
| Profile returned | Each profile successfully resolved | $0.00014 ($0.14 / 1,000) |
Only successful lookups are charged. A handle that is suspended, renamed, deleted or simply wrong comes back as a labelled diagnostic row with an errorCode — NOT_FOUND, NO_RESULTS, BLOCKED or NETWORK — and costs nothing. So a list of 1,000 handles where 120 are dead bills 880 profiles, not 1,000.
100 profiles = $0.0145. 1,000 profiles = $0.1405. 10,000 profiles = $1.4005.
From 2026-08-19 the run-start fee rises from $0.0005 to $0.001. The $0.00014 per-profile price does not change.
FAQ
Do I need a Twitter account or API key? No — profiles are fully keyless. The actor obtains a public guest token from X the same way a logged-out browser does, and every handle is asked for that way first.
Then what is sessionCookies for? It is an optional fallback, and most runs never touch it. When X refuses the keyless route for a handle — a throttled address on both hops, or a guest token it will not mint at all — the run falls back to a session rather than handing you an error row. Supplying your own cookie there means the fallback uses your account and your rate limit instead of a shared one. Leaving it empty is the normal case.
How many handles per run? As many as you like; you pay per profile returned, and there is only one start fee no matter how long the list.
What happens when X rotates its GraphQL feature flags? The actor re-reads them and repairs its query on the fly, which is what keeps it running when hard-coded scrapers start returning empty.
Am I charged for a handle that doesn't exist? No. Only rows that carry real profile data are billed.
Want the tweets too? Use the companion Tweet Scraper for timelines and search.