Twitter/X Following Scraper · Public Profiles
Pricing
from $1.50 / 1,000 results
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
Maintained by CommunityActor 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
| Field | Type | Required | Default | Range | Purpose |
|---|---|---|---|---|---|
userId | string | Yes | elonmusk | Username, X/Twitter profile URL, or numeric user ID | Identifies the public source account. The existing key is preserved for compatibility. |
maxItems | integer | No | 100000 | 1–100,000 | Hard cap on unique profiles written to the Dataset. The high default preserves legacy page-bounded behavior. |
maxPages | integer | No | 1 | 1–100 | Legacy-compatible page cap. Increase it for broader coverage. |
maxRunSeconds | integer | No | 3300 | 1–3,300 | Stops 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.
| Field | Type | Meaning |
|---|---|---|
user_id | string | Stable Twitter/X user ID when available. |
screen_name | string | Username without @. |
name | string | Display name. |
description | string | Public profile biography. |
profile_image | string | Public profile image URL when available. |
statuses_count | number | Available post count. |
followers_count | number | Available follower count. |
friends_count | number | Available following count. |
media_count | number | Available media-post count. |
created_at | string | Account creation time as returned for the profile. |
verified | boolean | Legacy verification flag when available. |
is_blue_verified | boolean | Blue verification flag when available. |
location | string | Public profile location when available. |
profile_banner_url | string | Public 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,location1384483118912897026,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_BUDGETorCANCELLED— 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
maxPagesremains1for 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.