Threads Scraper — Posts, Profiles, Search & Monitoring
Pricing
from $1.50 / 1,000 post results
Threads Scraper — Posts, Profiles, Search & Monitoring
Scrape public Threads posts, profiles, replies, search and media without login. Mix targets in one run, monitor new or changed posts, and pay only for delivered results.
Pricing
from $1.50 / 1,000 post results
Rating
0.0
(0)
Developer
Automation Tech
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape public Threads data without login, cookies, or a Meta API key.
Paste usernames, post URLs, hashtags, keywords, or account searches into one run and get clean, structured profiles, posts, exposed replies, media, engagement data, and monitoring updates.
No login · Mixed targets · Persistent monitoring · Pay only for delivered results
What you can do
- Track competitor and creator posts
- Monitor brands, keywords, and hashtags
- Discover Threads accounts by topic
- Export public posts, profiles, replies, repost feeds, and media metadata
- Detect new posts and engagement changes on scheduled runs
- Feed clean JSON/CSV/Excel data into dashboards, automations, AI agents, or MCP workflows
Quick start
For most runs, this is enough:
{"targets": ["@openai"]}
Mix different target types in the same run:
{"targets": ["@openai","#artificialintelligence","AI agents","accounts:AI researchers","replies:@instagram"],"maxResults": 250}
The Actor detects each target type automatically, combines the results, removes duplicates, and preserves where each record came from.
Ready-made Tasks
The Actor includes reusable Apify Tasks for the most common workflows:
- Profile & Recent Posts — scrape a public profile and recent posts
- Keyword & Hashtag Research — research topic and hashtag results in one run
- Account Discovery — find public Threads accounts by topic
- Competitor / Creator Monitor — return new posts and engagement changes across repeated runs
- Keyword & Hashtag Monitor — track topic results with persistent state
- Replies & Reposts Research — inspect public replies and repost feeds
Each Task uses the latest Actor build, conservative first-run limits, a maximum charge guard, and editable example inputs. These Tasks are published as public Example tasks and have their own Store landing pages.
What you can scrape
- Public profile metadata
- Recent public profile posts
- Single public post pages
- Replies exposed in public post/profile payloads
- Public profile replies feeds
- Public profile reposts feeds
- Keyword search
- Hashtag search
- Account/user search
- Images, videos, and carousel metadata when exposed
- Public engagement counters when exposed
- New and changed records across scheduled monitoring runs
Missing upstream values stay null; the Actor does not invent counts or relationship data.
Target syntax
| Input | Meaning |
|---|---|
@openai | Profile + recent public posts |
openai | Profile |
| Threads profile URL | Profile + recent public posts |
Public /post/ URL | Single post page |
#AI | Hashtag search |
AI agents | Keyword search |
keyword:AI | Explicit one-word keyword search |
accounts:AI researchers | Account/user search |
replies:@openai | Public profile replies feed |
reposts:@openai | Public profile reposts feed |
You can provide up to 100 mixed targets plus optional account-search queries in one run.
Turn any scrape into a monitor
Run the same targets on a schedule and return only what is new or changed:
{"targets": ["@openai", "keyword:OpenAI"],"monitor": true,"stateKey": "openai-monitor","emitMode": "new_and_changed"}
The first run builds the baseline. Future runs can emit:
new— posts not previously deliveredchanged— engagement changes on previously seen postsnew_and_changed— bothall— every eligible record
Monitoring state is bounded and checkpointed from delivered records, so posts dropped by the result cap are not incorrectly marked as already seen.
Clean output for mixed workflows
Every post/reply follows the same versioned shape:
{"recordType": "post","id": "...","url": "https://www.threads.com/@user/post/...","text": "...","publishedAt": "2026-09-23T00:00:00.000Z","author": {"id": "...","username": "user","displayName": "User","verified": true},"engagement": {"likes": 100,"replies": 4,"reposts": 2,"quotes": 1,"shares": null,"views": null},"media": [],"isReply": false,"isRepost": false,"isQuote": false,"sourceTypes": ["profile", "keyword"],"matchedQueries": ["AI"],"matchedProfiles": ["openai"],"scrapedAt": "2026-09-23T00:01:00.000Z","schemaVersion": "2.0.0"}
One post can be discovered through several targets. The Actor deduplicates by stable Threads ID when possible, then merges useful provenance instead of charging for intentional duplicates.
Dataset views are included for:
- Results
- Posts
- Profiles
- Replies
- Changes
Raw nested JSON remains available for API users, while the common columns are flattened for CSV/Excel-friendly views.
Filters and sorting
Optional filters include:
- date range
- minimum/maximum likes
- minimum replies or reposts
- verified authors only
- include/exclude authors
- include/exclude keywords
- hashtags and mentions
- media type
- replies only / root posts only
- include/exclude reposts and quotes
Sort by newest, oldest, likes, replies, reposts, or combined engagement.
Pricing
This Actor uses pay-per-event billing.
You are billed for result rows actually delivered to the dataset, not for internal HTTP pages, retries, duplicate discoveries, filtered records, or empty results.
Current event prices are shown in the Actor's Pricing tab.
This makes scheduled monitoring especially predictable: a run that finds very little new data also produces very little billable output.
Reliability
The Actor is HTTP-first to keep runs lightweight:
- Fetch public logged-out Threads pages.
- Discover structured payloads by record shape instead of one brittle JSON path.
- Follow public same-site continuation URLs when Threads exposes usable ones.
- Retry transient 408/425/429/5xx failures with bounded backoff.
- In
autoproxy mode, escalate direct → datacenter → residential only when needed. - Preserve valid partial results if a later request fails.
Every run writes a machine-readable RUN_SUMMARY with discovery counts, duplicates, filters, result-cap drops, retries, failed/partial targets, monitoring counters, and delivered rows.
Practical limits
Threads controls what logged-out visitors can see. This release intentionally does not overclaim what the public surface provides:
- Profile pages expose a recent public post window; complete profile history is not claimed.
- Post pages can expose replies, but exhaustive recursive reply-tree pagination is not claimed.
- Reply depth is limited by relationship metadata Threads exposes publicly.
- Search depth and ordering depend on the public Threads search surface; exhaustive search is not claimed.
- Some public fields may be absent and therefore remain
null. - Browser/login fallback is not required for the verified surfaces in this release.
If a target becomes partial or fails, the run summary reports it instead of silently pretending the scrape was complete.
API and automation
Run the Actor through the Apify API, schedules, Tasks, integrations, or MCP-compatible workflows. Results are stored in the default dataset and can be exported as JSON, JSONL, CSV, or Excel.
For low-noise monitoring, schedule the same input with a stable stateKey and emitMode: "new" or "new_and_changed".
Development verification
Repository checks:
npm cinpm run typechecknpm testTHREADS_LIVE_TESTS=1 npm test
The normal suite is network-free. Live tests validate public Threads shapes and invariants rather than volatile hardcoded counts.
This is an unofficial public-data tool and is not affiliated with Meta or Threads.