Threads Scraper & Threads Keyword Monitor
Pricing
$1.99 / 1,000 post scrapeds
Threads Scraper & Threads Keyword Monitor
Threads scraper and Threads keyword monitor, no login. Scrape Threads posts by keyword or #hashtag (deep search with date range), plus Threads profiles, replies, reposts and media. Find Threads influencers: follower counts, emails, phones and links from bios. JSON, CSV, Excel. $1.99 per 1,000 posts.
Pricing
$1.99 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Quiet Harvest
Maintained by CommunityActor stats
0
Bookmarked
19
Total users
11
Monthly active users
a day ago
Last modified
Categories
Share
This Threads scraper pulls public Threads posts (threads.com, formerly threads.net) by keyword, #hashtag or profile, and works as a Threads keyword monitor on a schedule: each run returns only the new Threads posts. No login, no cookies, no Instagram account.
$1.99 per 1,000 posts. Compute and proxy are included in that price.
Quick start
Runs as-is with this input (the same input Apify tests daily):
{"keywords": ["ChatGPT","Nike"],"usernames": ["zuck"],"postUrls": [],"modes": ["recent"],"searchLanguage": "en"}
Main output fields: published_at, user, text, keyword_match, language, like_count, reply_count, repost_count, media_type, url, username, full_name, follower_count, is_verified, emails, phones, links, biography.
Price: Post scraped: $1.99 per 1,000. Pay only for results delivered.
Run it from code and get the results in one call: POST https://api.apify.com/v2/acts/reportable_broth~threads-scraper-monitor/run-sync-get-dataset-items?token=YOUR_TOKEN with the input above as the JSON body.
What does Threads Scraper & Keyword Monitor do?
- Keyword / hashtag search. Newest posts first. Put it on a schedule with
onlyNewon and each run only gives you posts you haven't seen yet. - Deep search with a date range. Set
maxPostsPerKeywordabove 20, or astartDate/endDate, and it walks back through time window by window. You get hundreds or thousands of posts per keyword instead of one page, and you can pull a specific month from last year. - Search inside one account.
fromAuthorlimits a keyword search to one account's posts, e.g. everything @zuck wrote about AI. - Profile posts. Goes back through an account's history. On big accounts I've pulled over a year of posts.
- All post replies. Give a post URL and get the post plus its replies, with who each reply answers. Set
maxRepliesPerPostand it pages through every reply (top or most recent first). No login. - The author's own thread.
includeAuthorThreadalso returns the follow-up posts when the author continued in a thread (1/5, 2/5 ...). - Profile replies, reposts, media. One page each (5–20 items). Threads doesn't let logged-out visitors page further on these tabs.
- Account search.
searchAccountsruns Threads' own account search for each keyword and returns up to ~50 accounts with followers and bio. Free. - Expand keywords.
expandQueriesalso searches the related searches people actually type ("nike" → "nike shoes", "nike air max"), so you get more posts per topic. - Find accounts. Lists who's posting about your keyword, sorted by how many matching posts they have and how much engagement. Free, it's built from posts you already paid for.
- Follower counts and contact info. The top accounts also get follower count, bio, bio links, and any emails, phone numbers (WhatsApp links included) and links found in their bio. Handy for influencer outreach and lead lists. Also free.
- Filters that save you money.
minLikes/minReplies/minReposts,filterKeywords(keep posts containing any of these words),strictKeywordMatch(drop search results that never mention your keyword) andlanguages(hard language filter). Filtered-out posts are not charged. - Paste any Threads URL.
startUrlstakes profile, profile-tab, post, search and hashtag links and routes each one automatically. - View counts and follower / following lists (optional login). Paste your own Threads cookie to add
view_countto posts, or to list an account's followers or who it follows. These two need your own Threads cookie for now. If enough people use them, I'll consider adding a no-cookie option (at an extra cost). - Budget cap.
maxItemsstops the run after N posts in total, and the run also respects the platform's max-total-charge setting: it stops instead of scraping posts you would not be billed for.
You can mix all of these in one run.
What can I use it for?
- Get new posts that mention your brand or product, every 15 minutes.
- Save a competitor's posts with their like and reply counts, and see which ones did well.
- Make a list of accounts that post a lot about a topic, for outreach.
- Collect posts on a hashtag for a report or sentiment analysis.
- Give an AI agent the latest Threads posts on a topic through the API or MCP.
How do I use it?
- Open this Actor and click Try for free. You need a free Apify account.
- Type your keywords or #hashtags, or the usernames you want to pull.
- Click Start.
- Wait for the run to finish.
- Open the Output tab and download the posts as JSON, CSV or Excel.
Examples
Monitor a brand (run it every 15 min):
{"keywords": ["your brand", "#yourbrand"],"modes": ["recent"],"onlyNew": true}
Everything about a topic from the last 7 days (deep search):
{"keywords": ["iPhone 17"],"modes": ["recent"],"maxPostsPerKeyword": 1000,"startDate": "7 days","onlyNew": false}
A past date range, only from one account:
{"keywords": ["AI"],"fromAuthor": "zuck","startDate": "2025-01-01","endDate": "2025-06-30","maxPostsPerKeyword": 500,"onlyNew": false}
Grab a competitor's last 500 posts:
{"usernames": ["competitor_handle"],"maxPostsPerProfile": 500,"onlyNew": false}
Find people posting about a topic:
{"keywords": ["korean skincare"],"modes": ["recent", "top"],"findAccounts": true}
Input
| Field | Default | |
|---|---|---|
keywords | Keywords or #hashtags | |
usernames | Accounts, with or without @ | |
modes | ["recent"] | recent = newest, top = most relevant, tags = hashtag search |
maxPostsPerKeyword | 20 | Above 20 switches on deep search (up to 10,000 per keyword per mode) |
startDate | YYYY-MM-DD or relative (7 days, 24 hours, 3 months). Switches on deep search. Default look-back is 30 days | |
endDate | now | YYYY-MM-DD (inclusive) or relative |
fromAuthor | Only posts by this account | |
profileTabs | [] | replies, reposts, media |
findAccounts | false | Also return the accounts posting about your keywords |
searchAccounts | false | Also search accounts for each keyword (free, up to ~50 per keyword) |
maxAccountsPerKeyword | 20 | For searchAccounts |
expandQueries | 0 | Also search up to N related searches per keyword (0–5) |
accountDetails | 20 | With findAccounts on: add follower count, bio and contacts for the top N accounts (0 = off, max 200) |
postUrls | [] | Threads post URLs. Returns the post and its replies |
maxRepliesPerPost | 0 | Replies per post URL. 0 = first page only (10–20). Higher pages through all replies |
replySort | top | top or recent |
includeAuthorThread | false | Also return the author's own follow-up posts in the thread |
profileDetails | false | Also return one details row per account in usernames (followers, bio, contacts) |
maxPostsPerProfile | 100 | How far back to go on each profile |
onlyNew | true | Skip posts returned in earlier runs (remembers 7 days) |
maxAgeHours | 0 | Drop posts older than this. 0 = no limit |
searchLanguage | en | Nudges results toward a language (19 options). Not a strict filter |
startUrls | [] | Any Threads URLs: profile, profile tab (/@user/reposts), post, search (/search?q=) or hashtag. Routed automatically |
minLikes / minReplies / minReposts | 0 | Drop posts below these counts. Not charged |
filterKeywords | [] | Keep only posts whose text or hashtags contain any of these. Not charged |
strictKeywordMatch | false | Keep only search results that actually mention your keyword. Not charged |
languages | [] | Keep only these languages (en, zh, ja, ko, es... 20 supported). Not charged |
maxItems | 0 | Stop after this many posts in total. 0 = no cap |
cookie | Your Threads cookie. Only needed for the two options below | |
includeViews | false | Add view_count to every post (needs cookie) |
followListUsernames | [] | Return followers / following of these accounts (needs cookie, free) |
followListType | followers | followers, following or both |
maxFollowsPerUser | 100 | Max accounts per list |
proxyConfiguration | residential | Keep residential. Usage is tiny, ~2.4 KB per post |
concurrency | 4 | Parallel requests |
What data do I get?
One row per post:
{"url": "https://www.threads.com/@example/post/Dda6tgGEsuE","text": "...","language": "ko","published_at": "2026-09-18T07:38:24+00:00","media_type": "carousel","media": [{ "type": "image", "url": "https://...", "width": 1080, "height": 1350 }],"like_count": 13,"reply_count": 19,"repost_count": 0,"quote_count": 0,"hashtags": [],"mentions": [],"user": { "username": "example", "full_name": "...", "is_verified": false },"_source": "search","_query": "keyword","_mode": "recent"}
Also included: id, code, published_ts, urls, topic_tag, is_reply, user.profile_pic_url.
The author is also in flat columns for CSV/Excel: author_username, author_full_name, author_id, author_verified, author_profile_pic_url.
Search rows also have keyword_match: true when the text, topic tag or hashtags contain your keyword. Threads search also returns loosely related posts, so filter on this when you need strict matches.
With findAccounts on, you also get rows with _source: "account": username, full_name, is_verified, profile_url, posts_found, total_likes, total_replies, sample_post_url. The top accountDetails accounts also get follower_count, biography, bio_links, emails, phones, links, is_private and details_status (ok or unavailable).
Rows from postUrls have _source: "post" for the post itself and _source: "reply" for replies, plus reply_to_post, reply_to_username, thread_position (0 = direct reply, 1+ = follow-up in the same chain) and is_pinned.
With includeAuthorThread on, the author's follow-up posts come as _source: "thread" with thread_of (the post code) and thread_index (1, 2, 3...).
Rows from searchAccounts have _source: "account_search", and follower lists _source: "follower" or "following" (_query is the account whose list it is). Both have username, full_name, user_id, is_verified, biography, follower_count, profile_pic_url, profile_url.
Searches added by expandQueries have expanded_from set to your original keyword. With includeViews and a cookie, posts get view_count.
With profileDetails on, each account in usernames gets one row with _source: "profile_info" and the same detail fields.
Threads doesn't have email or phone fields, so they're pulled from the bio text and bio links. Many accounts just write "DM me", so expect contacts on a minority of accounts. View counts aren't shown to logged-out visitors, so they're only added when you give a cookie and turn on includeViews.
language is detected from the text. It's null on very short posts (one word, just a link, just emoji). Malay and Indonesian are hard to tell apart, and Japanese written only in kanji shows up as zh. ru covers Cyrillic-script languages (e.g. Ukrainian) and ar covers Arabic-script ones (e.g. Persian). A lone emoji-style symbol (like ツ in a shrug) doesn't change the language.
Export as JSON, CSV or Excel, or read it through the API.
How much does it cost?
$1.99 per 1,000 posts, so $0.00199 a post. There's no start fee.
- 100 posts cost about $0.20.
- A competitor's last 500 posts cost about $1.00.
- 5 keywords on a schedule that bring in 300 new posts a day cost about $0.60 a day. With
onlyNewon, posts you already got are skipped and not charged.
Replies and author-thread posts are billed like any other post. Account rows from findAccounts, searchAccounts and follower lists are free, and so are view counts. Apify's free plan comes with a monthly usage credit ($5 at the time of writing), which covers about 2,500 posts.
Limits
- Classic keyword search gives about 20 posts per keyword per mode. Turn on deep search (
maxPostsPerKeywordabove 20, or a date range) for more. - Deep search gets a sample of each hour, not every post. One hour is the smallest time window Threads accepts, and for each hour it only shows a handful of posts (usually the ones written near the end of that hour). Expect roughly 2–15 posts per hour of history depending on how busy the keyword is. Adding
toptomodesbrings in a different set of posts. - Public posts only. Private accounts won't work.
- If a second run comes back almost empty, that's usually
onlyNewdoing its job. Set it tofalseif you want the full set every time. - An empty reposts or replies tab usually just means the account doesn't repost or reply.
- Post replies: leave
maxRepliesPerPostat 0 for just the first page (10–20). Set it higher to page through all of them. - Follower lists: for very large accounts Threads only shows part of the follower list (about 50). Following lists page normally.
Scheduling it
Save your input as a Task, add a Schedule (every 5–15 min is fine), keep onlyNew on. Hook the dataset up to Slack, Google Sheets, a webhook, Make or Zapier if you want alerts.
FAQ
Do I need a Threads or Instagram login?
No. Everything reads what a logged-out visitor can see, including all replies and account search. The only exceptions are view counts and follower / following lists, which Threads shows to logged-in users only. These two need your own Threads cookie for now. If enough people use them, I'll consider adding a no-cookie option (at an extra cost). If you use them, a secondary account is a good idea.
Why did I only get about 20 posts for my keyword?
That's classic mode: one page per keyword, which is what a logged-out visitor sees. For some keywords Threads shows only 0–2 posts on that page; when that happens the scraper automatically fills up to 20 from the last 24 hours using the same method as deep search. Set maxPostsPerKeyword to 500 (or add a startDate) and deep search pages back through time for you.
Can I get posts in only one language?
Yes. Set languages (e.g. ["ja"]) and only posts detected as that language are kept; the rest are dropped before charging. Pair it with searchLanguage so Threads sends more of that language in the first place.
Can I get view counts?
Yes, with your own cookie: paste it into cookie and turn on includeViews. Threads hides view counts from logged-out visitors, so without a cookie there is no views column. These two need your own Threads cookie for now. If enough people use them, I'll consider adding a no-cookie option (at an extra cost).
Can I call it from the API, Make, n8n or an AI agent?
Yes. It works from the Apify API, the usual integrations, and MCP. For AI agents, set onlyNew to false so every call returns the full result instead of just what's new.
Other scrapers I made
- YouTube Monitor: new videos from channels or keywords
- YouTube Transcript: subtitles/transcripts, SRT export
- Weibo Scraper, RedNote / Xiaohongshu, Douyin, Bilibili
Found a bug or need a field? Open an issue on the Issues tab.
Only collects publicly available data. You're responsible for how you use it (Threads terms, GDPR, local law).