# Threads Replies Scraper: Comments Under Any Post (`deepmine/threads-replies-scraper`) Actor

Scrape the replies (comments) under any Meta Threads post, no login: paste post URLs and get the post with its view count, then every reply and the replies to those, 3 levels deep, Top or Recent. Likes, reply counts, authors, media and dates.

- **URL**: https://apify.com/deepmine/threads-replies-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 Replies Scraper: Comments Under Any Post

Get the replies (comments) under any public Threads post with no login: paste a post link and get every reply with its view count as a table, then the post itself with how many replies were collected.

| Type | User | Text | Likes | Replies | Views | Posted |
|---|---|---|---|---|---|---|
| reply | [isaacandydaily](https://www.threads.com/@isaacandydaily/post/Dd_mdaQCihD) | Thanks for the tips, Adam! | 1 | 0 | – | 2026-10-02 |
| reply | [graystaffmedia](https://www.threads.com/@graystaffmedia/post/Dd_mriOlime) | You should pay attention to your bot problem. #inf… | 4 | 0 | – | 2026-10-02 |
| post | [mosseri](https://www.threads.com/@mosseri/post/Dd_mV-4iVTT) | Three DM settings worth knowing about. Let me know… | 238 | 59 | 14,124 | 2026-10-02 |

<sub>Collected 2026-10-03 with this Actor's prefilled run (2 posts by @mosseri, 45 replies each: 92 results). $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.18 on Starter.</sub>

### What you get for each post

Paste post links, one per line: `threads.com/@user/post/<code>`, `threads.net/...` or `threads.com/t/<code>`.

- First the **post itself**, with its `viewCount` (the number Threads shows under the post), likes, replies,
  reposts, shares and media.
- Then its **replies**, Top (Threads' order) or Recent (newest first), paged to the end or to **📊 Max replies per
  post**.
- With **Include replies to replies** (on), the replies to each reply follow it, up to 3 levels deep. Each row has
  `replyDepth` (1 = a direct reply) and `parentPostId` / `parentPostUrl` to rebuild the thread.

Use it for comment sentiment on a brand's or creator's posts, to find the people engaging with a competitor,
moderation and research datasets, or to track a viral post's conversation.

### Output

The Output tab opens on **💬 Replies** (author, text, depth, who it answers, likes) and **👁️ Views and authors**. Every field
has a label and a description in the dataset schema. Each row:

- who: `username`, `fullName`, `profilePicUrl`, `isVerified`
- what: `text`, `textSnippet`, `url`, `createdAt`, `language`
- engagement: `likeCount`, `replyCount`, `repostCount`, `quoteCount`, `shareCount` and `viewCount` (Threads hides
  many zero counts; those come back empty)
- media: `mediaType`, `thumbnailUrl`, `mediaUrl`, `images`, `videos`, `carouselCount`
- `hashtags`, `mentions`, `links` (real URLs, not Threads' redirect links), `emails`, `topicTag`, link preview
  (`linkPreviewUrl`, `linkPreviewTitle`)
- replies and quotes: `isReply`, `replyToUsername`, `parentPostUrl`, `parentPostText`, `replyDepth`,
  `isQuotePost`, `quotedPostUrl`, `quotedPostText`
- author (on by default for every reply and the post itself, one lookup per author per run): `authorFollowerCount`, `authorBio`,
  `authorProfilePicHdUrl`, `authorProfileTags`, `authorInstagramFollowerCount`, `authorBioLinks`
- also: `imageCount`, `gifUrl`, `gifDescription`, `canReply`, `areCountsHidden`, `transparencyLabel`
- on the post itself (its row comes after its replies): `collectedReplyCount` (replies this run collected) and
  `isPublicSubset` (true when that's fewer than the post's reply count: Threads shows logged-out visitors part of
  them, or your cap stopped first)
- ids and source: `postId`, `code`, `userId`, `inputType`, `input`, `scrapedAt`

**👤 Author details on every post** (on) adds the followers, bio, HD photo and topics of each reply's author and of
the post's own author, looked up once per author; **👁️ View counts on every reply** (on) reads each reply's own page for its `viewCount`, alongside the rows. Same
price. Times are UTC. Picture and media links are signed by Threads and expire after a few days.

### Speed

Plain HTTPS on Apify datacenter IPs, no browser, 256 MB. The prefilled run (92 results, replies to
replies on) took 20 s with the first row after 4.9 s (local run of this build
through Apify datacenter IPs, 2026-10-03). On the Apify platform the same engine read one post's 500 replies and replies
to replies in 44 s, and 1,000 in 96 s.

**Posted after** / **Posted before** keep only replies in a date window; replies outside it are not charged.

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

**Do I get every reply?** Every reply Threads shows logged-out visitors, paged to the end. Replies hidden by the
author or by Threads aren't shown to anyone logged out.

**Several posts at once?** Yes, paste as many links as you like; they're read one after another, and the run summary
(`OUTPUT`) lists each post with its result count and why it stopped.

### 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 Profile Scraper](https://apify.com/deepmine/threads-profile-scraper): followers, bio, links and the linked Instagram's counts.
- [Threads Posts Scraper](https://apify.com/deepmine/threads-posts-scraper): every post of an account, or posts by URL with views.

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

## `postUrls` (type: `array`):

Post links, one per line (threads.com/@user/post/... or threads.com/t/...). You get the post with its view count, then its replies.

## `maxItemsPerInput` (type: `integer`):

Most replies per post, replies to replies included. The post row itself is extra.

## `sort` (type: `string`):

Top is Threads' own order; Recent puts the newest replies first.

## `includeNestedReplies` (type: `boolean`):

Under each reply, add the replies to it, up to 3 levels deep. Each row has replyDepth and parentPostId to rebuild the tree.

## `postedAfter` (type: `string`):

A date (2026-09-01) or a period (7 days, 12 hours). Empty = any time. Posts outside the window are not charged.

## `postedBefore` (type: `string`):

A date (2026-09-30) or a period. Empty = up to now.

## `includeAuthorDetails` (type: `boolean`):

Add each reply author's followers, bio, HD photo, topics, Instagram followers and bio links to every row (looked up once per author). Same price.

## `includeReplyViewCounts` (type: `boolean`):

Read each reply's view count (viewCount): one more page per reply, read alongside the rows so the first row doesn't wait. Turn off for the fastest big reply runs. Same price.

## `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
{
  "postUrls": [
    "https://www.threads.com/@mosseri/post/Dd_mV-4iVTT",
    "https://www.threads.com/@mosseri/post/Dd_ldFyloAn"
  ],
  "maxItemsPerInput": 45,
  "sort": "top",
  "includeNestedReplies": true,
  "includeAuthorDetails": true,
  "includeReplyViewCounts": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `replies` (type: `string`):

No description

## `views` (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 = {
    "postUrls": [
        "https://www.threads.com/@mosseri/post/Dd_mV-4iVTT",
        "https://www.threads.com/@mosseri/post/Dd_ldFyloAn"
    ],
    "maxItemsPerInput": 45
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/threads-replies-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 = {
    "postUrls": [
        "https://www.threads.com/@mosseri/post/Dd_mV-4iVTT",
        "https://www.threads.com/@mosseri/post/Dd_ldFyloAn",
    ],
    "maxItemsPerInput": 45,
}

# Run the Actor and wait for it to finish
run = client.actor("deepmine/threads-replies-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 '{
  "postUrls": [
    "https://www.threads.com/@mosseri/post/Dd_mV-4iVTT",
    "https://www.threads.com/@mosseri/post/Dd_ldFyloAn"
  ],
  "maxItemsPerInput": 45
}' |
apify call deepmine/threads-replies-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deepmine/threads-replies-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/nGa4dsx63rxmiuwGb/builds/36cxioajXFVaZm4eE/openapi.json
