Threads

Threads Search Scraper

Search Threads by keyword or hashtag without logging in and get the matching posts as structured data: text, author, likes, replies, reposts, quotes, media URLs and links, as JSON, CSV or Excel.

What it extracts

Every field below comes from the Actor’s published dataset schema.

FieldDescriptionType
searchQueryQuerytext
usernameAuthortext
textTexttext
likeCountLikesnumber
replyCountRepliesnumber
repostCountRepostsnumber
mediaTypeMediatext
createdAtPosteddate
urlPost URLlink

Input parameters

Generated from the Actor’s input schema — the same fields the Apify console shows.

ParameterTypeRequiredDescription
searchQueriesarrayRequiredKeywords, phrases, hashtags (with or without #) or Threads search URLs (https://www.threads.com/search?q=...). Each query is searched separately.
searchTypestringOptionalWhich Threads search tab to read. Top returns the posts Threads ranks highest, Recent the newest posts, Tags the posts filed under the matching topic tag. All reads the three tabs in that order and removes duplicates, which returns the most posts per query. When Threads does not serve Top results to a logged-out visitor, the Actor reads Recent instead.
maxItemsintegerOptionalMaximum number of posts to save per search query. Threads shows a logged-out visitor one page per search tab, so a single tab returns roughly 15 to 35 posts; use the All search type to get more.
includeRepliesbooleanOptionalSearch results sometimes carry a reply underneath the matching post. Turn this on to save those replies as their own items; off saves only the top-level posts.
postedAfterstringOptionalKeep only posts published on or after this date (YYYY-MM-DD, UTC). Applied to the posts Threads returns; it does not make Threads search further back.
postedBeforestringOptionalKeep only posts published before this date (YYYY-MM-DD, UTC).
proxyConfigurationobjectOptionalProxy for Threads requests. Apify residential proxies are the default; Threads rate limits a single IP after many searches, so the Actor rotates sessions automatically.

API access

Run this Actor from your own code over the Apify API.

Inputjson
{
  "searchQueries": [
    "nature"
  ]
}
REST — run and get resultsbash
curl -X POST \
  "https://api.apify.com/v2/acts/logical_scrapers~threads-search-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["nature"]}'
JavaScript — apify-clientjavascript
import { ApifyClient } from 'apify-client'

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' })

const run = await client.actor('logical_scrapers~threads-search-scraper').call({
  "searchQueries": [
    "nature"
  ]
})

const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
Python — apify-clientpython
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("logical_scrapers~threads-search-scraper").call(run_input={
    "searchQueries": [
        "nature",
    ],
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

Runs are executed on Apify. Create an API token in your Apify account, then call the Actor over REST or with the official client for your language. The same input object works in the Apify console, so you can test interactively before automating.

Pricing

Pay per event — you are charged for each successfully scraped result item.

Current rates are published on the Apify listing and can change, so they are not duplicated here. See pricing on Apify

Reliability

99.4% run success rate

Measured across all public Goldmine Actors on Apify, 2026-08-24. This is an account-level figure, not a per-Actor benchmark — per-Actor speed and completeness benchmarks are not yet published. Source.

Field and input tables are generated from this Actor's published schemas. Usage figures measured 2026-08-24 from the Apify listing.