Threads Account Scraper
Pricing
from $0.99 / 1,000 results
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 days ago
Last modified
Categories
Share
Extract public profile data from any Threads (Meta) user in bulk — username, full name, biography, follower count, profile picture, verification status, and the Threads user ID — as a clean structured JSON output.
Why use this actor
- No account / no login required — just give it a Threads username or profile URL.
- Accepts usernames or full URLs — pass
zuckorhttps://www.threads.com/@zuck, the actor normalizes both. - Sister to Instagram — Threads identities are still tied to Instagram, so this is the fastest way to enrich an IG-first list with Threads-side counters.
- Rich profile detail — full biography text, follower count, hi-res profile picture variants, verification badge, and the stable numeric
pkyou can use to cross-reference with other Threads or Instagram records. - Automatic retries — transient failures retry with exponential backoff; profiles that don't exist or are deactivated surface as
_error: "not_found"so you can triage failures. - Stable JSON output suitable for pipelines, spreadsheets, and databases — every row carries
_input,_source,_scrapedAtenvelope fields so you can join results back to your input list.
How it works
- You provide a list of Threads usernames (e.g.
zuck) or full profile URLs. - The actor fetches each profile page and reads the user record the same way the Threads web app shows it, then assembles a flat JSON record.
- Results stream into your dataset, ready to download as JSON, CSV, or Excel.
You do not need to manage scrapers, browsers, or rotating IPs — all handled internally.
Input
{"usernames": ["zuck","mosseri"],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["DATACENTER"]}}
| Field | Type | Description |
|---|---|---|
usernames | array | List of Threads usernames or profile URLs to scrape. Both zuck and https://www.threads.com/@zuck are accepted. |
proxyConfiguration | object | Apify Proxy settings. Datacenter proxy works for most cases; switch to Residential for very large jobs. |
Output
Input: zuck
{"_input": "zuck","_source": "S1-primary","_scrapedAt": "2026-05-18T10:58:52.093975+00:00","pk": "63055343223","id": "63055343223","username": "zuck","full_name": "Mark Zuckerberg","biography": "Mostly superintelligence and MMA takes","follower_count": 5456674,"is_verified": true,"text_post_app_is_private": false,"has_onboarded_to_text_post_app": true,"show_text_post_app_badge": true,"profile_pic_url": "https://instagram.fcgk12-1.fna.fbcdn.net/v/t51.82787-19/550174606_17925811725103224_8363667901743352243_n.jpg?stp=dst-jpg_s150x150_tt6...","hd_profile_pic_versions": [{ "height": 320, "width": 320, "url": "https://instagram.fcgk12-1.fna.fbcdn.net/.../s320x320..." },{ "height": 640, "width": 640, "url": "https://instagram.fcgk12-1.fna.fbcdn.net/.../s640x640..." }],"bio_links": [],"profile_tags": {"edges": [{ "node": { "display_name": "AI Threads", "name": "aithreads", "id": "18399895213044171" } },{ "node": { "display_name": "UFC Threads", "name": "ufcthreads", "id": "18398478472015746" } },{ "node": { "display_name": "AI", "name": "ai", "id": "18392111818029156" } },{ "node": { "display_name": "MMA", "name": "mma", "id": "18400625521011745" } },{ "node": { "display_name": "memes", "name": "memes", "id": "18402364270062744" } }]}}
| Field | Type | Description |
|---|---|---|
_input | string | The username or URL exactly as you supplied it. Use this to join results back to your input list. |
_source | string | Internal tag for the path used to fetch the record. S1-primary means the fastest, richest path; values starting with S2- indicate a fallback was used. |
_scrapedAt | string | ISO-8601 UTC timestamp when the record was scraped. |
pk | string | Threads' internal numeric user ID. Stable across username changes — same value as id. |
id | string | Mirror of pk. Both are returned for convenience. |
username | string | Threads handle (the part after @). |
full_name | string | Display name shown on the profile. |
biography | string | Free-text bio shown on the profile. |
follower_count | integer | Number of accounts following this profile. |
is_verified | boolean | true if Threads shows the verified badge. |
text_post_app_is_private | boolean | true if the profile is set to private on Threads. |
has_onboarded_to_text_post_app | boolean | true if the underlying Instagram account has activated its Threads identity. |
show_text_post_app_badge | boolean | true if the Threads badge is shown on the linked Instagram profile. |
profile_pic_url | string | URL of the standard-size profile picture. |
hd_profile_pic_versions | array | Higher-resolution profile picture variants (320px and 640px). Each item has height, width, url. |
bio_links | array | External links the user added to their bio. |
profile_tags | object | Topic tags the user picked for their profile (e.g. AI, MMA). Each tag has a display_name, slug name, and stable id. |
Error envelope
Profiles that don't exist, are deactivated, or fail to fetch return a structured error instead of crashing the run:
{"_input": "this-user-does-not-exist-xyz","_error": "not_found","_errorDetail": "profile not found","_source": "S1-primary","_scrapedAt": "2026-05-18T10:58:55.012345+00:00"}
Filter on _error to triage failed rows.
Pricing
This actor is billed per result: $6.00 per 1,000 profiles. Each successful profile = 1 result. Errors (not-found, deactivated) are not billed.
Other Sosmed Actors
| Platform | Actor | Best for |
|---|---|---|
| Threads | Threads Posts Scraper | Pull a user's Threads posts timeline |
| Threads | Threads Replies Scraper | Pull a user's replies timeline |
| Threads | Threads Post Detail Scraper | Full post detail by URL or shortcode |
| Instagram Account Scraper | Bio, followers, post count for an IG handle | |
| X / Twitter | X Account Scraper | Profile + tweet counts for any handle |
| Bluesky | Bluesky Account Scraper | atproto profile + counters |
| Facebook Page Scraper | Page info, follower / like counts |
Browse the full catalog at apify.com/xtracto.
Notes
- Threads identities are still backed by Instagram — if a user has never tapped "Join Threads" on Instagram,
has_onboarded_to_text_post_appisfalseand most Threads-specific fields will be empty. - Deactivated, banned, or never-existed profiles return
{"_error": "not_found", "_input": "..."}. - The numeric
pkis the most reliable identifier — usernames can change butpkdoes not, and it's the same ID used on the linked Instagram account. - Sister to the Instagram Account Scraper — pair the two to enrich a single creator list with both IG and Threads counters.
- Counters (
follower_count) are eventually-consistent and may lag the live network by a few minutes. - For large jobs (>500 profiles), switch
proxyConfigurationtoRESIDENTIALto avoid per-IP rate limits.