# Threads Profile Scraper (`brick_joey_yto/threads-profile-scraper`) Actor

Scrape posts from any Threads profile at scale using browser automation.

- **URL**: https://apify.com/brick\_joey\_yto/threads-profile-scraper.md
- **Developed by:** [William Billings](https://apify.com/brick_joey_yto) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$30.00 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Profile Scraper — Extract Posts & Engagement From Any Threads Profile

Extract posts from any public Threads (threads.net) profile at scale for competitor monitoring, influencer analysis, and brand research. Get clean, structured data with engagement metrics, author profiles, and media — **no login required**. The only Threads scraper on Apify, powered by browser automation since Meta offers no public API.

### What data can you extract from Threads?

For each post, you get:

- **Post content** — full text, post URL, posted date, post ID
- **Author profile** — username, display name, bio, follower count, verification status
- **Engagement metrics** — likes, replies, reposts per post
- **Media** — image and video URLs with media type detection
- **Hashtags & mentions** — parsed and extracted from post text
- **Reply context** — whether a post is a reply, and the parent post URL if applicable

### Sample output

```json
{
  "post_id": "Cz1234567890",
  "username": "zuck",
  "display_name": "Mark Zuckerberg",
  "verified": true,
  "text": "Threads is growing fast. Excited to see creators building communities here.",
  "like_count": 45200,
  "reply_count": 1830,
  "repost_count": 2100,
  "posted_date": "2026-08-01T14:30:00.000Z",
  "post_url": "https://www.threads.net/@zuck/post/Cz1234567890",
  "has_media": true,
  "media_urls": ["https://scontent.cdninstagram.net/threads/example.jpg"],
  "media_types": ["image"],
  "is_reply": false,
  "parent_post_url": null,
  "hashtags": ["#Threads", "#Community"],
  "mentions": ["@mosseri"],
  "author": {
    "username": "zuck",
    "display_name": "Mark Zuckerberg",
    "verified": true,
    "bio": "Building Meta and Threads.",
    "followers": 4500000
  }
}
```

### How to use the Threads Profile Scraper

1. **Enter a username** — Provide the Threads username without the @ symbol (e.g., `zuck`)
2. **Set max posts** — Choose how many posts to extract (up to 1,000)
3. **Toggle replies** — Enable `includeReplies` if you want reply posts included in the results
4. **Optional: add cookies** — Provide Threads/Instagram cookies for authenticated access to more data (optional, not required for public profiles)
5. **Run the actor** — Click Start and get your data in minutes
6. **Export** — Download as JSON, CSV, XML, Excel, or HTML

### Input fields

| Field          | Type    | Required | Default | Description                                                 |
| -------------- | ------- | -------- | ------- | ----------------------------------------------------------- |
| username       | string  | Yes      | —       | Threads username without @ (e.g., `zuck`)                   |
| maxPosts       | integer | No       | 50      | Maximum number of posts to extract (1-1,000)                |
| includeReplies | boolean | No       | false   | Whether to include reply posts in the results               |
| cookies        | array   | No       | —       | Optional Threads/Instagram cookies for authenticated access |

### Use cases

- **Competitor monitoring** — Track competitor Threads activity and engagement trends over time
- **Influencer analysis** — Measure engagement rates and growth for top Threads creators
- **Content research** — Find top-performing posts in your niche to inform your content strategy
- **Brand monitoring** — Monitor what brands and thought leaders are saying on Meta's text platform
- **Audience analysis** — Understand who is active on Threads and what topics drive engagement
- **Academic research** — Study social media behavior on emerging text-first platforms
- **Lead generation** — Find active Threads users in your industry for outreach campaigns

### How much does it cost to scrape Threads?

**$0.03 per result.** You only pay for the data you actually receive — failed or empty requests are not charged.

| Results     | Cost    |
| ----------- | ------- |
| 50 posts    | ~$1.50  |
| 100 posts   | ~$3.00  |
| 500 posts   | ~$15.00 |
| 1,000 posts | ~$30.00 |

The first run is free under Apify's free tier, so you can test with a small batch before scaling up.

### Is scraping Threads legal?

Yes. This scraper only accesses publicly available data through browser automation of public Threads profiles. It does not bypass authentication or access private data. Always check Meta's Terms of Service for restrictions on how you use the data.

### FAQ

#### Do I need an Instagram or Threads account?

No login is required. The scraper uses browser automation to extract public profile data, so you do not need to provide any credentials. Optionally, you can provide cookies for authenticated access to see more data.

#### Can I scrape private profiles?

No, only public Threads profiles are supported. If a profile is set to private, the scraper will not be able to access its posts.

#### Does this scrape Instagram too?

No, this scraper is specifically for Meta Threads posts. It does not extract Instagram posts, stories, or reels. For Instagram scraping, use a dedicated Instagram scraper actor.

#### How many results can I get per run?

You can retrieve up to 1,000 results per run using the `maxPosts` parameter. Most profiles have fewer than 1,000 posts, so a single run is usually sufficient to capture the full post history.

#### Can I include reply posts in the results?

Yes. By default, replies are excluded. Enable the `includeReplies` option to include reply posts, which will also populate the `is_reply` and `parent_post_url` fields.

#### Can I integrate this with my existing pipeline?

Yes. Apify provides a REST API, webhooks, and integrations with Zapier, Make, Airbyte, and LangChain. You can schedule runs, export to S3 or Google Sheets, and chain actors together.

### Related actors

Check out our other social media scrapers:

| Actor                                                                              | Platform  | Use case                                |
| ---------------------------------------------------------------------------------- | --------- | --------------------------------------- |
| [Bluesky Search Scraper](https://apify.com/brick_joey_yto/bluesky-search-scraper)  | Bluesky   | Decentralized social posts & profiles   |
| [Substack Notes Scraper](https://apify.com/brick_joey_yto/substack-notes-scraper)  | Substack  | Writer platform notes                   |
| [BitChute Video Scraper](https://apify.com/brick_joey_yto/bitchute-search-scraper) | BitChute  | Alternative video platform data         |
| [Farcaster Cast Scraper](https://apify.com/brick_joey_yto/farcaster-scraper)       | Farcaster | Web3 social data                        |
| [Spoutible Profile Scraper](https://apify.com/brick_joey_yto/spoutible-scraper)    | Spoutible | Twitter alternative monitoring          |
| [Gab Search Scraper](https://apify.com/brick_joey_yto/gab-search-scraper)          | Gab       | OSINT & alternative platform monitoring |

### Support

Need a custom feature or found a bug? Open an issue on the Actor's page and we'll respond within 24 hours. We can also build custom scrapers for your specific use case — just reach out.

# Actor input Schema

## `username` (type: `string`):

Threads username without @ (e.g., zuck)

## `maxPosts` (type: `integer`):

Maximum number of posts to extract

## `includeReplies` (type: `boolean`):

Whether to include reply posts in the results

## `cookies` (type: `array`):

Optional: provide Threads/Instagram cookies for authenticated access to more data

## Actor input object example

```json
{
  "username": "zuck",
  "maxPosts": 50,
  "includeReplies": false
}
```

# 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 = {
    "username": "zuck"
};

// Run the Actor and wait for it to finish
const run = await client.actor("brick_joey_yto/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 = { "username": "zuck" }

# Run the Actor and wait for it to finish
run = client.actor("brick_joey_yto/threads-profile-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 '{
  "username": "zuck"
}' |
apify call brick_joey_yto/threads-profile-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/4B52Yvz0WqRPHi8E5/builds/usdxNWtpggYDEwSLX/openapi.json
