# Threads Search Scraper 2026 (`devcake/threads-search-scraper`) Actor

Turn public Threads conversations into leads and market insights. Track keywords, collect profile posts, discover pain points, and export ready-to-use data.

- **URL**: https://apify.com/devcake/threads-search-scraper.md
- **Developed by:** [devcake](https://apify.com/devcake) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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?

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 search scraper

Turn public Threads conversations into structured, ready-to-use data. Search posts about brands, products, competitors, people, or emerging topics, or collect posts directly from public profiles.

Enter one or more profile usernames, one or more keywords, or both. The Actor searches every username and every keyword independently.

Request 20 posts per username or keyword on the free Apify plan, or choose from 20 to 500 on a paid plan. The default is 20. Limits apply separately to every entry and are not shared across the run. Threads may return fewer posts than requested.

### 🔎 What can this Threads scraper do?

- 🔎 **Search Threads posts by keyword** — use brand names, topics, products, campaign terms, or phrases.
- 👤 **Collect posts from profiles** — enter up to 20 Threads usernames, with or without `@`.
- 🧵 **Run multiple searches at once** — add up to 20 unique usernames and up to 20 unique keywords in one run.
- 📊 **Free-tier: 20 posts requested per entry** — each keyword query and each profile username has its own separate limit.
- 🎯 **Discover public lead signals** — find posts from people asking for recommendations, describing problems, or looking for products and services.
- 📝 **Capture useful post data** — including text, author details, engagement counts, media, links, and the original post URL.
- ✨ **Remove duplicate posts** — each search result is returned once per keyword.
- 📥 **Export Threads data** — view results in Apify or download them in formats such as JSON, CSV, and Excel.
- 🔁 **Repeat your research** — schedule runs and connect the dataset to your existing Apify workflows.

This Actor collects **public keyword-search results and public profile posts**. It does not scrape follower lists or complete comment conversations.

### 🎯 Popular use cases

#### Brand mention monitoring

Search company names, products, campaigns, executives, and common misspellings to review public brand mentions on Threads.

#### Social media keyword monitoring

Track the same topic regularly to see which public posts appear in Threads search, then use the dataset for reporting or further analysis.

#### Competitor research

Collect public posts that mention competing brands, products, launches, or industry terms. Compare themes and visible engagement without checking each keyword manually.

#### Content and trend research

Discover posts around a niche, event, news story, or emerging phrase and review how people discuss the topic.

#### Profile monitoring

Collect the latest public posts from a creator, executive, competitor, or brand account without relying on whether those posts appear in keyword search.

#### Lead generation and buying-signal discovery

Use focused keyword searches to find public Threads posts from people who express a need, ask for advice, compare options, or describe a problem your product or service may solve.

- 🎯 **Find people asking for recommendations** — search phrases such as `can anyone recommend`, `looking for`, or `best service for` together with your category.
- 💬 **Spot direct expressions of need** — look for posts containing phrases such as `I need`, `need help with`, or `where can I find`.
- 🧩 **Discover customer pain points** — collect conversations about recurring frustrations, missing features, and unresolved problems.
- 🔄 **Find people considering alternatives** — search competitor names alongside terms such as `alternative`, `replacement`, or `switching from`.
- ⏱️ **Focus on timely opportunities** — sort keyword results by Recent and use date filters to review newer public posts.
- 👤 **Research relevant public profiles** — collect recent posts from a promising public account to better understand its context and interests.
- 🔁 **Monitor demand signals repeatedly** — save and schedule searches for the phrases that matter to your market.

The Actor surfaces public posts and author information for lead research. It does not provide private contact details, verify purchase intent, score leads, or automate outreach. Review every result in context and communicate responsibly.

#### Market and audience research

Build a Threads post dataset for research, dashboards, editorial planning, lead discovery, or social listening. Any interpretation or sentiment analysis is up to you.

### 🚀 How to scrape Threads posts

#### Search by profile

1. Add one or more accounts to **Profile usernames**, with or without `@`.
2. Keep **Max posts per username or keyword** at 20 on the free plan, or choose from 20 to 500 on a paid plan.
3. Click **Run** and open the Dataset when the run finishes.

Every profile is searched independently. You can also add keywords in the same run; they are processed separately.

#### Search by keyword

1. Open the Actor input page.
2. Add one or more words or phrases to **Search keywords**.
3. Optionally add profile usernames to collect in the same run.
4. Keep **Max posts per username or keyword** at 20 on the free plan, or choose from 20 to 500 on a paid plan.
5. Click **Run** and open the Dataset when the run finishes.
6. Review the results in Apify or download them in your preferred format.

For more precise results, start with a specific phrase such as `electric vehicle charging` instead of a broad word such as `cars`. When monitoring a brand, include the brand name, product names, campaign phrases, and likely spelling variations as separate keywords.

### 📥 Threads scraper input example

The main public search inputs are:

| Field | What to enter | Limit |
|---|---|---:|
| `usernames` | Threads profile usernames, with or without `@` | Up to 20 |
| `keywords` | Words or phrases to find in public Threads posts | Up to 20 |
| `maxResults` | Maximum posts for every username and every keyword | Free: 20; paid: 20–500; default 20 |

Profile example:

```json
{
  "usernames": [
    "zuck",
    "sama"
  ],
  "maxResults": 20
}
```

Keyword example:

```json
{
  "keywords": [
    "openai",
    "artificial intelligence"
  ],
  "maxResults": 20
}
```

Each example can return up to 20 posts for every listed username or keyword. You can combine `usernames` and `keywords` in one input; neither list suppresses the other, and their result limits are not combined. The final count may be lower when Threads has fewer public results.

Temporary connection failures are retried up to twice. If a keyword search still fails after collecting posts, those posts remain in the dataset and the search summary reports the failure and saved count. A run where every search fails still ends as failed, even when partial results are available.

### 📤 Threads post scraper output example

Each dataset item represents one public Threads post returned by keyword or profile search:

```json
{
  "search_type": "keyword",
  "query": "openai",
  "sort": "top",
  "post_id": "1234567890123456789",
  "code": "ABC123",
  "url": "https://www.threads.com/@example/post/ABC123",
  "text": "A new OpenAI product update is here.",
  "timestamp": "2026-09-11T14:30:00Z",
  "author": {
    "id": "987654321",
    "username": "example",
    "full_name": "Example User",
    "is_verified": false,
    "is_private": false,
    "profile_pic_url": "https://example.com/profile.jpg"
  },
  "like_count": 128,
  "reply_count": 14,
  "quote_count": 3,
  "repost_count": 21,
  "is_reply": false,
  "media": [
    {
      "type": "image",
      "url": "https://example.com/image.jpg",
      "width": 1280,
      "height": 960
    }
  ],
  "external_links": [
    "https://example.com/news"
  ]
}
```

These values are illustrative. Fields can be empty when a post has no media, external link, available engagement count, or optional author detail.

### 🧾 What Threads data can you collect?

| Data | Description |
|---|---|
| Search type | Whether the post came from keyword or profile search |
| Search input | The keyword or profile username that produced the result |
| Post text | The public text of the Threads post |
| Post link | A direct link to the original post |
| Post identifiers | The post ID and short post code |
| Publication time | When the post was published, when available |
| Author | Username, display name, profile image, and public account details |
| Engagement | Likes, replies, quotes, and reposts, when available |
| Reply status | Whether Threads identifies the result as a reply |
| Media | Image or video links and available dimensions |
| External links | Links shared in the post or its preview |

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

This Actor is **free to use**. You only pay for the Apify platform resources used during a run. Cost depends on the number and size of your searches, so start with fewer usernames or keywords when testing a new search.

Free-tier usage is limited separately for every target:

- 👤 **Each username:** requests 20 public profile posts.
- 🔎 **Each keyword query:** requests 20 public search posts.

There is no shared 20-post run allowance. For example, a free-tier run with three usernames and two keywords can produce up to 100 records (20 for each entry), subject to what Threads returns.

Paid plans can request from 20 to 500 posts per entry. Profile searches collect public posts, and Threads may return fewer results than requested.

Requests below 20 are not accepted. Free-tier requests above 20 are also rejected. Paid status is determined by Apify, not by input fields, and all searches still consume Apify platform resources.

### ❓ Frequently asked questions

#### What is a Threads scraper?

A Threads scraper collects public information from Threads in a structured dataset. This Actor finds posts by keyword or collects posts from a specified public profile, returning text, author details, engagement, media, links, and original URLs.

#### Can I search Threads posts by keyword?

Yes. Add up to 20 keywords or phrases. The result limit is 20 on the free plan or from 20 to 500 on a paid plan. The Actor searches every keyword independently and labels every post with the query that found it, making multi-topic datasets easy to filter and compare.

#### Can I collect posts from a Threads profile?

Yes. Enter up to 20 usernames in **Profile usernames**. The result limit is 20 on the free plan or from 20 to 500 on a paid plan. You may include or omit the leading `@`. Keywords can be included in the same run and are searched independently.

#### How do you track keywords and brand mentions on social media?

Create a focused list of brand names, product names, campaign phrases, executive names, and spelling variations. Run them as separate keywords, then filter the resulting dataset by query. For ongoing Threads monitoring, save the input and schedule repeat runs through Apify. Remember that the results reflect public posts available in Threads search at run time.

#### Can I scrape followers or complete conversations?

No. This Actor collects public posts from keyword results or a specified profile. It does not collect follower or following lists, private content, or every reply in a conversation. A result may itself be marked as a reply, and the output can include its visible reply count.

#### How many Threads posts can I collect?

Free-tier users request 20 posts for each username and each keyword query. Paid users can request from 20 to 500 per entry. The default is 20 on every plan. The run total is the sum of the results from all entries, so it may exceed 20. The actual total can be lower when Threads provides fewer public results.

#### Is web scraping legal in the US?

Web scraping rules depend on the data, purpose, jurisdiction, contracts, and how the results are used. This Actor collects public search results, but that does not remove your responsibility to follow applicable laws, privacy requirements, and platform terms. If your use case involves personal data or regulated activity, seek qualified legal guidance.

### 🛡️ Responsible use

Use this Threads data scraper only for lawful purposes. Collect and store only the information you need, respect privacy and intellectual-property rights, follow Meta's terms and applicable regulations, and avoid using the results for spam, harassment, surveillance, or discrimination.

# Actor input Schema

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

Add one or more Threads usernames, with or without @. Each public profile is collected independently. Free-tier users request 20 posts for each username.

## `keywords` (type: `array`):

Add brand names, topics, products, campaigns, people, or phrases. Every keyword is searched independently. Free-tier users request 20 posts for each query.

## `maxResults` (type: `integer`):

Choose how many posts to collect separately for every username and every keyword. The default is 20. Free-tier users request 20 posts per entry; paid users can request from 20 to 500. Threads may return fewer posts.

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

Top returns the most relevant posts. Recent returns the newest posts first. Applies to keyword search.

## `afterDate` (type: `string`):

Only return posts published on or after this date (UTC). Format YYYY-MM-DD.

## `beforeDate` (type: `string`):

Only return posts published on or before this date (UTC). Format YYYY-MM-DD. Must be on or after the start date.

## Actor input object example

```json
{
  "keywords": [
    "AI slop"
  ],
  "maxResults": 20,
  "sort": "top"
}
```

# Actor output Schema

## `posts` (type: `string`):

Structured public Threads posts labeled with their keyword or profile search source.

## `runSummary` (type: `string`):

Per-keyword and per-username result counts and completion status.

## `refreshedCookies` (type: `string`):

Protected record created only during an authorized account-maintenance run.

# 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 = {
    "keywords": [
        "AI slop"
    ],
    "maxResults": 20,
    "sort": "top"
};

// Run the Actor and wait for it to finish
const run = await client.actor("devcake/threads-search-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 = {
    "keywords": ["AI slop"],
    "maxResults": 20,
    "sort": "top",
}

# Run the Actor and wait for it to finish
run = client.actor("devcake/threads-search-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 '{
  "keywords": [
    "AI slop"
  ],
  "maxResults": 20,
  "sort": "top"
}' |
apify call devcake/threads-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,devcake/threads-search-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/fuEd90rWuEHrBrWtC/builds/DBIBRoZ51ZVbwttHU/openapi.json
