# Threads Post Scraper — Extract Meta Threads Posts and Replies (`mikolabs/threads-post-scraper-extract-meta-threads-posts-and-replies`) Actor

Extract public Meta Threads posts, full discussions, replies, author metrics, and media into structured data without logins, cookies, or API keys.

- **URL**: https://apify.com/mikolabs/threads-post-scraper-extract-meta-threads-posts-and-replies.md
- **Developed by:** [Mikolabs](https://apify.com/mikolabs) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.80 / 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.

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 Post Scraper — Extract Meta Threads Posts and Replies

Extract public Meta Threads posts, full discussions, replies, author metrics, and media into structured data without logins, cookies, or API keys.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-FF6B00?style=for-the-badge\&logo=apify\&logoColor=white)](https://apify.com)
[![Platform](https://img.shields.io/badge/Platform-Meta%20Threads-000000?style=for-the-badge\&logo=threads\&logoColor=white)](https://www.threads.net)
[![Authentication](https://img.shields.io/badge/Auth-No%20Login%20Required-4BC51D?style=for-the-badge)](https://apify.com)
[![Proxies](https://img.shields.io/badge/Proxies-Residential%20Enabled-7952DE?style=for-the-badge)](https://apify.com/pricing)

***

### ⚡ At a Glance

| Feature                 | Details                                                                                                                                   |
| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |
| **Target Platform**     | [Meta Threads](https://www.threads.net/) (`threads.net` and `threads.com`)                                                                |
| **Authentication**      | **None required** — no cookies, passwords, or developer API tokens                                                                        |
| **Data Extracted**      | Post text, collapsed attachments, author profiles, verified badges, engagement (likes/replies), media (images/videos), full reply threads |
| **Export Formats**      | JSON, JSONL, CSV, Excel (XLSX), XML, HTML, RSS                                                                                            |
| **Residential Proxies** | Pre-configured and enabled by default for seamless anti-bot bypass                                                                        |
| **Automation**          | Full REST API, Apify Python/JS SDKs, webhooks, and cron schedules                                                                         |

***

### 📌 What does Threads Post Scraper do?

**Threads Post Scraper** enables you to extract public data from [Meta Threads](https://www.threads.net/) into clean, ready-to-use structured datasets. Simply provide one or more Threads post URLs, and the scraper automatically extracts the complete post content along with all visible replies and nested comments.

#### Comprehensive Data Coverage

- 📝 **Full Post Contents**: Captions, body text, long-form text attachments, and collapsed snippets hidden inside mobile preview toggles.
- 💬 **Complete Discussion Threads**: All visible replies and nested conversations (replies to replies) with full author attribution.
- 👤 **Author Profiles & User Metrics**: Username, author profile picture (avatar), verified status (`user_verified`), user ID, and profile links.
- 🖼️ **Rich Media Content**: High-resolution image URLs, carousel sets, video URLs, and audio availability flags.
- 📊 **Engagement Metrics**: Up-to-date like counts and reply counts for both root posts and replies.
- ⏱️ **Metadata & Timestamps**: Exact publication times (Unix epoch timestamps), unique post IDs, numeric PKs, shortcodes, and canonical URLs.

***

### 🎯 Why scrape Meta Threads?

Meta Threads has hundreds of millions of active users and is rapidly growing into the leading platform for real-time conversations, breaking updates, and community discourse. It provides an unmatched stream of consumer sentiment, industry discussions, and viral commentary.

Here are some of the most popular ways businesses and researchers use Threads data:

- 📈 **Brand Monitoring & Reputation Management**: Monitor brand mentions, track sentiment, and identify emerging customer issues before they escalate.
- 🔍 **Market Research & Trend Discovery**: Follow emerging industry topics, viral memes, and discussions in real time.
- 🏆 **Competitor Intelligence**: Benchmark competitors' post frequency, engagement rates, and see what their audience discusses in comment sections.
- 🗣️ **Voice of Customer (VoC)**: Collect authentic user feedback, product reviews, and feature requests directly from comment threads.
- 🤖 **AI, NLP & LLM Training**: Feed conversational datasets into retrieval-augmented generation (RAG) pipelines, sentiment classifiers, and conversational AI agents.
- 📰 **Journalism & Digital Archiving**: Preserve immutable, timestamped records of notable statements, public figures' posts, and breaking news.
- 🌟 **Influencer & Creator Analytics**: Track engagement velocity, follower response, and viral impact across campaigns.

*Looking for industry-specific inspiration? Check out Apify's [industry solutions](https://apify.com/industries).*

***

### 📖 How to scrape Meta Threads

It's easy to scrape Meta Threads with Threads Post Scraper. Follow these simple steps:

1. **Open the Actor**: Click on **Try for free** or open **Threads Post Scraper** in the [Apify Console](https://console.apify.com/).
2. **Enter Post URLs**: Paste your target Threads post URLs into the **Start URLs** field (accepts both `threads.net` and `threads.com`).
3. **Configure Options**: The Actor is pre-configured with **Apify Residential Proxies** for reliable operation. Optionally set the maximum number of requests.
4. **Run the Scraper**: Click **Save & Start** (or **Run**).
5. **Download Your Data**: Once the run completes, preview and export your data from the **Dataset** tab in **JSON**, **CSV**, **Excel**, **XML**, or **HTML**.

***

### 📥 Input Configuration

| Parameter             | Type    | Required | Default                                                           | Description                                                                             |
| :-------------------- | :------ | :------- | :---------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |
| `startUrls`           | Array   | **Yes**  | `[{ "url": "https://www.threads.com/@openai/post/DW7RXR7EnRC" }]` | List of Threads post URLs to scrape (`threads.com` or `threads.net`).                   |
| `proxyConfiguration`  | Object  | Optional | Residential Proxy                                                 | Proxy configuration for anti-bot protection. Apify Residential Proxies are recommended. |
| `maxRequestsPerCrawl` | Integer | Optional | `100`                                                             | Maximum number of pages to scrape (`0` = unlimited).                                    |

#### Example Input (`input.json`)

```json
{
    "startUrls": [
        { "url": "https://www.threads.com/@openai/post/DW7RXR7EnRC" },
        { "url": "https://www.threads.net/@zuck/post/C-example123" }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    },
    "maxRequestsPerCrawl": 100
}
```

***

### 💰 How much will it cost to scrape Meta Threads?

Threads Post Scraper operates on a transparent, cost-effective pricing model of **$1.80 per 1,000 requests** ($0.0018 per request).

Apify provides **$5 in free usage credits every month** on the [Apify Free plan](https://apify.com/pricing). That means you can scrape **up to 2,700+ Threads posts every month completely free!**

***

### 📤 Results

The Actor pushes structured records to the default Apify dataset. Each item contains the primary post details in the `thread` object and all extracted comment items in the `replies` array.

#### Sample Output Record

```json
{
    "thread": {
        "text": "There’s a new Pro tier in town. \n\nTo celebrate the launch, we’re increasing Codex usage for a limited time...",
        "attachment_text": null,
        "published_on": 1775770338,
        "id": "3871764671238403138_63299409527",
        "pk": "3871764671238403138",
        "code": "DW7RXR7EnRC",
        "username": "openai",
        "user_pic": "https://scontent.cdninstagram.com/v/t51.82787-19/788716177_18115256264517701_n.jpg",
        "user_verified": true,
        "user_pk": "63299409527",
        "user_id": "63299409527",
        "has_audio": null,
        "reply_count": 28,
        "like_count": 217,
        "images": ["https://instagram.fna.fbcdn.net/v/t51.82787-15/661617063_18096549797517701_n.jpg"],
        "image_count": 1,
        "videos": [],
        "url": "https://www.threads.net/@openai/post/DW7RXR7EnRC"
    },
    "replies": [
        {
            "text": "MIGHT have to test the new tier. Looks impressive!",
            "attachment_text": null,
            "published_on": 1775770627,
            "id": "3871767105461481006_76614717151",
            "pk": "3871767105461481006",
            "code": "DW7R6s-Eu4u",
            "username": "tech_enthusiast",
            "user_pic": "https://scontent.cdninstagram.com/v/t51.82787-19/790319655_17943256095321890_n.jpg",
            "user_verified": true,
            "user_pk": "76614717151",
            "user_id": "76614717151",
            "has_audio": null,
            "reply_count": 0,
            "like_count": 5,
            "images": [],
            "image_count": 0,
            "videos": [],
            "url": "https://www.threads.net/@tech_enthusiast/post/DW7R6s-Eu4u"
        }
    ]
}
```

#### Dataset Fields Breakdown

| Field Name               | Type            | Description                                                         |
| :----------------------- | :-------------- | :------------------------------------------------------------------ |
| `thread.text`            | String          | Caption or body text of the main post.                              |
| `thread.attachment_text` | String | null  | Content of collapsed text attachments (`null` if none).             |
| `thread.published_on`    | Integer         | Post publication timestamp in Unix epoch seconds.                   |
| `thread.id`              | String          | Full unique Threads post identifier.                                |
| `thread.code`            | String          | Alphanumeric post shortcode (e.g., `DW7RXR7EnRC`).                  |
| `thread.username`        | String          | Author's Threads username.                                          |
| `thread.user_pic`        | String          | Direct URL to author's avatar image.                                |
| `thread.user_verified`   | Boolean         | `true` if author account has a verified badge.                      |
| `thread.like_count`      | Integer         | Total like count registered on the post.                            |
| `thread.reply_count`     | Integer         | Total replies count registered on the post.                         |
| `thread.images`          | Array\<String> | List of direct image URLs attached to the post.                     |
| `thread.videos`          | Array\<String> | List of direct video URLs attached to the post.                     |
| `thread.url`             | String          | Canonical URL of the post.                                          |
| `replies`                | Array\<Object> | List of extracted discussion replies with matching metadata fields. |

***

### 💻 Programmatic Usage & API

You can trigger Threads Post Scraper programmatically in your applications:

#### Python (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "startUrls": [{"url": "https://www.threads.com/@openai/post/DW7RXR7EnRC"}],
    "maxRequestsPerCrawl": 50,
}

run = client.actor("YOUR_USERNAME/threads-post-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["thread"]["username"], ":", item["thread"]["text"])
```

#### Node.js / JavaScript (`apify-client`)

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const input = {
    startUrls: [{ url: 'https://www.threads.com/@openai/post/DW7RXR7EnRC' }],
    maxRequestsPerCrawl: 50,
};

const run = await client.actor('YOUR_USERNAME/threads-post-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

***

### 💡 Tips for scraping Meta Threads

- 🎯 **Use Direct Post URLs**: Supply the exact post URL (`https://www.threads.net/@user/post/CODE` or `https://www.threads.com/@user/post/CODE`) for targeted and fast scraping.
- 🛡️ **Keep Residential Proxies Enabled**: Threads enforces strict anti-bot protections; residential proxies ensure reliable operation and avoid IP blocks.
- ⚙️ **Set Appropriate Limits**: Configure `maxRequestsPerCrawl` to manage data volume and stay comfortably within your monthly plan.
- 🔄 **Schedule Regular Runs**: Threads data updates frequently. Schedule runs hourly or daily using Apify's built-in scheduler to track reply velocity and conversation momentum.
- 📊 **Automate Downstream Pipelines**: Connect this Actor to Zapier, Make, Google Sheets, Slack, or webhooks to automatically ingest new discussions into your workflows.

***

### ⚖️ Is it legal to scrape Meta Threads?

Our scrapers are ethical and do not extract private user data. Threads Post Scraper extracts only publicly accessible data that Threads displays to logged-out visitors.

Please note that personal data is protected by GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

We also recommend that you read our comprehensive guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

***

### ❓ Frequently Asked Questions (FAQ)

#### Do I need a Meta Threads account or login credentials?

**No.** Threads Post Scraper works entirely without accounts, passwords, session cookies, or official API keys. It extracts only what is publicly visible to logged-out web visitors.

#### Does it work with both threads.com and threads.net URLs?

**Yes.** The scraper seamlessly handles canonical `threads.net` URLs as well as `threads.com` desktop and mobile links.

#### How many replies does it extract per post?

The Actor extracts all replies and nested conversations that Threads displays on the public post page. On viral posts with thousands of interactions, Threads displays the primary initial batch of replies.

#### Can I run this Actor via API?

**Yes.** Every Apify Actor can be triggered programmatically using Apify's [REST API](https://docs.apify.com/api/v2), Python SDK (`apify-client`), or JavaScript/TypeScript SDK.

***

### 📬 Support & Feedback

- **Bug Reports & Issues**: If you notice an issue with a specific Threads post, open a ticket on the **Issues** tab with the affected URL.
- **Email Support**: `xyz.mikolabs@gmail.com`
- **Rate this Actor**: If you find this scraper helpful, please leave a ⭐ rating on the Apify Store!

# Actor input Schema

## `startUrls` (type: `array`):

The URLs of the Threads posts to scrape (threads.com or threads.net). One dataset item is produced per URL.

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

Specifies proxy servers that will be used by the scraper in order to hide its origin.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of pages to scrape (0 = unlimited).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.threads.com/@claudeai/post/Dd1ymiBkROK"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxRequestsPerCrawl": 100
}
```

# Actor output Schema

## `dataset` (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 = {
    "startUrls": [
        {
            "url": "https://www.threads.com/@claudeai/post/Dd1ymiBkROK"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mikolabs/threads-post-scraper-extract-meta-threads-posts-and-replies").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 = { "startUrls": [{ "url": "https://www.threads.com/@claudeai/post/Dd1ymiBkROK" }] }

# Run the Actor and wait for it to finish
run = client.actor("mikolabs/threads-post-scraper-extract-meta-threads-posts-and-replies").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 '{
  "startUrls": [
    {
      "url": "https://www.threads.com/@claudeai/post/Dd1ymiBkROK"
    }
  ]
}' |
apify call mikolabs/threads-post-scraper-extract-meta-threads-posts-and-replies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mikolabs/threads-post-scraper-extract-meta-threads-posts-and-replies"
        }
    }
}
```

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/fSYIdWD85fOzmYh6X/builds/Jeqc2RRkEjMo223hR/openapi.json
