Threads Search & Monitor - Keyword Tracking + Contacts
Pricing
from $3.50 / 1,000 search results
Threads Search & Monitor - Keyword Tracking + Contacts
Search Threads by keyword/hashtag and monitor saved searches for new posts on a schedule. Optional reply trees + author bio contacts (email/phone). Cookie-free, no login.
Pricing
from $3.50 / 1,000 search results
Rating
0.0
(0)
Developer
Omar Eldeeb
Maintained by CommunityActor stats
0
Bookmarked
78
Total users
16
Monthly active users
11 days ago
Last modified
Categories
Share
Threads Search & Monitor — Keyword Tracking + Contacts
Search Threads by keyword or hashtag, monitor saved searches for new posts on a schedule, and optionally pull full reply trees and author bio contacts (email/phone) — all in one actor. Cookie-free, no login, no tokens to maintain. Runs on the Apify platform; export to JSON, CSV, or Excel, or pull straight from the API.
It's the only Threads search actor on the Store with a dedup-aware monitor mode: schedule it and every run returns only the posts it hasn't seen before.
What does Threads Search & Monitor do?
Give it one or more keywords or hashtags and it returns the matching public Threads posts — author, text, engagement counts (likes / replies / reposts / quotes), media URLs, timestamp, and a deep link to each post. Three modes:
- Search — keyword / phrase query from Threads' search results, newest-first or relevance-first.
- Hashtag — posts for a hashtag from Threads'
#tagsearch, widened with the plain-word search. - Monitor — re-run your saved searches/hashtags on a schedule and get only the new posts since the last run (dedup-aware, persisted across runs).
Every post passes a relevance filter before it is saved or charged: you only get (and pay for) posts that actually mention your term. See Relevance filter.
Two optional enrichments no other Threads search actor bundles:
- Reply trees on results — pull the top discussion replies under each surfaced post (depth-aware).
- Author bio contacts — resolve email / phone / links from each unique author's bio (great for lead-gen), deduped so you're charged once per author.
Why use Threads Search & Monitor?
- Social listening teams & agencies — track brand, competitor, and topic keywords now that Threads has opened ads to all advertisers and crossed 450M+ monthly users. Schedule the monitor and never re-pull the same post.
- Market & trend researchers — gather the relevant posts per term, filter by date, export clean structured rows.
- Lead-gen & outreach — find posts on your topic, then resolve the authors' bio contacts in the same run.
- AI / dataset builders — collect topical public posts (and their discussions) as clean JSON for training and retrieval.
- No maintenance moat — uses Meta's public social-bot SSR, so there are no rotating
doc_ids, login cookies, or tokens to break. Reliable by design.
How to use Threads Search & Monitor
- Click Try for free / Start.
- Pick a Mode (Search, Hashtag, or Monitor).
- Enter your search queries and/or hashtags.
- (Optional) Turn on Include reply trees and/or Resolve author bio contacts; set a date window and Max items.
- For hands-off monitoring: set Mode = Monitor, then attach an Apify Schedule (e.g. hourly/daily). Each run appends only new posts.
- Run it, then export the dataset as JSON / CSV / Excel, or read it from the API.
Input
Search a keyword (wide coverage):
{"mode": "search","searchQueries": ["openai", "social listening"],"sort": "top","maxResultsPerQuery": 50}
Monitor hashtags on a schedule (only new posts each run):
{"mode": "monitor","hashtags": ["bitcoin", "ai"],"maxResultsPerQuery": 50}
Search + reply trees + author contacts (lead-gen):
{"mode": "search","searchQueries": ["dtc brand"],"includeReplies": true,"maxReplyDepth": 2,"resolveContacts": true,"resolveLinktree": true,"maxItems": 300}
Search a date window:
{"mode": "search","searchQueries": ["world cup"],"dateFrom": "2026-05-01","dateTo": "2026-06-01"}
Output
One post row (replies and author-contact rows share the same dataset, distinguished by recordType):
{"recordType": "post","matchedQuery": "threads api","postId": "3904856121039465368","code": "DZFe09QgoGI","url": "https://www.threads.com/@example/post/DZFe09QgoGI","username": "example","fullName": "Example User","text": "Shipping a new Threads integration today…","takenAt": "2026-06-12T14:23:51.000Z","likeCount": 412,"replyCount": 37,"repostCount": 8,"quoteCount": 3,"mediaType": "image","mediaUrls": ["https://…"],"serpTypes": ["default"],"fetchedAt": "2026-06-13T09:00:00.000Z","sourceUrl": "https://www.threads.com/search?q=threads%20api&serp_type=default"}
A run summary is saved as OUTPUT in the run's key-value store: per term, how many posts Threads returned, how many the relevance filter kept and dropped, how many were emitted, and why the run stopped (if it stopped early). The same numbers appear in the run's status message.
Reply row (recordType: "reply"): adds depth, parentPostId, replyToAuthor.
Author row (recordType: "author", when resolveContacts is on): biography, followerCount, isVerified, bioLinks, extractedEmails, extractedPhones, matchedQueries.
| Field | Description |
|---|---|
recordType | post | reply | author |
matchedQuery | Which search keyword / hashtag surfaced this row |
serpTypes | Which search view(s) returned the post: default = the query's own search results; keyword = the plain-word search added for a hashtag (rows from before October 2026 may show recent / tag, views that are no longer used) |
username / fullName | Author identity |
text | Post body |
takenAt | Post timestamp (ISO) |
likeCount / replyCount / repostCount / quoteCount | Engagement |
mediaType / mediaUrls | text | image | carousel | video + best-resolution URLs |
depth / parentPostId / replyToAuthor | Reply linkage (reply rows) |
extractedEmails / extractedPhones / bioLinks | Author contacts (author rows) |
url | Canonical deep link to the post |
How much does it cost to scrape Threads?
Pay-per-event — you pay for what you pull:
| Event | Price | When it fires |
|---|---|---|
| Actor start | $0.01 per GB of run memory | Once per run, charged by the Apify platform ($0.01 at the default 1 GB) |
| Search result | $0.0035 | Per post surfaced for a query/hashtag (primary) |
| Reply fetched | $0.0015 | Per reply, only when Include reply trees is on |
| Monitor delta detected | $0.01 | Per new post in monitor mode (on a target's first monitor run, every post found counts as new) |
| Author bio contact resolved | $0.02 | Once per unique author, only when Resolve contacts is on |
Free trial: your first 10 chargeable events are free, once per Apify account, not once per run. The count is kept in a key-value store named threads-search-monitor-trial inside your own Apify account and carries over between runs until all 10 are used. After that, every event bills normally. Two limits:
- The actor-start fee is never covered by the trial.
- In monitor mode the trial applies only to your first (baseline) monitor run. Once a monitor run has saved its seen-posts state (the
threads-search-monitor-watermarksstore in your account), later monitor runs bill from the first event, even if part of your 10 is still unused. Search and hashtag runs can still use what is left.
Typical runs (after the free trial, plus the $0.01 actor start):
- 50 search results: ~$0.18 ($3.50 / 1,000 posts).
- 50 results + their reply trees (~15 replies each): ~$0.18 + ~$1.13 replies.
- Monitor 5 hashtags, ~20 new posts/run: ~$0.20 per scheduled run.
- 30 results + contacts on 25 unique authors: ~$0.11 + ~$0.50 contacts.
Tips & advanced options
- Coverage is honest, not infinite. Threads' public (cookie-free) search exposes a bounded sample per term — typically a few dozen posts, of which the relevant ones are kept. For hashtags, Wide coverage (
deepCoverage, on by default) adds the plain-word search to the#tagsearch; for keywords there is a single search view, so the setting changes nothing. There is no deep cursor pagination on the public path;maxResultsPerQuerycaps the relevant posts per term. For broader sweeps, run several related queries. - Sort: Recent returns the relevant posts newest-first; Top keeps Threads' relevance order. Both read the same search results (Threads' separate "recent" view now returns unrelated brand-new posts, so it is no longer used).
- Monitor is the hands-off mode. Set Mode = Monitor + an Apify Schedule. Dedup is code-based and persisted in a named store, so you never re-pull or re-pay for a post you already got. Progress is saved after every term (and periodically during it), so a run that is aborted, hits its maximum cost or Max items, or runs out of time picks up where it left off: undelivered posts arrive on the next run and delivered ones are never charged twice.
- Reply trees return the top replies embedded in each post's page (depth-aware via reply-to-author). A post with thousands of replies returns its top discussion sample, not every reply.
- Contacts: turn on
resolveLinktreeto follow Linktree / Beacons / Stan links for extra channels. Author rows are deduped — one per author per run. - Proxy: the Apify datacenter proxy (default) handles Threads; a page Meta gates is retried automatically through a residential IP. Selecting RESIDENTIAL does not change this — datacenter stays the primary tier.
- Date window (
dateFrom/dateTo) filters the gathered set; it does not fetch posts older than Threads exposes.
Relevance filter
Since about September 2026, two of Threads' public views (the /tag/ page and the "recent" search view) return Threads' global feed of brand-new posts, whatever the query. To make sure you only receive — and pay for — posts about your term, every post is checked before it is saved or charged, in Search, Hashtag and Monitor mode:
- It is kept when your term appears as a whole word (case-insensitive,
#ignored, accents and Arabic vowel marks ignored — café = cafe, İstanbul = istanbul, إسرائيل = اسرائيل — and hyphen/space variants equal — e-commerce = ecommerce = e commerce; plurals, and -ing/-ed forms of words of 4+ letters, included) in the post text, in the topic tag Threads shows above it, or in its thread (the post it replies to, or the same author's own thread). A multi-word term matches when the exact phrase or all of its words are present. - For posts older than 15 minutes, the image alt text, link-preview title and quoted post also count. Posts younger than 15 minutes must match on their own text, tag or thread — that is where the unrelated new-post feed lives.
- Dropped posts are never saved or charged. The per-term counts are in OUTPUT and in the status message.
- Measured on 241 live posts across 10 terms (2026-10-01): 0 of 40 human-verified relevant posts were dropped. Very short or very common terms (e.g.
ai) can still let through posts where the word means something else. - Reply trees are not filtered: replies under a relevant post are part of its discussion.
Changelog
October 2026 — results are now filtered for relevance, and counts are lower.
Threads' /tag/ page and "recent" search view started returning unrelated brand-new posts for every query, and this actor was delivering — and charging for — them. From this version:
- Only posts that mention your term are returned and charged (see Relevance filter). Expect fewer rows per run, often half or less of what you got before; the rows that disappear were not about your term. A term Threads has no relevant posts for can now return 0 rows.
- Hashtags are read from Threads'
#tagsearch instead of the/tag/page.serpTypesnow showsdefault(andkeywordfor the plain-word search added to hashtags) instead ofrecent/tag. - Sort = Recent still works: it now orders the relevant search results newest-first instead of reading Threads' retired "recent" view. No input changes are needed; saved tasks and schedules keep working.
- Monitor saves progress after every term and when a run is aborted, migrated, hits its maximum cost or runs out of time, so the next run never re-delivers or re-charges a post, and posts a run could not deliver arrive next time.
- Reply trees no longer repeat a post that was already returned as a result or under another post's replies: each post is delivered and charged once per run.
- No price changes.
Legal & responsible use
This actor collects only public Threads data available without logging in, via Meta's public social-bot rendering. It does not bypass authentication or access private/age-gated content. You are responsible for using the output in compliance with Threads'/Meta's Terms, the Apify Terms of Service, and applicable data-protection law (GDPR/CCPA) — especially for the contact-extraction feature, where you must have a lawful basis for processing personal data. No personal data is stored by the actor beyond the dataset it returns to you.
FAQ & support
Why can't I get thousands of posts for one keyword? Threads' public search has no cursor pagination without logging in. Each term returns a few dozen posts, and only the ones that mention your term are kept; run many related queries for breadth. We deliberately stay cookie-free for reliability rather than chase a login-gated pagination path.
How is this different from the generalist Threads scrapers? This one is built for search & monitoring: a relevance filter on every result, a dedup-aware scheduled monitor, and reply + contact enrichment on search results — none of which the keyword-only incumbents bundle.
Does monitor mode re-charge me for the same post? No. Dedup is persisted across runs in a named key-value store; you're only charged for posts you haven't seen.
Do I need a Threads/Meta account or API key? No. No login, no cookies, no tokens.
Why did a query return nothing? Either Threads returned no post that mentions the term (check OUTPUT: found vs kept per term — very generic or placeholder terms often end at 0), or Meta gated every attempt (allViewsGated: true) — retry later.
Why do I get fewer posts than before October 2026? See the changelog: results are now filtered for relevance.
Support: open an issue on the actor's Issues tab. Bugs and feature requests welcome.