Threads Scraper — Search & Profiles (no login)
Pricing
from $0.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
12 days ago
Last modified
Categories
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:
- They hardcode a GraphQL
doc_id. Meta rotates it — the scraper returns nothing. - 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_items → post 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}
| Field | Type | Default | Notes |
|---|---|---|---|
searchQueries | array | — | Keywords or hashtags. ~30 posts per query, all authors. |
maxPostsPerQuery | integer | 30 | 1–200. |
usernames | array | — | Handles, @handles, or full profile URLs. Public only. |
maxPostsPerProfile | integer | 25 | 1–500. |
useApifyProxy | boolean | false | Threads 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 runsearch-scraped— per search query resolvedprofile-scraped— per profile resolvedpost-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.