Threads Search Scraper โ€” Keywords, Hashtags, Accounts avatar

Threads Search Scraper โ€” Keywords, Hashtags, Accounts

Pricing

from $1.40 / 1,000 posts

Go to Apify Store
Threads Search Scraper โ€” Keywords, Hashtags, Accounts

Threads Search Scraper โ€” Keywords, Hashtags, Accounts

Search Meta Threads by keyword or hashtag and get every public post as a row: text, author, time, likes, replies, reposts, images, videos, links and mentions. Top, recent and tag pages in one pass, deduplicated. Finds matching accounts too. No login, no browser.

Pricing

from $1.40 / 1,000 posts

Rating

5.0

(6)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

36

Total users

20

Monthly active users

11 hours ago

Last modified

Share

Threads Search Scraper turns a keyword or a hashtag into rows of public Threads posts: text, author, time, likes, replies, reposts, quotes and shares, images and videos, links, mentions and hashtags. It reads the top, recent and tag result pages in one pass and removes duplicates, so a search returns what Threads actually shows a visitor โ€” not one slice of it. It can also return the accounts behind a keyword instead of their posts. No login, no cookies, no browser.

One run of Threads Search Scraper: posts for a keyword with text, author and engagement.

Paste keywords or #hashtags, click Start, export as JSON, CSV or Excel โ€” or call it from the API and from AI agents.

Tested head-to-head โ€” 26 September 2026

Threads Search Scraper tested against the six most-used Threads search scrapers: 20 of 20 posts mention the keyword, $2 per 1,000 posts

The same request went to this Actor and to the six most-used Threads search Actors on the Apify Store, from an ordinary paying account: keyword coffee, 20 posts. Threads answers a keyword with whole threads, so a scraper that keeps every post in a thread hands you the replies and root posts around the match too. This Actor puts the posts that contain your keyword first; every row carries containsKeyword, and Only posts that contain the keyword removes the rest.

This ActorThe six others
Posts returned (20 asked)2015โ€“20
Posts that mention "coffee"20 of 204โ€“17 of 20
Fee for starting a runNonefive of six charge one ($0.00005โ€“0.08)
Cost per 1,000 posts delivered$2.00$2.49โ€“21.00

What is it for?

Social listening and brand monitoring, tracking a campaign hashtag, watching a competitor's mentions, collecting posts for research, and AI agents asked "what are people saying about X on Threads". Threads' official API only covers your own account; this Actor reads the public pages Threads serves to any visitor, so any public post is in reach.

ModeYou giveYou get
Searchkeywords, #hashtagspublic posts from the top, recent and tag pages, deduplicated
Accountskeywordspeople and brands matching the keyword, optionally with full profile details

searchTypes decides which result pages are read (top, recent, tags), postedAfter cuts everything older than a date, and filterKeywords keeps only posts that contain one of your words.

What data does it return?

FieldExample
id, code, url3977518562965884838 ยท Dcy_A8pGo-m ยท https://www.threads.net/@zuck/post/Dcy_A8pGo-m
text, language"Muse Spark 1.3 is rolling out todayโ€ฆ" ยท en
createdAt, timestamp2026-09-02T19:26:23.000Z ยท 1788377183
username, userId, fullName, isVerified, profilePicUrl, profileUrlzuck ยท 63055343223 ยท Mark Zuckerberg ยท true ยท โ€ฆ
likeCount, replyCount, repostCount, quoteCount, shareCount1453 ยท 196 ยท 148 ยท 28 ยท 78
viewCountthe views Threads prints under the post, read from the post's own page; null while Threads has not made them public yet (very new posts)
mediaType, imageUrl, videoUrl, images[], videos[]carousel ยท โ€ฆ ยท [{url,width,height,alt}] ยท [{url,thumbnail,hasAudio}]
hashtags, mentions, urls, linkPreview["ai"] ยท ["natgeo"] ยท ["https://โ€ฆ"] ยท {url, title, imageUrl}
isQuote, quotedPost, isRepost, repostedPostthe quoted or boosted post, inline
source, querysearch-top ยท search-recent ยท search-tag ยท the keyword that found the row

Account rows carry username, userId, fullName, biography, bioLinks, websiteUrl, emails and phones from the bio, followerCount, isVerified, isPrivate, profilePicUrl, profileUrl.

How much does it cost?

Pay per row, no start fee, and error rows are free. There is no browser here, so platform usage is close to zero.

RowPrice
Post$0.002 โ€” 1,000 posts for $2
Account match$0.002
Account with full profile details$0.004

