Threads Search Scraper API avatar

Threads Search Scraper API

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Threads Search Scraper API

Threads Search Scraper API

Search Threads posts by keyword. Export post text, author, engagement, media and timestamps when available. Runs with your own Threads access key, so results reach past the signed-out view.

Pricing

from $4.00 / 1,000 results

Rating

5.0

(1)

Developer

Rush

Rush

Maintained by Community

Actor stats

2

Bookmarked

42

Total users

2

Monthly active users

3 days ago

Last modified

Share

Enter one or more search terms and get back the matching Threads posts as a dataset. Every row carries the author, the engagement counts, the media, hashtags, mentions, links and timestamps. Common uses are social listening, market research and competitor tracking. It runs with your own Threads access key, and the setup steps are below.

What you can collect

  • Post content: text, post URL, shortcode, hashtags, mentions, links, and detected language
  • Author: username, display name, profile URL, profile picture, and verification status
  • Engagement: likes, replies, reposts, quotes, and shares when available
  • Media: media type, a preview image, every image in a carousel, and every video the post carries
  • Run metadata: keyword, the sort that produced the row, result index, post timestamp, and scrape timestamp

Input

{
"keywords": ["coffee", "AI startups"],
"sessionId": "your-private-access-key",
"maxResults": 50,
"searchType": "top"
}
FieldTypeDescription
keywordsarraySearch terms to look up on Threads. You can enter up to 20 keywords per run.
sessionIdstringPrivate access key for this run. It is a secret input. Use a secondary account when possible.
maxResultsnumberMaximum posts to save per keyword. A higher limit means a longer run. Actual results can be lower when Threads has fewer matches.
searchTypestringtop for the posts Threads ranks as most popular or relevant, or recent for the newest matching posts first.

Private access

This Actor searches as your own account, which is why it needs a private access value from Threads. Searching signed out is possible, but Threads serves signed-out visitors a shallower set of results. Searching as an account is what lets a run keep going past that point. Apify stores the value as a secret input, and it never appears in the logs or in your exported data.

How to get your private access key

  1. Open threads.com in your browser and sign in to the account you want to use.
  2. Open your browser's developer tools (F12, or Cmd+Option+I on a Mac).
  3. Go to the storage panel (Application → Cookies in Chrome and Edge, or Storage → Cookies in Firefox) and select https://www.threads.com.
  4. Find the row named sessionid and copy its value in full.
  5. Paste it into the Private Access Key field.

Threads decides how long the value keeps working, and signing out of that browser ends it immediately. If a run reports an access problem, repeat these steps to get a fresh value.

Use a secondary account where you can. Treat this value like a password: anyone who has it can act as your account, so do not share it or paste it into anything you do not control. Signing out of the browser you copied it from ends the value everywhere.

Output example

The example below shows the output format. Values vary by the posts returned for your keywords.

{
"keyword": "coffee",
"searchType": "top",
"postId": "1234567890123456789",
"postCode": "ABC123Example",
"postUrl": "https://www.threads.com/@example.creator/post/ABC123Example",
"text": "Morning coffee ritual. What's your favorite brew method? #coffee",
"hashtags": ["#coffee"],
"mentions": [],
"urls": [],
"username": "example.creator",
"displayName": "Example Creator",
"profileUrl": "https://www.threads.com/@example.creator",
"profilePicUrl": "https://scontent.cdninstagram.com/...",
"isVerified": false,
"timestamp": "2026-02-25T08:00:00.000Z",
"language": "en",
"likeCount": 796,
"replyCount": 11,
"repostCount": 21,
"quoteCount": 0,
"shareCount": 81,
"mediaType": "carousel",
"imageUrl": "https://scontent.cdninstagram.com/...",
"imageUrls": ["https://scontent.cdninstagram.com/...", "https://scontent.cdninstagram.com/..."],
"videoUrl": null,
"videoUrls": [],
"index": 1,
"scrapedAt": "2026-06-12T12:00:00.000Z"
}

