# Threads Profile Scraper: Followers, Bio & Links (`deepmine/threads-profile-scraper`) Actor

Scrape Meta Threads profiles by username or profile URL, no login: followers, name, bio, bio links, emails and phones in the bio, profile topics, verified and private flags, HD profile picture, and the linked Instagram account's follower and following counts.

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

## Pricing

from $1.99 / 1,000 results

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

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Threads Profile Scraper: Followers, Bio & Links

Scrape any public Threads profile by username with no login and get its followers, bio, links and Instagram counts as one clean row per profile.

| User | Name | Threads followers | Instagram followers | Verified | Bio |
|---|---|---|---|---|---|
| [natgeo](https://www.threads.com/@natgeo) | National Geographic | 18,352,427 | 268,461,216 | yes | Step into wonder and find your inner explorer with… |
| [nasa](https://www.threads.com/@nasa) | NASA | 12,755,471 | 104,294,031 | yes | Making the seemingly impossible, possible. ✨ |
| [zuck](https://www.threads.com/@zuck) | Mark Zuckerberg | 5,746,621 | 17,271,784 | yes | Mostly superintelligence and MMA takes |

<sub>Collected 2026-10-03 with this Actor's prefilled run (8 profiles: @zuck, @mosseri, @natgeo, @nasa, @netflix, @nike, @cnn, @instagram). $2.29 per 1,000 results on the Free plan and $1.99 on every paid plan, with no start fee. The prefilled run costs about $0.016 on Starter.</sub>

### What you get for each username

Type `mosseri`, `@mosseri` or a profile URL (threads.com or threads.net), one per line. Each profile is one row:

| Field | What it holds |
|---|---|
| `username`, `fullName`, `url`, `userId` | Who the account is |
| `followerCount` | Threads followers, exact (the page rounds them) |
| `instagramFollowerCount`, `instagramFollowingCount` | The linked Instagram account's counts, when Threads shows them |
| `bio`, `bioSnippet`, `bioLinks` | The bio text and every link in it (real URLs) |
| `emails`, `phones` | Emails and phone numbers written in the bio, when there are any |
| `profileTags` | The topics the account picked for its profile |
| `isVerified`, `isPrivate` | The verified badge and the private flag |
| `profilePicUrl`, `profilePicHdUrl` | Profile picture, small and full size |
| `latestPosts` | The account's 10 newest posts: text, likes, replies, date and link |
| `hasThreadsBadge`, `isThreadsOnlyUser`, `transparencyLabel` | The Threads badge, whether the account has no linked Instagram, and Meta's label (state media and the like) |

Use it to vet creators and brands before outreach, keep accounts' follower counts up to date on a schedule, or
enrich a list of handles with bios and links.

### Output

The Output tab opens on **👤 Profiles** (picture, name, bio, Threads and Instagram followers, verified, topics,
links). Every field has a label and a description in the dataset schema. In the prefilled run all 8 profiles
had their follower count, 7 of 8 their Instagram counts, 5 of 8 bio links and 4 of
8 profile topics. Picture links are signed by Threads and expire after a few days.

Need the posts too? **Threads Posts Scraper** gets any account's posts, replies and reposts on the same engine.

### Speed

Plain HTTPS on Apify datacenter IPs, no browser, 256 MB, three requests per profile. The prefilled run (8
profiles) took 8 s with the first row after 1.4 s (local run of this build
through Apify datacenter IPs, 2026-10-03).

### Pricing

Pay per result: **$2.29 per 1,000 on Free, $1.99 per 1,000 on Starter, Scale and Business**. No start fee. Only
results in your dataset are charged; filtered posts and repeats are free. Set a maximum cost per run in the run
options and the run stops exactly there. A run that Apify restarts never charges a result twice.

### FAQ

**Do I need a Threads or Instagram account?** No. Everything comes from what Threads shows logged-out
visitors, through Apify datacenter IPs (residential only as a fallback, at no extra cost to you).

**Private accounts?** You get their public profile row (followers, bio, picture), with `isPrivate` set.

**A username that doesn't exist?** It costs nothing; the run summary (`OUTPUT`) lists it as not found.

**Followers or following lists?** Threads shows those only to logged-in users, so this Actor doesn't offer them. You
get the exact follower count and the linked Instagram's counts.

**Is there a Threads API for profiles?** Meta's official Threads API only reads your own account. Call this Actor
from the Apify API, a schedule or an integration and get JSON, CSV or Excel for any public account.

### Related Actors

- [Threads Scraper](https://apify.com/deepmine/threads-scraper): search, profiles, posts and replies in one Actor.
- [Threads Search Scraper](https://apify.com/deepmine/threads-search-scraper): posts or accounts by keyword or hashtag.
- [Threads Posts Scraper](https://apify.com/deepmine/threads-posts-scraper): every post of an account, or posts by URL with views.
- [Threads Replies Scraper](https://apify.com/deepmine/threads-replies-scraper): every reply under a post, 3 levels deep.

### Feedback

Missing a field or an input type? Open an issue on the Actor's page; we answer quickly. If the data helped you, a
short review on the Store page helps others find it, and helps us a lot.

# Actor input Schema

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

Accounts, one per line: mosseri, @mosseri or threads.com/@mosseri. You get one profile row each.

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

Leave as is. The Actor starts on Apify datacenter IPs, which Threads serves, and moves a request to residential only if Threads refuses. Same price either way.

## Actor input object example

```json
{
  "usernames": [
    "zuck",
    "mosseri",
    "natgeo",
    "nasa",
    "netflix",
    "nike",
    "cnn",
    "instagram"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `profiles` (type: `string`):

No description

## `overview` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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",
        "natgeo",
        "nasa",
        "netflix",
        "nike",
        "cnn",
        "instagram"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/threads-profile-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",
        "natgeo",
        "nasa",
        "netflix",
        "nike",
        "cnn",
        "instagram",
    ] }

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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",
    "natgeo",
    "nasa",
    "netflix",
    "nike",
    "cnn",
    "instagram"
  ]
}' |
apify call deepmine/threads-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deepmine/threads-profile-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/h5V15xFUgdo9ah1Z0/builds/JFPCQPEVcDn0tYKQp/openapi.json
