# Threads Search - Keyword & Profile Posts Scraper (No Login) (`tenfoldfleet/threads-search`) Actor

Find public Threads posts by keyword, hashtag or topic (top, recent and tag results) and collect the posts and replies of any Threads profile. Each row has the text, author, likes, replies, reposts, quotes, media URLs and post date. No login or cookies. $2.50 per 1,000 posts; failed inputs are free.

- **URL**: https://apify.com/tenfoldfleet/threads-search.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Social media, Agents, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 posts

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

Not affiliated with Meta or Threads. This Actor reads only public pages that anyone can open without an account.

### What does Threads Search do?

**Threads Search** finds **public Threads posts by keyword**, brand name, phrase or **#hashtag**, and collects the **posts and replies of any Threads profile**. It works like a **Threads search API**: give it a list of keywords and handles, and get back clean rows with the post text, author, **likes, replies, reposts, quotes**, media URLs, links, mentions and the exact post time.

For every keyword it can read three result tabs of Threads search: **Top** (most relevant), **Recent** (newest first) and **Topic tags**. For every profile it reads the profile's own posts and, if you want, the replies it wrote under other people's posts, each reply with the post it answers. It runs without a login, cookies or a browser, so it is fast and cheap: **$2.50 per 1,000 posts**, and empty searches or unavailable profiles cost nothing.

### Why use this Threads scraper?

- **Social listening**: track what people say about a topic, a product launch or a news story on Threads, newest posts first.
- **Brand monitoring**: run your brand, product and competitor names every day on a schedule and catch mentions and complaints early.
- **Creator and competitor research**: pull a profile's recent posts with engagement counts to see which formats and topics get likes and replies.
- **Influencer vetting**: get follower count, bio, verified badge and posting history for a list of handles in one run.
- **Datasets for AI and analytics**: send deduplicated post text with stable IDs and timestamps to a spreadsheet, BI tool, vector store or LLM.

### What data can it extract?

| Field | Example |
|---|---|
| `text` | Coffee fixes everything |
| `url`, `code`, `postId` | link to the post, short code, numeric ID |
| `author.username`, `author.fullName`, `author.isVerified`, `author.id` | nasa, NASA, true, 28829152388 |
| `likes`, `replies`, `reposts`, `quotes`, `shares` | 164769, 620, 11477, 654, 4170 |
| `mediaType`, `mediaUrls` | image / video / carousel / text, direct media links |
| `links`, `mentions`, `topic` | URLs in the post, @mentioned users, the Threads topic tag |
| `isReply`, `replyToUsername`, `replyTo` | the post a reply answers (code, URL, author, text) |
| `quotedPost` | the post being quoted, when there is one |
| `postedAt` | 2026-10-23T14:42:06.000Z |
| `matchedKeyword`, `sourceProfile`, `searchType` | where the row came from: top, recent, tags, profile-posts, profile-replies |
| Profile rows: `username`, `fullName`, `bio`, `followers`, `isVerified`, `isPrivate`, `profilePicUrl`, `bioLinks`, `userId` | one row per profile |

### How to search Threads posts by keyword

1. Open the Actor and add your **keywords** (one per line). Brand names, phrases and #hashtags all work.
2. Pick the **search tabs**: Top, Recent and Topic tags are all on by default.
3. Optional: add **profiles** as `@handle`, `handle` or a profile link, and switch on **Include the profile's replies** if you need them.
4. Set **Max posts per keyword or profile** (default 40).
5. Click **Start**, then download the results as JSON, CSV, Excel or HTML, or read them through the Apify API.

To monitor a brand, save the input as a task and add a daily schedule in Apify Console.

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

This Actor uses pay-per-event pricing, so you only pay for rows you get:

| Event | Price |
|---|---|
| Post (from a search or a profile) | **$2.50 per 1,000** ($0.0025 each) |
| Profile row | **$5.00 per 1,000** ($0.005 each) |
| Run start | $0.00005 per run |

Each post is charged once per run, even when several keywords or tabs find it. **Free:** keywords with no results, unknown or unavailable profiles, invalid handles and pages that stay blocked after retries are written as error rows and never charged. Proxy traffic and compute are included.

**Free Apify plan:** up to **50 results per run**. Any paid Apify plan removes the limit. Set a maximum cost per run in Apify Console if you want a hard cap.

### Input

```json
{
    "keywords": ["electric cars", "#coffee", "your brand name"],
    "searchTypes": ["top", "recent", "tags"],
    "usernames": ["@nasa", "zuck"],
    "includeReplies": true,
    "includeProfile": true,
    "maxPostsPerInput": 100
}
```

