Threads Scraper & Threads Keyword Monitor avatar

Threads Scraper & Threads Keyword Monitor

Pricing

$1.99 / 1,000 post scrapeds

Go to Apify Store
Threads Scraper & Threads Keyword Monitor

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

Quiet Harvest

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

11

Monthly active users

a day ago

Last modified

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 onlyNew on and each run only gives you posts you haven't seen yet.
  • Deep search with a date range. Set maxPostsPerKeyword above 20, or a startDate / 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. fromAuthor limits 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 maxRepliesPerPost and it pages through every reply (top or most recent first). No login.
  • The author's own thread. includeAuthorThread also 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. searchAccounts runs Threads' own account search for each keyword and returns up to ~50 accounts with followers and bio. Free.
  • Expand keywords. expandQueries also 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) and languages (hard language filter). Filtered-out posts are not charged.
  • Paste any Threads URL. startUrls takes 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_count to 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. maxItems stops 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?

  1. Open this Actor and click Try for free. You need a free Apify account.
  2. Type your keywords or #hashtags, or the usernames you want to pull.
  3. Click Start.
  4. Wait for the run to finish.
  5. 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

FieldDefault
keywordsKeywords or #hashtags
usernamesAccounts, with or without @
modes["recent"]recent = newest, top = most relevant, tags = hashtag search
maxPostsPerKeyword20Above 20 switches on deep search (up to 10,000 per keyword per mode)
startDateYYYY-MM-DD or relative (7 days, 24 hours, 3 months). Switches on deep search. Default look-back is 30 days
endDatenowYYYY-MM-DD (inclusive) or relative
fromAuthorOnly posts by this account
profileTabs[]replies, reposts, media
findAccountsfalseAlso return the accounts posting about your keywords
searchAccountsfalseAlso search accounts for each keyword (free, up to ~50 per keyword)
maxAccountsPerKeyword20For searchAccounts
expandQueries0Also search up to N related searches per keyword (0–5)
accountDetails20With 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
maxRepliesPerPost0Replies per post URL. 0 = first page only (10–20). Higher pages through all replies
replySorttoptop or recent
includeAuthorThreadfalseAlso return the author's own follow-up posts in the thread
profileDetailsfalseAlso return one details row per account in usernames (followers, bio, contacts)
maxPostsPerProfile100How far back to go on each profile
onlyNewtrueSkip posts returned in earlier runs (remembers 7 days)
maxAgeHours0Drop posts older than this. 0 = no limit
searchLanguageenNudges 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 / minReposts0Drop posts below these counts. Not charged
filterKeywords[]Keep only posts whose text or hashtags contain any of these. Not charged
strictKeywordMatchfalseKeep only search results that actually mention your keyword. Not charged
languages[]Keep only these languages (en, zh, ja, ko, es... 20 supported). Not charged
maxItems0Stop after this many posts in total. 0 = no cap
cookieYour Threads cookie. Only needed for the two options below
includeViewsfalseAdd view_count to every post (needs cookie)
followListUsernames[]Return followers / following of these accounts (needs cookie, free)
followListTypefollowersfollowers, following or both
maxFollowsPerUser100Max accounts per list
proxyConfigurationresidentialKeep residential. Usage is tiny, ~2.4 KB per post
concurrency4Parallel 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 onlyNew on, 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 (maxPostsPerKeyword above 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 top to modes brings 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 onlyNew doing its job. Set it to false if 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 maxRepliesPerPost at 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

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).