Threads Scraper & Mentions Monitor
Pricing
from $1.80 / 1,000 post scrapeds
Threads Scraper & Mentions Monitor
Scrape public Threads posts from profiles and keyword searches without login: text, author, likes, replies, reposts, quotes and media. Monitor mode returns only posts that are new since the last run, with webhook alerts. Pay per post.
Pricing
from $1.80 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Yushi Homma
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Scrape public Threads posts from profiles and keyword searches, without logging in. Each post comes back as a flat row with text, author, likes, replies, reposts, quotes and media. Run it on a schedule with Only new posts turned on, and you only get (and pay for) posts that appeared since the previous run, plus a webhook alert for each one.
- Profiles: the latest posts of any public account, paginated up to 1,000 posts per profile.
- Keyword search: the newest and top-ranked posts mentioning a brand, product or topic.
- Monitoring built in:
newSinceLastRunon every row, an Only new posts switch, and webhook alerts for new posts (to Slack, email or a spreadsheet via Zapier, Make or n8n). - API and AI agent tool: fetch a profile's posts in one API call, or let an AI agent call it as a tool through the Apify MCP server.
- No browser, no cookies, no account: plain HTTP requests, 256 MB memory.
Use cases
- Brand and competitor monitoring: get a webhook whenever someone posts about your brand on Threads.
- Track what creators, executives or competitors publish, with engagement numbers for each post.
- Collect posts on a topic for research, sentiment analysis or an LLM pipeline.
- Give an AI agent a "what is @someone posting on Threads?" tool.
How to use it
- Add Profiles (
zuck,@zuckorhttps://www.threads.com/@zuck) and/or Search keywords (apify,web scraping). - Choose Max posts per profile or keyword (default 25).
- For monitoring, turn on Only new posts, optionally set an Alert webhook URL, and run the Actor on a schedule (for example hourly). The first run returns everything and becomes the baseline; later runs return only new posts.
Which posts were already seen is stored per profile or keyword in your account's key-value store threads-mentions-monitor-state.
Tutorial: get a Slack message whenever someone mentions your brand on Threads
- In Zapier, Make or n8n, create a scenario that starts with a webhook trigger ("Catch Hook" in Zapier, "Custom webhook" in Make, "Webhook" node in n8n) and copy its URL.
- Add a Slack → Send message step. Map
item.authorUsername,item.text,item.likeCountanditem.urlinto the message. - In this Actor, add your brand name, product names and common misspellings under Search keywords (and your own or competitors' handles under Profiles), turn on Only new posts, and paste the webhook URL into Alert webhook URL.
- Run it once. That run records the current posts as the baseline and sends no alerts.
- Open Schedules in Apify Console and run the Actor hourly with the same input. Each new mention then becomes one Slack message, and you pay only for new posts.
For sentiment analysis, send the same webhook to an AI step (e.g. OpenAI or Claude in Zapier or Make) before posting to Slack.
Input
{"profiles": ["zuck"],"searchQueries": ["apify"],"searchSort": "all","maxPostsPerSource": 25,"onlyNewPosts": true,"alertWebhookUrl": "https://hooks.example.com/threads"}
| Field | Required | Description |
|---|---|---|
profiles | one of these two | Usernames or profile URLs. |
searchQueries | one of these two | Keywords, topics or Threads search URLs. A leading # is dropped, because Threads searches topics without it. |
searchSort | no | all (default: top-ranked and newest posts merged, newest first), recent or top. Logged-out Threads returns only a handful of "recent" posts, so all gives the best coverage. |
maxPostsPerSource | no | 1 to 1,000 posts per profile or keyword (default 25). |
onlyNewPosts | no | Return only posts not seen in earlier runs (default false). |
alertWebhookUrl | no | Receives a POST for every post that is new since the previous run. |
proxyConfiguration | no | Leave empty: Threads is fetched directly, falling back to Apify datacenter and then residential proxies only if Threads rate-limits the run. Set a proxy to use it for every request. |
Output
One dataset item per post:
{"postId": "4006434140014576097","code": "DeZtp-TkQHh","url": "https://www.threads.com/@zuck/post/DeZtp-TkQHh","text": "Introducing Muse Wonder, our new family of frontier models…","createdAt": "2026-10-12T16:56:29.000Z","authorUsername": "zuck","authorFullName": "Mark Zuckerberg","authorVerified": true,"authorProfilePicUrl": "https://scontent.cdninstagram.com/…","likeCount": 2121,"replyCount": 556,"repostCount": 168,"quoteCount": 60,"isReply": false,"mediaUrls": ["https://scontent.cdninstagram.com/…"],"source": "profile:zuck","newSinceLastRun": false,"scrapedAt": "2026-10-25T13:21:14.020Z"}
The webhook body is { "actor": "threads-mentions-monitor", "item": { ...same fields... }, "detectedAt": "<ISO time>" }.
API and AI agents
Run it and get the results in one call:
curl -X POST "https://api.apify.com/v2/acts/yushi3~threads-mentions-monitor/run-sync-get-dataset-items" \-H "Authorization: Bearer <APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"profiles": ["zuck"]}'
It returns the dataset items as a JSON array. AI agents can call the Actor as a tool through the Apify MCP server.
Pricing
| Event | Price |
|---|---|
| Post returned | $0.0018 |
| New-post alert delivered to your webhook | $0.002 |
With Only new posts on, posts you already received are neither returned nor charged, so an hourly brand monitor costs only for genuinely new mentions. Nothing is charged for a profile or keyword that fails; failed webhook deliveries are not billed either.
Limitations
- Only public data visible to a logged-out visitor. Private profiles, followers lists and likes lists are not available.
- Threads returns about 30 posts per keyword search; for more coverage, add related keywords.
- Replies are included only when they appear in a profile's posts (for example an author continuing their own thread); other people's replies to a post are not collected.
- Like counts are
nullwhen the author hides them. - A username that doesn't exist (or isn't public) is reported in
FAILED_TARGETSas not found and is not billed.
When a profile or keyword fails
Every profile and keyword is processed even if one fails. Failures are listed in the run's key-value store under FAILED_TARGETS with the reason, such as a missing profile or a Threads rate limit. The run fails outright only when Threads changed its page format in a way the Actor can no longer read (it is re-tested against the live site every 12 hours) or when every source failed.
Questions and issues
Open an issue on the Actor's Issues tab.