Threads Keyword Search Scraper - Search Posts by Keyword avatar

Threads Keyword Search Scraper - Search Posts by Keyword

Pricing

Pay per event

Go to Apify Store
Threads Keyword Search Scraper - Search Posts by Keyword

Threads Keyword Search Scraper - Search Posts by Keyword

Search Meta Threads by keyword and export every matching public post: text, author, likes, replies, reposts and media. No login, no weekly quota.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Mayowa Ogedengbe

Mayowa Ogedengbe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Threads Keyword Search Scraper

Search Threads (Meta) by keyword and export every matching public post as structured JSON.

No login. No cookies. No weekly search quota.


The problem this solves

Meta's official Threads API allows roughly 500 keyword searches per rolling seven days. Social listening burns through that in an afternoon. Brand monitoring across a handful of terms burns through it faster.

This Actor reads Threads search the way a logged-out visitor does. There is no weekly cap, nothing to authenticate, and no account pool to keep alive.


What you get

For every keyword you supply, every matching public post with:

  • Full post text, language, and the canonical URL
  • Author handle, display name, verification status and profile picture
  • Likes, replies, reposts, quotes and reshares
  • Images, video and carousels, at the largest available resolution
  • Link previews, and quoted posts resolved inline
  • The keyword that found it, in searchQuery, so one run can track many terms

Threads offers two orderings, by relevance and by recency. They return overlapping but different sets. Choose Both for the widest coverage.


Input

{
"searchQueries": ["your brand", "competitor brand", "category term"],
"searchSort": "both",
"maxPostsPerQuery": 200,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Running with no input. If you start a run without setting anything, the Actor returns a small live sample so you can see the output shape immediately. Set your own keywords, profiles or post URLs for a real run.

The same run can optionally take profiles and postUrls as well, if you want profile records or reply trees alongside your keyword results.


Output

{
"type": "post",
"id": "3981852126213720917_63055343223",
"pk": "3981852126213720917",
"code": "DdCYWl7GktV",
"url": "https://www.threads.com/@zuck/post/DdCYWl7GktV",
"text": "Mostly superintelligence and MMA takes",
"language": "en",
"createdAt": "2026-09-08T14:56:24.000Z",
"likeCount": 2715,
"replyCount": 1602,
"repostCount": 231,
"quoteCount": 142,
"isQuotePost": false,
"quotedPost": null,
"mediaType": "text",
"media": [],
"author": {
"username": "zuck",
"fullName": "Mark Zuckerberg",
"isVerified": true,
"profileUrl": "https://www.threads.com/@zuck"
},
"authorUsername": "zuck",
"source": "search",
"searchQuery": "superintelligence",
"scrapedAt": "2026-09-10T04:31:00.000Z"
}

Three details that matter downstream:

  • authorUsername is the flat copy of author.username. Spreadsheet and table views cannot read nested paths, so use the flat field for CSV exports and the nested author object in code.
  • pk is a string. Threads primary keys exceed 2^53, so pipelines that read them as JSON numbers silently corrupt the last digits and break de-duplication. This Actor never emits them as numbers.
  • Missing counters stay null, never 0. You can tell "no likes" apart from "not published by Threads".

Tracking a keyword over time

Schedule the Actor with your keywords and append every run to the same dataset. Each record carries searchQuery and scrapedAt, so de-duplicating on id gives you a clean time series of when each post first appeared and how the conversation grew.


Pricing

Pay per result. A run that returns nothing costs nothing. Search results are billed as posts scraped.


Limits, stated plainly

Depth. Threads embeds roughly the first page of results in the page it serves, about 25 posts per keyword and ordering. Running both orderings roughly doubles coverage per term. If you need thousands of posts on one term, this version will not get you there; if you need broad coverage across many terms, it will.

Proxies. Threads rate-limits single IP addresses quickly. Residential proxies are strongly recommended beyond a handful of requests.

Public data only. Private accounts and anything behind a login are out of scope by design.


This Actor reads only public Threads pages, the same ones any logged-out visitor can open. It does not log in and does not bypass an access control.

Threads posts contain personal data. If you are in the EU or UK, GDPR applies to what you collect and what you do with it, and having a lawful basis is your responsibility as the data controller.


  • Threads Scraper for posts, reply trees, profiles and search in one Actor
  • Threads Profile Scraper for handles, follower counts and profile posts

FAQ

Do I need a Threads or Instagram account? No. Nothing here authenticates, and there is nowhere to enter credentials.

How many keywords can I track in one run? As many as you like. Each is fetched separately, and concurrency is configurable.

Why is text empty on a few records? Those are quote posts where the author added no words of their own. The post they quoted is in quotedPost, with its text and author.

Does this work with threads.net links? Yes. Threads moved from threads.net to threads.com, and both forms are accepted, as are bare handles and bare post shortcodes. You do not need to rewrite old links.

How is this different from the official Threads API? Meta's Threads API needs an app, an access token, and it caps keyword search at roughly 500 queries per rolling seven days. This Actor needs none of that and has no weekly quota, because it reads the same public pages a logged-out visitor sees.

Can I use it from Make, Zapier, n8n or a script? Yes. Every Apify Actor is callable over the REST API and through Apify's integrations, and results come back as JSON, CSV or Excel.

Does it break when Meta ships an update? Less often than most. Scrapers that call the internal GraphQL API depend on persisted query ids that Meta rotates without notice. This one reads what Threads server-renders into the page and recognises records by shape rather than by a fixed path.