Threads Scraper — Search & Profiles (no login) avatar

Threads Scraper — Search & Profiles (no login)

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Threads Scraper — Search & Profiles (no login)

Threads Scraper — Search & Profiles (no login)

Scrape public Threads by keyword search or by profile — no login. Search returns ~30 recent posts per query across all authors; profile mode returns full stats + latest posts. Resilient to Meta doc_id/CSS rotation.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Petro Pankov

Petro Pankov

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

12 days ago

Last modified

Share

Scrape public Threads (threads.com) by keyword search or by profile — no login, no cookies, no session tokens.

Two modes

🔍 Search — give it keywords or hashtags, get back ~30 recent public posts per query, across all authors. Best for keyword/hashtag monitoring, brand & competitor tracking, lead-gen and trend research.

👤 Profile — give it handles, get full profile stats (followers, bio, verified) plus the latest posts. Note: without login Threads exposes only the most recent ~6 posts per profile, so profile mode is for monitoring, not bulk history.

You can pass either or both in one run.

Why this one

Most Threads scrapers break every few weeks, for two predictable reasons:

  1. They hardcode a GraphQL doc_id. Meta rotates it — the scraper returns nothing.
  2. They parse CSS class names. Meta rotates those too, on basically every deploy.

This Actor does neither. Threads streams its post data into the page as inline application/json blobs. This Actor waits for that stream to finish and walks every JSON blob for the thread_itemspost shape. It also captures any GraphQL/XHR responses seen during scrolling and runs them through the exact same parser, then unions the results.

Two independent data sources, one shape-based parser. If Meta moves the data from one channel to the other, this keeps working. The payload shape is the contract — far more stable than IDs or class names.

Input

{
"searchQueries": ["ai agents", "#bitcoin", "black friday"],
"maxPostsPerQuery": 30,
"usernames": ["zuck", "@mosseri"],
"maxPostsPerProfile": 25,
"useApifyProxy": false
}
FieldTypeDefaultNotes
searchQueriesarrayKeywords or hashtags. ~30 posts per query, all authors.
maxPostsPerQueryinteger301–200.
usernamesarrayHandles, @handles, or full profile URLs. Public only.
maxPostsPerProfileinteger251–500.
useApifyProxybooleanfalseThreads answers Apify directly. Enable only if you hit rate limits AND your plan routes residential proxy.

Provide at least one of searchQueries or usernames.

Output

One dataset item per post:

{
"id": "3937491905269768921",
"searchQuery": "ai agents",
"url": "https://www.threads.com/@kanji.low/post/DakyAavlKLZ",
"username": "kanji.low",
"text": "1. Claude (solve any problem) 2. Perplexity (research) ...",
"takenAt": 1783491905,
"likeCount": 3263,
"replyCount": 88,
"repostCount": 41,
"quoteCount": 12,
"images": ["https://..."],
"videos": [],
"isVerified": false
}

Profile-mode items additionally carry profileFollowers, profileBio, profileFullName. searchQuery is present on search-mode items only.

Pricing

Pay per event — you pay for what you actually get:

  • actor-start — once per run
  • search-scraped — per search query resolved
  • profile-scraped — per profile resolved
  • post-scraped — per post returned

A query or profile that returns nothing is not charged as a scrape.

Limits & honesty

  • Public data only. No login path, and there won't be one. Private profiles return nothing.
  • Search returns what Threads serves logged-out — roughly the 30 most recent public posts per query.
  • Respect Threads' terms and applicable law. Scrape public data; don't build creepy things.