Twitter/X Following Scraper · Public Profiles avatar

Twitter/X Following Scraper · Public Profiles

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Twitter/X Following Scraper · Public Profiles

Twitter/X Following Scraper · Public Profiles

Export a bounded, deduplicated list of accounts followed by a public Twitter/X profile. Accept usernames, profile URLs, and numeric user IDs; download profile records as JSON, CSV, or Excel.

Pricing

from $1.50 / 1,000 results

Rating

5.0

(1)

Developer

Data Slayer

Data Slayer

Maintained by Community

Actor stats

1

Bookmarked

344

Total users

36

Monthly active users

a day ago

Last modified

Share

Twitter/X Following Scraper for Public Profiles

Export a bounded, deduplicated list of accounts followed by a public Twitter/X profile, with profile details ready for research, analysis, lead review, and data workflows.

Watch the demo

What this Actor does

Provide one public username, profile URL, or numeric user ID. The Actor retrieves available accounts that profile follows, removes duplicate profiles by stable user ID (or username when an ID is unavailable), and writes one profile per Dataset item.

This Actor returns a bounded snapshot of the following profiles available during the run. It does not provide a historical timeline of when relationships started or ended, and a truncated run is not a complete relationship history.

Input

FieldTypeRequiredDefaultRangePurpose
userIdstringYeselonmuskUsername, X/Twitter profile URL, or numeric user IDIdentifies the public source account. The existing key is preserved for compatibility.
maxItemsintegerNo1000001–100,000Hard cap on unique profiles written to the Dataset. The high default preserves legacy page-bounded behavior.
maxPagesintegerNo11–100Legacy-compatible page cap. Increase it for broader coverage.
maxRunSecondsintegerNo33001–3,300Stops the Actor from starting another page request after the time budget.

API clients may use username or user_id as compatible aliases for userId. If more than one alias is supplied, all values must resolve to the same account. The run stops at the first limit reached, so maxItems does not override a lower maxPages or time limit.

Example input

{
"userId": "https://x.com/apify",
"maxItems": 500,
"maxPages": 10,
"maxRunSeconds": 1200
}

Output

Each accepted following profile is written to the default Dataset exactly as it is returned. No field is renamed, added, or dropped, so integrations built on the current output keep working. The table below lists the keys that are commonly present; any additional field returned for a profile is passed through unchanged.

FieldTypeMeaning
user_idstringStable Twitter/X user ID when available.
screen_namestringUsername without @.
namestringDisplay name.
descriptionstringPublic profile biography.
profile_imagestringPublic profile image URL when available.
statuses_countnumberAvailable post count.
followers_countnumberAvailable follower count.
friends_countnumberAvailable following count.
media_countnumberAvailable media-post count.
created_atstringAccount creation time as returned for the profile.
verifiedbooleanLegacy verification flag when available.
is_blue_verifiedbooleanBlue verification flag when available.
locationstringPublic profile location when available.
profile_banner_urlstringPublic banner URL when available.

Example Dataset item

{
"user_id": "1384483118912897026",
"id_str": "1384483118912897026",
"screen_name": "apify",
"name": "Apify",
"description": "The full-stack web scraping and browser automation platform.",
"location": "Prague, Czechia",
"url": "https://t.co/example",
"protected": false,
"profile_image": "https://pbs.twimg.com/profile_images/example_normal.jpg",
"profile_banner_url": "https://pbs.twimg.com/profile_banners/example",
"statuses_count": 6042,
"followers_count": 15890,
"friends_count": 458,
"media_count": 982,
"favourites_count": 340,
"listed_count": 12,
"created_at": "Tue Apr 20 12:00:00 +0000 2021",
"verified": false,
"is_blue_verified": true,
"lang": "en"
}

CSV example

user_id,id_str,screen_name,name,followers_count,friends_count,listed_count,favourites_count,verified,is_blue_verified,location
1384483118912897026,1384483118912897026,apify,Apify,15890,458,12,340,false,true,"Prague, Czechia"

Run status and truncation

Operational status is saved separately in the key-value store record named OUTPUT; it is not written as a paid Dataset item. The summary reports pages fetched, requests and retries, observed and emitted items, duplicates, partial status, and one of these truncation reasons when applicable:

  • MAX_ITEMS — the unique-profile cap was reached.
  • MAX_PAGES — another page was available when the page cap was reached.
  • REPEATED_CURSOR — the continuation token repeated, so the Actor stopped safely.
  • PAGE_UNAVAILABLE — a later page remained unavailable after bounded retries.
  • TIME_BUDGET or CANCELLED — the Actor stopped before another page request.
  • DELIVERY_UNCERTAIN — a Dataset write could not be confirmed and was not replayed to avoid duplicate rows or charges.

An empty Dataset with status: "empty" means the request completed but no available following profiles were returned. status: "unavailable" means the public account or data could not be accessed. status: "partial" means accepted rows were preserved but the run stopped before confirmed exhaustion.

Reliability and billing behavior

Transient rate limits, server errors, and timeouts use bounded retries with backoff. Continuation tokens are normalized across supported response shapes, repeated tokens terminate safely, and duplicate profiles are suppressed before delivery.

The primary billing unit is one accepted profile written to the default Dataset. The existing Actor-start charge also applies. The separate OUTPUT summary is not a Dataset item. Dataset delivery and billing are not claimed to be transactionally exactly once: an ambiguous write is never retried automatically and is marked for reconciliation.

Common uses

  • Map the accounts a public creator, brand, analyst, or community account follows.
  • Build a bounded lead-review or partnership-research list.
  • Compare observed following snapshots collected at different times in your own workflow.
  • Export public profile fields to JSON, CSV, or Excel for analysis.
  • Schedule bounded runs or call the Actor through the Apify API and webhooks.

Limitations and responsible use

  • Only publicly available profiles and relationships accessible at run time can be returned.
  • Private, protected, suspended, unavailable, or rate-limited accounts may return no rows or partial rows.
  • Default maxPages remains 1 for compatibility. Increase it deliberately for broader coverage.
  • Large following lists can be truncated by item, page, time, availability, or platform limits.
  • Counts and profile fields can change and may be unavailable for some accounts.
  • A following snapshot does not reveal when a relationship began, whether it still exists later, or every relationship ever held.
  • Use public data lawfully and respect applicable privacy, platform, and data-retention requirements.

Support

If a run returns an unexpected status, include the run URL and the public source account in an issue on the Actor's Apify Issues tab. Do not include credentials, cookies, or private data.