Twitter/X Profile Scraper · Bulk Handles, URLs & IDs avatar

Twitter/X Profile Scraper · Bulk Handles, URLs & IDs

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Twitter/X Profile Scraper · Bulk Handles, URLs & IDs

Twitter/X Profile Scraper · Bulk Handles, URLs & IDs

Extract public Twitter/X profile data from handles, profile URLs, or numeric user IDs. Export bios, follower and following counts, verification, images, location, account dates, and stable IDs to JSON, CSV, or Excel.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Data Slayer

Data Slayer

Maintained by Community

Actor stats

1

Bookmarked

241

Total users

44

Monthly active users

9 days ago

Last modified

Share

Turn Twitter/X handles, profile URLs, or stable numeric user IDs into structured public profile rows for CRM enrichment, creator research, audience analysis, and recurring profile monitoring.

Watch the demo

What this Actor does

Submit one profile or a batch of up to 100 references. The Actor normalizes handles and URLs, removes duplicate inputs, retries temporary retrieval failures within strict limits, and writes one successful profile per stable user ID to the default dataset.

Successful profiles are the only default-dataset rows. Invalid, missing, unavailable, partial, and cancelled outcomes are recorded in the run's RUN_SUMMARY key-value record, so diagnostic status records do not become paid dataset results.

Input

The simplest batch input is profiles:

{
"profiles": [
"nasa",
"@apify",
"https://x.com/openai",
"11348282"
],
"maxItems": 100
}
FieldTypeRequiredDefaultDescription
profilesarray of stringsConditional—Handles, @handles, x.com/twitter.com profile URLs, or numeric user IDs.
maxItemsintegerNo100Maximum unique references to process; range 1–100.
usernamestringConditional—Backward-compatible single-username input. Existing API integrations can keep using it.
usernamesarray of stringsNo—Compatibility alias for batch handles.
profileUrlsarray of stringsNo—Compatibility alias for batch profile URLs.
userIdsarray of stringsNo—Compatibility alias for numeric user IDs.

Provide at least one reference through username or a list field. When the same profile is submitted more than once, the first occurrence determines its requested_input; later duplicates are skipped.

Output

The default dataset preserves the established fields used by existing customers and adds stable, documented aliases for new integrations.

Canonical fields

FieldTypeNullableDescription
record_typestringNoAlways profile.
requested_inputstringNoThe first input reference that produced this row.
input_typestringNohandle or user_id.
user_idstringYesStable numeric user ID when available.
usernamestringYesCurrent account handle.
display_namestringYesPublic display name.
biostringYesPublic profile biography.
followers_countintegerYesPublic follower count at collection time.
following_countintegerYesPublic following count at collection time.
posts_countintegerYesPublic post count at collection time.
is_blue_verifiedbooleanYesBlue verification state when available.
is_protectedbooleanYesWhether posts are protected. Public profile-header fields may still be available.
profile_image_urlstringYesPublic profile image URL.
banner_image_urlstringYesPublic banner image URL.
profile_urlstringYesCanonical x.com profile URL when a handle is available.
collected_atISO 8601 stringNoTime this Actor mapped the profile row.

Preserved legacy fields

Existing fields remain available when returned: id, profile, rest_id, blue_verified, affiliates, avatar, header_image, desc, name, location, friends, sub_count, statuses_count, media_count, created_at, pinned_tweet_ids_str, protected, status, website, verified, can_dm, fast_followers_count, favourites_count, listed_count, normal_followers_count, and possibly_sensitive.

Example JSON result

{
"status": "active",
"profile": "NASA",
"rest_id": "11348282",
"blue_verified": true,
"avatar": "https://pbs.twimg.com/profile_images/example.jpg",
"header_image": "https://pbs.twimg.com/profile_banners/11348282/example",
"desc": "Exploring Earth and the universe.",
"name": "NASA",
"location": "Pale Blue Dot",
"friends": 117,
"sub_count": 92385617,
"statuses_count": 74276,
"media_count": 27942,
"protected": false,
"user_id": "11348282",
"username": "NASA",
"display_name": "NASA",
"bio": "Exploring Earth and the universe.",
"followers_count": 92385617,
"following_count": 117,
"posts_count": 74276,
"is_blue_verified": true,
"is_protected": false,
"requested_input": "nasa",
"input_type": "handle",
"profile_url": "https://x.com/NASA",
"collected_at": "2026-09-21T00:00:00+00:00",
"record_type": "profile"
}

