Meta Threads Scraper - Posts, Replies, Profiles, Keyword Search avatar

Meta Threads Scraper - Posts, Replies, Profiles, Keyword Search

Pricing

from $4.00 / 1,000 post scrapeds

Go to Apify Store
Meta Threads Scraper - Posts, Replies, Profiles, Keyword Search

Meta Threads Scraper - Posts, Replies, Profiles, Keyword Search

Extract public Meta Threads posts, replies, profiles and keyword search results. Verified keyword matching, typed status on every request, and honest nulls instead of fake zeros. No login, no cookies. Export CSV/JSON.

Pricing

from $4.00 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

WebDataLabs

WebDataLabs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Extract public Meta Threads posts, replies, profiles and keyword search results. No login, no cookies, no API key.

What you get

This Threads scraper returns one flat record per public post, with the engagement metrics Threads actually publishes — likes, replies, reposts, quotes, reshares and (on post detail) views. It runs logged out against public data only.

Three things it does that most Threads scrapers do not:

  1. It checks that search results contain your keyword. Threads' own ranking returns posts that do not, which is the single most common complaint about keyword scraping on this platform. Every search row carries keywordMatched and matchedField so you can see which results really matched and where. On live runs a third of the results Threads returns for a keyword do not actually contain it — those are flagged, not silently mixed in.
  2. It never finishes with an unexplained empty dataset. Every query produces a status row with status, statusReason, requestedCount, returnedCount and capReason. If a run returns little, the dataset itself tells you why.
  3. A missing number is null, never 0. Each metric has a companion *_status field — available, not_public, not_returned_by_source or not_checked. A 0 in this dataset means genuinely zero. This matters: a fake 0 silently corrupts any average, ranking or trend you build downstream.

What data can it extract?

FieldWhat it is
text, language, postedAtPost body, detected language, publication time
authorUsername, authorFullName, authorIsVerified, authorIdWho posted it
likeCount, replyCount, repostCount, quoteCount, reshareCountEngagement, each with a *_status companion
viewCountPublic view count — published by Threads for the root post in Post detail mode
isReply, replyToUsername, quotedPostUrlConversation context
imageUrls, videoUrls, linkUrl, linkTitleMedia, and link previews unwrapped from Meta's redirect
keywordMatched, matchedFieldSearch mode: whether the post really contains your keyword
profileFollowerCount, profileBio, profileBioLinksProfile mode
status, statusReason, returnedCount, capReasonWhy this query returned what it did

The full field list is rendered from the dataset schema above the output table.

Example output

A real record from a live run — mode: search, keyword openai:

{
"recordType": "post",
"mode": "search",
"query": "openai",
"postId": "3949278582485051018",
"shortcode": "DbOp_JUFGaK",
"url": "https://www.threads.com/@aaronparnas/post/DbOp_JUFGaK",
"postedAt": "2026-07-25T20:18:35.000Z",
"authorUsername": "aaronparnas",
"authorFullName": "Aaron Parnas",
"authorIsVerified": true,
"text": "OpenAI caught one of its AI agents leaving “notes” to future versions of itself on how to escape internal constraints.",
"language": null,
"imageUrls": [],
"videoUrls": [],
"likeCount": 19440,
"likeCountStatus": "available",
"replyCount": 565,
"replyCountStatus": "available",
"repostCount": 1217,
"repostCountStatus": "available",
"quoteCount": 142,
"quoteCountStatus": "available",
"viewCount": null,
"viewCountStatus": "not_checked",
"isReply": false,
"keywordMatched": true,
"matchedField": "caption",
"status": "ok",
"statusReason": null
}

How to use it

Pick a mode, paste what you already have into Queries, run. Accounts work as zuck, @zuck or a full profile URL; posts work as a full link or the bare shortcode.

Find posts about a topic

{ "mode": "search", "queries": ["openai", "climate tech"], "maxItemsPerQuery": 100 }

Track what an account posts

{ "mode": "userPosts", "queries": ["@zuck", "mosseri"], "maxItemsPerQuery": 200 }

Pull one post with its public replies

{ "mode": "postDetail", "queries": ["https://www.threads.com/@zuck/post/DakyAavlKLZ"], "includeReplyTree": true }

Profile stats for a list of accounts

{ "mode": "profile", "queries": ["zuck", "mosseri", "meta"] }

How much does it cost to scrape Threads?

Pay per result — you are charged for each post record delivered, and nothing else. Status rows that explain a failure are free, and a run that returns no posts costs effectively nothing. The current price is shown in the pricing box on this page.

Use cases

  • Social listening — run mode: search on your brand and category, then filter keywordMatched = true to drop the results Threads' ranking padded in.
  • Competitor trackingmode: userPosts on rival accounts, sorted by likeCount, to see which messages land.
  • Creator researchmode: profile across a list of handles for follower counts and bio links, then userPosts on the ones worth watching.
  • Conversation analysismode: postDetail with includeReplyTree, then group by replyToUsername to see who a thread pulls in.
  • Dataset building for AI — one flat record per post, with *_status fields so you can exclude uncertain metrics instead of training on fabricated zeros.

Frequently asked questions

Do I need a Threads or Instagram login?

No. This actor scrapes only what Threads shows a logged-out visitor. No account, no cookies and no API key are involved.

How many search results can I get per keyword?

Roughly 20 to 40 per keyword. Threads does not paginate keyword search for logged-out visitors — it reports no next page, and no cursor exists in its search API. This actor fetches both the top and the recent ranking and combines them, which measured 96% more unique posts than the default ranking alone across four test keywords. Beyond that, no scraper can go deeper without an account. capReason: "search_page_limit" tells you when you have hit it. For depth, use userPosts — that mode paginates freely.

How many replies does Post detail return?

About 20, no matter how many the post has. Threads serves logged-out visitors only the first page of a conversation; a post with 839 replies still returns about 20. The true total is always reported in replyCount, so you can see the gap.

Why is viewCount empty on most rows?

Threads publishes a view count only for the root post of a permalink. In other modes it is not fetched at all, and the row says so with viewCountStatus: "not_checked" rather than putting a 0 there.

Does it match what I see in the Threads app?

Not exactly. The Threads web and app rankings differ, so the set of posts a keyword returns here will not be identical to the app's Recent tab. Everything returned is real, public and current — but it is the web result set.

This actor collects only public data that Threads serves to any logged-out visitor, and it does not log in or bypass authentication. It deliberately does not extract emails or phone numbers from bios. You are responsible for how you use the output — if you process personal data of people in the EU or UK you need a lawful basis under GDPR, and you should review Meta's terms for your use case. For anything commercially sensitive, take your own legal advice.

What happens when a run returns nothing?

You still get a row. Every query emits a status row naming the reason: no_public_posts, profile_not_found, login_wall, rate_limited or invalid_input, plus a plain-language statusReason. An invalid input is rejected before anything is charged.

Can it monitor Threads on a schedule?

Yes. Add the actor to a schedule in Apify Console and it will run at your chosen interval. Records carry scrapedAt, so you can diff runs to detect new posts or engagement changes.

Support

Found a bug or need a field that is missing? Open an issue on the Issues tab of this actor and it will be picked up there.