# Threads Account Scraper (`xtracto/threads-account-scraper`) Actor

Get Threads profile data without login.

- **URL**: https://apify.com/xtracto/threads-account-scraper.md
- **Developed by:** [Farhan Febrian Nauval](https://apify.com/xtracto) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Threads Account Scraper

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 `zuck` or `https://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 `pk` you 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`, `_scrapedAt` envelope fields so you can join results back to your input list.

### How it works

1. You provide a list of Threads usernames (e.g. `zuck`) or full profile URLs.
2. 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.
3. 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

```json
{
  "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`

```json
{
  "_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:

```json
{
  "_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](https://apify.com/xtracto/threads-account-threads-scraper) | Pull a user's Threads posts timeline |
| Threads | [Threads Replies Scraper](https://apify.com/xtracto/threads-account-replies-scraper) | Pull a user's replies timeline |
| Threads | [Threads Post Detail Scraper](https://apify.com/xtracto/threads-post-detail-scraper) | Full post detail by URL or shortcode |
| Instagram | [Instagram Account Scraper](https://apify.com/xtracto/instagram-account-scraper) | Bio, followers, post count for an IG handle |
| X / Twitter | [X Account Scraper](https://apify.com/xtracto/x-account-scraper) | Profile + tweet counts for any handle |
| Bluesky | [Bluesky Account Scraper](https://apify.com/xtracto/bluesky-account-scraper) | atproto profile + counters |
| Facebook | [Facebook Page Scraper](https://apify.com/xtracto/facebook-page) | Page info, follower / like counts |

Browse the full catalog at [apify.com/xtracto](https://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_app` is `false` and most Threads-specific fields will be empty.
- Deactivated, banned, or never-existed profiles return `{"_error": "not_found", "_input": "..."}`.
- The numeric `pk` is the most reliable identifier — usernames can change but `pk` does not, and it's the same ID used on the linked Instagram account.
- Sister to the [Instagram Account Scraper](https://apify.com/xtracto/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 `proxyConfiguration` to `RESIDENTIAL` to avoid per-IP rate limits.

# Actor input Schema

## `usernames` (type: `array`):

List of Threads usernames or full profile URLs to scrape. Both `zuck` and `https://www.threads.com/@zuck` are accepted.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. Datacenter proxy works for most cases; switch to Residential for very large jobs.

## Actor input object example

```json
{
  "usernames": [
    "zuck",
    "mosseri"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "usernames": [
        "zuck",
        "mosseri"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/threads-account-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "usernames": [
        "zuck",
        "mosseri",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("xtracto/threads-account-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "usernames": [
    "zuck",
    "mosseri"
  ]
}' |
apify call xtracto/threads-account-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=xtracto/threads-account-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Threads Account Scraper",
        "description": "Get Threads profile data without login.",
        "version": "1.0",
        "x-build-id": "59mxi4rEMQaLTftXN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~threads-account-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-threads-account-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/xtracto~threads-account-scraper/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-threads-account-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/xtracto~threads-account-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-threads-account-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "usernames"
                ],
                "properties": {
                    "usernames": {
                        "title": "Threads usernames or profile URLs",
                        "type": "array",
                        "description": "List of Threads usernames or full profile URLs to scrape. Both `zuck` and `https://www.threads.com/@zuck` are accepted.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. Datacenter proxy works for most cases; switch to Residential for very large jobs.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