Search tips

  • A focused keyword returns fewer off-topic posts than a broad one.
  • Use top to see what a keyword is known for, and recent to watch what is being said right now. The two return different sets of posts.
  • Very niche terms may return fewer results than your requested limit.
  • For strict keyword matching, filter the exported text field in your downstream workflow.
  • Start with a small maxResults on a new keyword. You will see the kind of posts it returns before committing to a longer run.

Common questions

Why is private access required?

So the Actor can search as your own account rather than as a signed-out visitor, which is what Threads limits more tightly. The value is marked as secret, stays out of the logs, and is not exported in dataset rows.

Can I search multiple keywords?

Yes. Each result carries the keyword it came from and the searchType that produced it, so you can filter, group, or compare after export. That includes rows from separate top and recent runs collected into the same sheet.

Is top always more relevant than recent?

They answer different questions, and Threads controls both. top returns the posts Threads ranks as most popular or relevant for your keyword, which skews toward posts that have had time to gather engagement. recent returns the newest matching posts. For monitoring, run both and compare.

What does the run summary tell me?

Once searching begins, the run ends by stating how many of your keywords were fully searched and how many posts were saved. Any keyword that did not finish is named individually along with the reason, so you can re-run just that keyword instead of the whole list. A run that cannot start at all, for example when the private access value is rejected up front, reports that instead.

Why did a run finish with fewer posts than I asked for?

The summary says which of two things happened.

If the keyword is reported as fully searched, Threads had no more matches to give. Niche phrases, fresh topics and terms with little public activity all return fewer. That is a complete answer at a smaller number, and re-running it will not find more.

If the keyword appears in the summary's not-finished list, collection stopped before Threads said it was finished, and the reason is named beside it. Those results are still yours and still exported. A new run for that keyword starts from the beginning rather than resuming, so it collects the same opening results again, which is worth knowing before you re-run one.

What do the media type values mean?

text for a post with no attached media, photo, video or carousel for posts that carry media, and gif for an animated image. imageUrl holds a single preview image and imageUrls holds every still image in the post, so a carousel is exported in full. videoUrl and videoUrls do the same for video: one playable file for readers that want a single link, and the full list for a post that carries more than one clip. A video also contributes its preview frame to imageUrls, so compare the two lists before counting photographs. If Threads describes a post in a way this Actor does not recognise, mediaType is left empty rather than guessed. An empty value there means Threads did not describe the post, not that the post has no media.

Which fields can be empty?

Most fields are filled only when Threads provides them. language, shareCount, videoUrl and imageUrl are the ones most often blank, but any post detail can be blank, including the author's display name, the post text itself, and any engagement count. An empty value means Threads did not provide it. A blank engagement count is a different thing from a count of 0.

The list fields (hashtags, mentions, urls, imageUrls and videoUrls) are always present, and are empty when the post contains none of them.

Integrations

Use Apify integrations to export results to Google Sheets, Make, Zapier, Slack, databases, dashboards, or automation tools.

Other Threads scrapers

Responsible use

Use this Actor responsibly and make sure your usage complies with applicable laws, platform terms, and your own data governance requirements. Avoid using your primary personal account for automated workflows.

Search results can include posts written by identifiable people. If you keep, publish, or process that content, you are the one responsible for having a lawful basis for it and for honouring requests about it, including under regimes such as the GDPR and the CCPA. Collect only what your use case needs, and keep it no longer than you need it.

This Actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc., and Threads is a trademark of its respective owner. Results come from Threads and reflect whatever Threads returns at the time of the run.


Threads search scraper, Threads Search Scraper API, Threads keyword search, Threads posts scraper, Threads data extraction, Threads analytics, Threads monitoring, social media monitoring, social listening, content research, competitor research, influencer research, Apify Actor, OpenClaw, Claude Code, Gemini, Codex, Antigravity, ChatGPT