Threads Scraper — Posts, Profiles, Replies & Search, No Login
Pricing
from $0.80 / 1,000 result items
Threads Scraper — Posts, Profiles, Replies & Search, No Login
Search Threads by keyword, or pull any public profile's posts, a post's replies, and related posts — no login, no cookies. Flat rows with text, likes, replies, reposts, media and follower counts. Monitor mode alerts on new or changed posts per keyword or profile.
Pricing
from $0.80 / 1,000 result items
Rating
0.0
(0)
Developer
Viktor Dubnytskiy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Search Threads by keyword, or scrape any public profile's posts, a post with its replies, and related posts — as flat rows, without logging in. No account, no cookies, no session — only what Threads serves to logged-out visitors.
What you get
One row per post or profile. Real rows from the example dataset (profile @nasa, text truncated here):
| type | username | text / bio | likeCount / replyCount / repostCount | takenAt |
|---|---|---|---|---|
profile | nasa | Making the seemingly impossible, possible. ✨ (followerCount 12716327) | — | — |
post | nasa | Main character energy unlocked! 👩🚀 NASA astronaut Jessica Meir and @europeanspaceagency… | 3124 / 60 / 118 | 2026-08-31T22:23:09+00:00 |
post | nasa | (text null — image post), linkTitle Expedition 75 is Go for Tuesday's Navigation and Science Maintenance Spacewalk - NASA | 771 / 4 / 20 | 2026-08-31T22:23:16+00:00 |
A search query yields the same post shape with source: "search" and searchQuery set. includeProfile controls whether the type: profile row (bio + followers) is emitted per profile.
Full post row: id, url, code, username, userId, isVerified, text, takenAt (UTC), likeCount, replyCount, repostCount, quoteCount, reshareCount, mediaType (text/image/video/carousel), images[], videos[], linkUrl, linkTitle, replyToUsername, isReply, rootPostId, language, isPaidPartnership, source (profile/post/reply/related/search), searchQuery, scrapedAt.
Use cases
- Keyword and brand monitoring — put a keyword under
searches, run it on a schedule, get only the posts that are new since the last run. - Creator and competitor tracking — watch what a profile posts, how it performs, how fast its follower count moves, on a recurring schedule.
- One-off reply mining — pull a specific post's reply feed once, to read what the audience actually said.
Try it in 10 seconds
One-off keyword search — searches: ["climate tech"], maxPostsPerSearch: 25, maxItems: 25. Or swap in profiles: ["nasa"] / a postUrls permalink; the default input (profiles: ["nasa"]) already works with nothing to fill in.
Monitor mode — save either input as a Task, set mode: "monitor" and a monitorStateId (e.g. "climate-tech-watch"), then schedule it (Apify → Schedules → cron 0 */6 * * * for every 6 hours). Each run then returns only posts that are new for that keyword/profile or whose like/reply/repost counts changed since the previous run, and can post the diff to webhookUrl or Telegram — monitor-check is $0.005 per run, change is $0.001 per new/changed row, so a quiet 6-hourly check on one keyword costs about $0.02/day even before any matching row.
Related actors
- Reddit Scraper (subreddit posts, search, comments, no login) — the same keyword-search-and-monitor pattern, for Reddit posts and comments instead of Threads.
- Facebook Pages Search: Business Contacts, Followers, Monitor — a brand's Facebook presence and contacts instead of its Threads posts.
- Telegram Channel Search Scraper (topic, subscribers, no login) — find Telegram channels by the same kind of keyword.
- YouTube Comments Scraper (no login, text + likes, monitor) — audience reaction on YouTube videos instead of Threads replies.
How it works
- Searches → the logged-out Threads search preload for each query, capped per query by
maxPostsPerSearch(there is no continuation to page through — verified 2026-09-26 that even a high-volume query's preload carrieshas_next_page: false). - Profiles → the public profile page is loaded; you get one
type: profilerow (bio, followers, verified) plus the posts Threads preloads on that page. - Post URLs → the post itself (
source: post), its reply feed (source: reply) and, withincludeRelated, the related-posts block. - Residential proxy is required — Threads serves an empty shell to datacenter IPs — and the actor raises a block instead of quietly returning an empty dataset, even when a single query or profile is walled.
Input
| Field | Meaning | Default |
|---|---|---|
searches | Keyword queries to search Threads for | empty |
maxPostsPerSearch | Cap on rows taken per search query | 25 |
profiles | Usernames or profile URLs, e.g. nasa | ["nasa"] |
postUrls | Post permalinks to open with their replies | empty |
includeProfile | Emit one type: profile row per profile | true |
includeReplies | For postUrls: include the reply feed | true |
includeRelated | For postUrls: include Threads' related posts | false |
maxItems | Stop after this many rows overall | 20 |
mode | scrape or monitor (only new/changed since last run) | scrape |
monitorStateId, webhookUrl, telegramBotToken, telegramChatId | Monitor-mode state key and alert targets | empty |
Pricing
| Event | Price |
|---|---|
| result | $0.001 per row ($1 per 1,000) |
| monitor-check | $0.005 per monitor run |
| change | $0.001 per new/changed row |
Charged only for rows actually pushed; the proxy traffic (residential, required — Threads serves an empty shell to datacenter IPs) is billed by Apify on top.
Found it useful? A short review on the Store page helps other people find this actor and tells us what to improve. If something is wrong, open an issue on the actor page — issues are answered within a day.
Why this actor
- No login and no cookies to supply — your Threads account is never involved and cannot be flagged.
- Keyword search, profiles, and single posts with replies live in one actor, so one input shape covers three jobs.
- Monitor mode with webhook and Telegram alerts on new or changed posts, per keyword or per profile.
- A run that returns nothing pushes nothing and charges no result events; a real block is reported as a block, not as an empty dataset — even when only one keyword or profile is fed in.
Limits
- Logged-out Threads exposes what its public pages preload: roughly the newest 5–15 posts per profile, the first ~25 replies per post and the first page of search. Deeper pagination needs a logged-in session, which this actor deliberately does not use (no account risk for you).
- Private profiles and age-gated content are not available.
- Counts are as rendered by Threads at scrape time.
FAQ
Does it need a Threads or Instagram login? No. There is no account or cookie field. That is also why pagination stops where the public page stops.
How many posts do I get per profile? Whatever Threads preloads on the public profile page, usually the newest 5–15. For more history, feed the individual post URLs you already have into postUrls.
What happens when there are no results? No rows are pushed and no result events are charged. The RUN_SUMMARY record in the run's key-value store carries emptyReason, so an empty run is distinguishable from a block.
Changelog
- 0.1: initial release — profiles, posts with replies, search, monitor mode. Updated 2026-09-26: keyword search re-verified against a fresh platform fetch; added
maxPostsPerSearch; a walled run now blocks even for a single keyword/profile instead of reporting an empty run; re-positioned title/description/README around search + monitor.