Example CSV

requested_input,user_id,username,display_name,followers_count,following_count,posts_count,is_blue_verified,is_protected,profile_url,collected_at
nasa,11348282,NASA,NASA,92385617,117,74276,true,false,https://x.com/NASA,2026-09-21T00:00:00+00:00

Empty, unavailable, and partial results

Open RUN_SUMMARY in the default key-value store to reconcile every accepted input.

  • succeeded: a profile row was written.
  • empty: no profile was returned; no diagnostic dataset row was created.
  • failed: retrieval or validation failed with a stable functional code.
  • partial: at least one profile was written, but a safe cursor or budget boundary stopped additional work.
  • cancelled: the run stopped before all accepted inputs were processed.

Errors use functional codes such as PROFILE_NOT_FOUND, DATA_ACCESS_UNAVAILABLE, RATE_LIMITED, DATA_TEMPORARILY_UNAVAILABLE, MALFORMED_RESPONSE, and REQUEST_BUDGET_EXCEEDED. Raw response bodies, private request URLs, credentials, and internal exception text are not included in customer output or logs.

Pricing

The proposed pricing remains pay per successful default-dataset profile plus the existing small Actor-start event. A missing or failed profile creates no default-dataset item.

Apify planPrice per profilePrice per 1,000 profiles
Free$0.00250$2.50
Bronze$0.00217$2.17
Silver$0.00183$1.83
Gold$0.00150$1.50
Platinum$0.00150$1.50
Diamond$0.00150$1.50

The Actor-start event is $0.002 per run, with the platform's existing memory-based event semantics and a minimum of one start event.

How to run it

  1. Add handles, profile URLs, or numeric IDs to Profile handles, URLs, or IDs.
  2. Keep maxItems at 100 or lower it for a smaller test.
  3. Start the Actor.
  4. Download successful rows as JSON, CSV, Excel, XML, or HTML from the dataset.
  5. Check RUN_SUMMARY for empty, invalid, unavailable, partial, or cancelled inputs.

For an existing integration, this input remains valid:

{
"username": "nasa"
}

Automation and API use

Use the Actor from the Apify API, schedules, tasks, webhooks, Make, Zapier, n8n, or another workflow tool. Store user_id as the durable join key where available; handles can change.

Common use cases

  • Enrich CRM records with public profile identity and audience-size fields.
  • Qualify creators and partners by public account metadata.
  • Refresh a known profile list on a schedule and compare snapshots in your own warehouse.
  • Resolve mixed handle/URL columns without preprocessing them first.
  • Build research datasets while retaining the submitted input for traceability.

Limits and responsible use

  • Results cover public profile fields available at collection time; fields can be null or change later.
  • A protected account can expose public profile-header data while keeping its posts private.
  • Numeric ID lookup and large batches must pass the same release fixture as handle lookup before a candidate build is published.
  • This Actor does not return posts, follower lists, following lists, private data, or a complete history of profile changes.
  • One Actor run cannot enforce an account-wide request limit shared with other Actors. The runtime applies its own strict request and time budgets.
  • Use the data lawfully and respect applicable privacy, platform, and contractual requirements.

Support

If an input consistently returns the wrong state or a documented field is missing, open an issue on the Actor's Issues tab and include the run ID. Do not post private credentials or personal data in an issue.

FAQ

How much does it cost to run this Actor? Pricing is listed in the Pricing section above, charged per row returned. You only pay for the rows the Actor actually produces, so a small test run costs cents.

Do I need cookies or a login? No. This Actor reads public data only - no cookies, no account, no browser automation.

Can I schedule it? Yes. Run it from the Apify API, on a schedule, or via a webhook, and export results as JSON, CSV or Excel.

What if I need a slightly different output? Open an issue on the Actor's Issues tab describing the shape you need.

More Twitter actors from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours:

Actor
Twitter/X Comments Scraper · No Cookies
Twitter/X Community Members Scraper · No Cookies
Twitter/X Engaged Audience Exporter · Replies + Retweeters
Twitter/X Followers Scraper · No Cookies
Twitter/X Following Scraper · Public Profiles
Twitter/X List Members Scraper · No Cookies
Twitter/X Search Scraper · Small Jobs & Advanced Queries
Twitter/X Trends Scraper · No Cookies
Twitter/X Tweet Details Scraper · URL or ID
Twitter/X Tweets Scraper · No Cookies