Twitter Profile Scraper - $0.14/1k, No API Key avatar

Twitter Profile Scraper - $0.14/1k, No API Key

Pricing

Pay per event

Go to Apify Store
Twitter Profile Scraper - $0.14/1k, No API Key

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

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

33

Total users

17

Monthly active users

3 days ago

Last modified

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 errorCode row for suspended/not-found handles instead of silent gaps.

Input

FieldNotes
twitterHandlesUsernames to look up, with or without the @ (e.g. nasa, elonmusk).
startUrlsOr paste profile URLs directly (https://x.com/nasa). Mix freely with handles.
proxyConfigurationLeave 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.
sessionCookiesOptional, 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.
notionConnectorOptional. Deliver each profile into your connected Notion workspace via an Apify MCP connector — no extra code.
notionParentIdOptional 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

EventWhenPrice
Actor startOnce per run, per GB of run memory$0.0005
Profile returnedEach 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 errorCodeNOT_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.