- `keywords`: words, phrases or #hashtags to search.
- `searchTypes`: any of `top`, `recent`, `tags`.
- `usernames`: handles or profile links.
- `includeReplies`: also collect the replies each profile wrote (counted separately from its posts).
- `includeProfile`: one profile row per handle (default on).
- `maxPostsPerInput`: limit per keyword, and per profile for posts and again for replies. Use 0 with `includeProfile` for profile rows only.

### Output

```json
{
    "type": "post",
    "postId": "3947519853926308903",
    "code": "DbIaGRtFFwn",
    "url": "https://www.threads.com/@zuck/post/DbIaGRtFFwn",
    "text": "Meta has always believed in giving people the power to share, connect, and shape your world in the ways you want...",
    "author": { "username": "zuck", "fullName": "Mark Zuckerberg", "isVerified": true, "id": "63055343223" },
    "likes": 1126,
    "replies": 187,
    "reposts": 87,
    "quotes": 17,
    "shares": 22,
    "mediaType": "text",
    "mediaUrls": [],
    "isReply": true,
    "replyToUsername": "meta",
    "replyTo": { "postId": "3947513500025400936", "code": "DbIYp0LEq5o", "username": "meta", "text": "We believe the future will have fewer barriers and more breakthroughs..." },
    "postedAt": "2026-07-23T10:04:19.000Z",
    "searchType": "profile-replies",
    "matchedKeyword": null,
    "sourceProfile": "zuck"
}
```

Profile rows have `"type": "profile"` and error rows have `"type": "error"` with the failed `input` and the reason in `error`. You can download the dataset as JSON, CSV, Excel, XML or HTML, or filter on `type` to split posts from profiles.

### Tips

- **More posts per topic:** Threads shows logged-out visitors roughly 30 to 40 unique posts per keyword (Top, Recent and Tags together), with no deeper paging. Add related keywords, spellings and hashtags to cover a topic; overlapping results are returned and charged once.
- **Newest posts:** the Recent tab gives the latest posts for a keyword (often from the last hour for busy topics). Schedule the run hourly or daily for monitoring.
- **Profiles go deeper:** profile posts and replies are paged 25 at a time, so a profile can return a few hundred posts. Raise `maxPostsPerInput` for that.
- **Only profile details:** set `maxPostsPerInput` to 0 and keep `includeProfile` on.

### FAQ

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

No. The Actor reads only what Threads shows to logged-out visitors. It never logs in and needs no cookies.

#### Why did a keyword return fewer posts than my limit?

Threads limits logged-out search results per keyword. The Actor collects all three tabs and stops when Threads has nothing more to show. Use more keywords to get more posts.

#### What happens with private or deleted profiles?

Threads sends logged-out visitors to its login page for profiles it does not show publicly. Those inputs get a free error row and are not charged.

#### Can I sort search results by date?

Yes. Keep `recent` in `searchTypes` to get the newest posts for each keyword. Every row also has `postedAt`, so you can sort or filter the whole dataset by time.

#### Can I use it with AI agents or the API?

Yes. Call it from the Apify API, the Apify MCP server or any Apify integration, and read the dataset as JSON.

### Disclaimer