Larger monthly plans get 10โ€“30 % off.

Bulk export: what 50,000 posts actually cost

This Actor is built for bulk jobs โ€” put hundreds of inputs into one run, or call it from the API on a schedule. There is no fee per run, no fee per page and no proxy charge: you pay for the rows you keep, and error rows are free. That is what decides the bill once you pull a whole market rather than a single account.

JobThis ActorMost-used Actor in this category
50,000 posts across 100 runs$100$127

Checked on the Apify Store on 21 September 2026 against the Actor with the most monthly users in this category; its per-run fee is counted in, as ours would be if we charged one. Some Actors here ask less per row โ€” this table compares against the one buyers actually use most.

How to search Threads

  1. Put your terms in ๐Ÿ”Ž Keywords or hashtags โ€” bali, #ai, a brand name, one per line.
  2. Pick the result pages in ๐Ÿ”Ž Search result pages: top is what Threads ranks highest, recent is the live feed, tags is the hashtag page.
  3. Set ๐Ÿ“… Only posts after when you want new posts only โ€” that turns a repeated run into monitoring.
  4. Switch ๐Ÿงญ What to get to users to search accounts instead of posts.
  5. Click Start, then export as JSON, CSV or Excel, or read the dataset from the API.

โฌ‡๏ธ Input

{
"mode": "search",
"keywords": ["#ai", "artificial intelligence"],
"searchTypes": ["top", "recent"],
"maxPosts": 200
}

Brand monitoring, only what is new since a date:

{ "mode": "search", "keywords": ["apify"], "postedAfter": "2026-09-01", "includeProfile": true, "maxPosts": 100 }

Accounts instead of posts:

{ "mode": "users", "keywords": ["photographer"], "maxUsersPerKeyword": 50 }

Every input field

FieldWhat it does
modesearch โ€” posts matching your terms. users โ€” accounts matching them.
keywordsTerms or hashtags. #ai searches the hashtag page, plain words the post index.
searchTypesWhich result pages to read: top, recent, tags. Fewer pages, fewer duplicates.
startUrlsThreads search or tag URLs, when you already have the link.
maxPostsPosts per keyword. Billing is per row, so this is your budget per term.
postedAfterDrop anything older. The field that turns this into a monitor.
filterKeywordsSecond filter applied to the text: keep only posts that also contain one of these.
includeProfileAdd a profile row for each author โ€” followers, bio, links, contacts.
maxUsersPerKeywordAccounts per term in users mode.
includeViewsFill viewCount from each post's page (on by default, no extra charge). Turn off for the fastest bulk runs.
maxItemsCeiling on rows for the whole run.

โฌ†๏ธ Output

{
"type": "post",
"id": "3712...",
"code": "DdRSOdDjetX",
"url": "https://www.threads.net/@natgeo/post/DdRSOdDjetX",
"username": "natgeo",
"text": "The ocean holdsโ€ฆ",
"language": "en",
"createdAt": "2026-09-14T18:20:11.000Z",
"likeCount": 812,
"replyCount": 40,
"repostCount": 11,
"quoteCount": 2,
"hashtags": ["ocean"],
"mentions": [],
"urls": ["https://on.natgeo.com/โ€ฆ"],
"imageUrls": ["https://โ€ฆ"],
"videoUrls": [],
"searchQuery": "#ocean",
"searchType": "top",
"scrapedAt": "2026-09-15T09:00:00.000Z"
}

searchQuery and searchType say which term and which result page produced the row โ€” necessary when you search several keywords at once. Posts that fail arrive as type: "error" rows and are free.

Use cases

Brand and product monitoring

Search your brand name with postedAfter set to yesterday, schedule it daily, and you have a feed of every new mention with its engagement.

Hashtag and trend research

Read a hashtag's top and recent pages together to see both what performed and what is being posted right now.

Finding accounts in a niche

Users mode turns a keyword into a list of accounts with follower counts โ€” the first step of any influencer shortlist.

Sentiment and language filtering

Every post carries language and its engagement counts, so you can cut to English-only posts above a like threshold before analysis.

AI agents and RAG

An agent asked "what are people saying about X on Threads" runs one search and reads the text fields straight off the rows.

๐Ÿค– For AI agents and LLM apps

Compact reference for agents calling this Actor through the Apify MCP server or the API (lergassy/threads-search-scraper).

Purpose: find public Threads posts or accounts for a keyword or hashtag, with engagement numbers attached.

Minimal input:

{ "mode": "search", "keywords": ["bali"], "maxPosts": 50 }

Behaviours an agent should know:

  • Threads returns fewer results for a rare term than maxPosts asks for. A short list is the platform's answer, not an error.
  • searchTypes decides the flavour: top for the posts that performed, recent for what is happening now.
  • Use postedAfter for anything time-sensitive; without it you get the whole index the search page offers.
  • filterKeywords narrows on the text after the search โ€” the way to remove homonyms ("apple" the company vs the fruit).
  • Rows are deduplicated across search types, so a post ranked both top and recent is billed once.
  • includeProfile adds a separate, more expensive profile row per author. Leave it off unless you need contacts.

Use via API

Run this Actor from your own code or pipeline. Get your token in Apify Console โ†’ Settings โ†’ API & Integrations. Every input field below has the same name as in the JSON tab of the input form.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lergassy/threads-search-scraper").call(run_input={
"mode": "search",
"keywords": [
"bali"
],
"maxPosts": 50,
"searchTypes": [
"top",
"recent"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lergassy/threads-search-scraper').call({
"mode": "search",
"keywords": [
"bali"
],
"maxPosts": 50,
"searchTypes": [
"top",
"recent"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL (runs the Actor and returns the results in one call)

curl -X POST "https://api.apify.com/v2/acts/lergassy~threads-search-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"mode": "search", "keywords": ["bali"], "maxPosts": 50, "searchTypes": ["top", "recent"]}'

Limitations, stated plainly

  • What a logged-out visitor can see. Threads shows a slice of its index to visitors; this Actor reads that slice honestly rather than pretending to have the whole platform.
  • No date filter inside search. Threads has none, so postedAfter is applied to the results after they arrive.
  • Hashtags and plain words behave differently. #ai reads the tag page; ai reads the post index. Ask for both if you want both.
  • Replies and whole conversations are elsewhere โ€” Threads Replies Scraper handles those.
  • Refusals. When Threads refuses a request, it is retried on a new address and then once through a residential address at our cost. If Threads keeps refusing most of a run, the Actor pauses once, then stops instead of grinding: the keywords it did not get to are listed in the NOT_ATTEMPTED record and in the status message (not charged โ€” run them again later). Refused pages are free error rows.

Run health

When a run ends with many error rows, the Actor sends its developer the counts (rows delivered, error types, run ID) so the cause gets fixed fast; your input and results are never sent.

Integrations

Runs from the Apify API, the Python and JavaScript clients, and from n8n, Make or Zapier through the Apify app. Schedule it, push the rows into Google Sheets, Slack or a webhook, or let an agent call it through the Apify MCP server.

โ“ FAQ

Do I need a Threads account or cookies?

No. It reads the public search pages Threads serves to any visitor.

Why did I get fewer posts than I asked for?

Because the term has fewer public results. Broaden the keyword, add recent to searchTypes, or search several related terms in one run.

Can I filter by date?

Yes, with postedAfter. Threads itself offers no date filter, so the Actor applies yours to the results.

Do the results contain my keyword?

Yes โ€” and if you add filterKeywords, rows that do not contain your words are dropped before you are billed.

Will I pay twice for the same post?

No. A post found on more than one result page is deduplicated inside the run.

Can I search hashtags and plain keywords together?

Yes. Put both in keywords; #tag goes to the tag page and plain words to the post index.

How do I find accounts rather than posts?

Set mode to users. You get one row per account with followers, bio and links.

The Actor reads public pages at a normal rate without logging in, which is ordinary public-data collection. What you do with the data afterwards is on you.

You might also like

ActorWhat it does
Threads ScraperSearch, posts, replies and profiles in one Actor
Threads Profile ScraperFull profiles with followers, bio and contacts
Threads Replies ScraperReplies, reposts and whole conversations
Trustpilot Reviews APIThe same monitoring idea for review sites

Also known as

People look for this Actor as a Threads search scraper, Threads hashtag scraper, Threads keyword API, Threads brand monitoring tool, Threads mentions tracker and a Threads trend research tool.

Notes

Threads shows search results to logged-out visitors, and that is exactly what this Actor reads โ€” public posts only. Private accounts are never opened. How many results a keyword has is Threads' decision, not ours: rare keywords return a handful of posts, and maxPosts caps the rest.

Need an account's own posts, its profile and contacts, or a whole conversation? Those live in Threads Profile Scraper, Threads Replies Scraper and the all-in-one Threads Scraper.