This Actor collects public data only. Posts and profiles can contain personal data; you are responsible for processing it lawfully (for example under the GDPR) and for respecting the rights of the people in it. Threads is a trademark of Meta Platforms, Inc.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [ALDI Australia Scraper - AU Products, Unit Prices & Catalogue](https://apify.com/tenfoldfleet/aldi-australia-scraper) | product |
| [Alibaba Image Search - Reverse Lookup of Suppliers by Photo](https://apify.com/tenfoldfleet/alibaba-image-search) | matched product |
| [Alibaba Products Scraper: Wholesale Suppliers, MOQ, Price Tiers](https://apify.com/tenfoldfleet/alibaba-products-scraper) | product |
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [Applicant Tracking Jobs Scraper - Greenhouse, Lever & 6 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Businesses Without Websites - Local Leads with Phone & Rating](https://apify.com/tenfoldfleet/businesses-without-websites) | lead |
| [Contact Details Scraper - One Lead Record per Company Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [Facebook Ads Library Scraper for Marketers](https://apify.com/tenfoldfleet/facebook-ads-library-scraper) | ad |
| [Facebook Page Contact Finder - Business Leads from Page Links](https://apify.com/tenfoldfleet/facebook-page-contact-finder) | page with contact details |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Google Flights Scraper - All Fares per Route & Date (API)](https://apify.com/tenfoldfleet/google-flights-scraper) | route search |
| [Google Hotels Scraper - Nightly Prices, Stars & Booking Sites](https://apify.com/tenfoldfleet/google-hotels-scraper) | hotel |
| [Google for Jobs Scraper - Openings by City, Pay & Job Board](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google Maps Extractor - Business Leads, Phones & Websites](https://apify.com/tenfoldfleet/google-maps-extractor) | place |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Travel Hotel Rate Tracker - OTA Prices for Every Night](https://apify.com/tenfoldfleet/google-travel-hotel-rate-tracker) | offer |
| [Search Trends by Region & Time - Google Trends Data Scraper](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Instagram Reels Search - Keyword to Top Reels, Plays & Creators](https://apify.com/tenfoldfleet/instagram-reels-search) | reel |
| [Instagram Reels Transcript - Speech to Text for Public Reels](https://apify.com/tenfoldfleet/instagram-reels-transcript) | reel transcript |
| [Keyword Ideas & Related Keywords - Difficulty, Volume & CPC](https://apify.com/tenfoldfleet/keyword-ideas) | keyword idea |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Likee Scraper - Creators by Country, Video Views & Likes](https://apify.com/tenfoldfleet/likee-scraper) | video |
| [LinkedIn Ads Library Scraper - Competitor Ad Copy & Targeting](https://apify.com/tenfoldfleet/linkedin-ad-library-scraper) | ad |
| [Reddit Brand Monitoring - Keyword Alerts for Posts & Comments](https://apify.com/tenfoldfleet/reddit-brand-monitoring) | mention |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [SEEK Jobs Scraper - Salaries & Hiring Across 8 APAC Job Boards](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [SEO Agent - AI Keyword Research & Competitor Reports](https://apify.com/tenfoldfleet/seo-agent) | research report |
| [SEO Crawler - Technical SEO Audit Tool & On-Page Checker](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify Inventory Scraper - SKUs, Variants & In-Stock Status](https://apify.com/tenfoldfleet/shopify-products-scraper) | product |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Website Built With Checker - Find Any Site's CMS & Tech Stack](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [TikTok Transcripts - Captions or Speech to Text for Any Video](https://apify.com/tenfoldfleet/tiktok-transcripts) | video transcript |
| [HTML to Text & URL to Markdown - LLM Ready Web Content](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [WeChat Official Account Articles - Keyword Search to Markdown](https://apify.com/tenfoldfleet/wechat-official-account-articles) | article found |
| [Weibo Scraper - Comment Threads, Hot Search Ranks & User Stats](https://apify.com/tenfoldfleet/weibo-scraper) | comment |
| [Woolworths Product Scraper - AU Shelf Prices, Specials & GTINs](https://apify.com/tenfoldfleet/woolworths-product-scraper) | product |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [YouTube Channel Email Scraper - Creator Contact Extractor](https://apify.com/tenfoldfleet/youtube-channel-email-scraper) | channel with email |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |

# Actor input Schema

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

Words, brand names, phrases or #hashtags to search on Threads. Each keyword returns up to about 40 public posts (Threads shows logged-out visitors a limited number per search), so add several related keywords to cover a topic.

## `searchTypes` (type: `array`):

Which Threads search results to collect for each keyword: "top" (most relevant), "recent" (newest first) and "tags" (posts in matching topic tags). Posts found in more than one tab are returned once.

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

Threads profiles to collect posts from: @handles ("@nasa"), bare handles ("nasa") or profile links ("https://www.threads.com/@nasa"). Unknown or unavailable profiles are reported as a free error row.

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

Also collect the replies each profile wrote under other people's posts (the profile's Replies tab), each with the post it answers. Counted separately from the profile's own posts.

## `includeProfile` (type: `boolean`):

Add one row per profile with name, bio, follower count, verified badge, profile picture and bio links.

## `maxPostsPerInput` (type: `integer`):

Upper limit of posts for each keyword, and for each profile's posts (and again for its replies). Keyword searches usually stop at about 30-40 posts because that is all Threads shows without login; profiles page further back (a few hundred posts). Set 0 with "Include a profile row" on to get only profile rows. Free Apify plan: at most 50 results per run.

## `maxConcurrency` (type: `integer`):

How many keywords or profiles are scraped at the same time.

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

Apify datacenter proxy is used by default and is included in the price. Residential proxy groups are ignored.

## Actor input object example

```json
{
  "keywords": [
    "electric cars",
    "coffee"
  ],
  "searchTypes": [
    "top",
    "recent",
    "tags"
  ],
  "usernames": [
    "@nasa"
  ],
  "includeReplies": false,
  "includeProfile": true,
  "maxPostsPerInput": 40,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "keywords": [
        "electric cars",
        "coffee"
    ],
    "usernames": [
        "@nasa"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/threads-search").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": [
        "electric cars",
        "coffee",
    ],
    "usernames": ["@nasa"],
}

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/threads-search").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": [
    "electric cars",
    "coffee"
  ],
  "usernames": [
    "@nasa"
  ]
}' |
apify call tenfoldfleet/threads-search --silent --output-dataset

```

## MCP server setup

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

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/b1tl5hJskXCO3u4an/builds/XUXSxA55GEKn0n04z/openapi.json
