An Apify Actor Store listing soon
Threads scraper: profile posts, replies and search, without an account
$1.50 per 1,000 posts, with no start fee. The leading Threads scraper on Apify charges $2.50 per 1,000 results plus $0.02 per run start (its public record, 2026-11-10). Give handles, post URLs or keywords: one row per post with its text, date, author, likes, replies, reposts, quotes and media links, and one free row per profile with followers, bio and links. No Threads account, no cookies, no browser. Said up front: about 200 posts per profile, about 20 per search, and no view counts, because that is what Threads serves a logged-out visitor.
What you get
One row per post, and a free row per profile.
Where Threads does not give a field, it is null, never guessed. The dataset has a Posts view, a Profiles view and an All fields view, and exports as JSON, CSV, Excel or XML, or through the API.
- The post: its ID, short code and URL, the text, the date posted, the language and topic when Threads states them, whether it is pinned, and whether it was edited.
- The author: handle, ID, display name and whether the account is verified.
- Engagement: likes, replies, reposts, quotes and reshares, as counts. No view count: Threads does not send one to a logged-out visitor.
- Replies and quotes: whether the post is a reply and to whom, and the URL of the post it quotes.
- Media and links: the media type, every image and video with its link and size, the accounts the text mentions, the links written in the text, and the link card. Media links are Threads' own signed links and expire: download what you need soon after the run.
- The profile row, free: handle, ID, name, bio, followers, verified, private or not, links and avatar.
- Where the row came from: the profile, post URL or keyword, its type, the position in that source and the time it was read.
Whether a media item is an image or a video is told from the renditions Threads sends, not from a type it states. Every run also writes a summary: what each source gave, where its list stopped and why, what was charged and what was free.
Threads profile scraper, replies scraper and search
Three ways in, any mix, one run.
| Input | What it reads |
|---|---|
| Profiles | Handles (natgeo or @natgeo) or profile URLs. Each gives one free profile row (followers, bio, links) and the profile's own posts, newest first, up to the roughly 200 that Threads lists without an account. |
| Post URLs | Addresses of single posts (threads.com/@user/post/...). Each gives the post and, when you ask for replies, the replies under it, replies to replies included. |
| Search queries | Keywords. Each returns the first set of posts Threads shows a logged-out visitor for that search, about 20, and no further page. |
- Posts per profile: 50 by default. Threads ends a profile's list at about 200 posts for a visitor without an account, whatever you ask for.
- Replies per post: 0 by default, which reads the post alone.
- Maximum posts in the run: an optional cap for the whole run, besides the spending limit you set on Apify.
{
"profiles": ["natgeo", "https://www.threads.com/@nasa"],
"maxPostsPerProfile": 200,
"postUrls": ["https://www.threads.com/@nasa/post/DdXJKzbkqPg"],
"maxRepliesPerPost": 100,
"searchQueries": ["coffee"]
}Measured in the cloud
400 posts from two profiles in 73 seconds.
The Actor sends plain HTTP requests, with no browser, and runs in 256 MB of memory. Runs of our own private build on Apify on 2026-11-10, logged out, through Apify's datacenter proxy:
One day and a handful of runs, not a track record. In the four runs of the current build, Threads refused none of 70 requests. Two things did go wrong that day, and the runs said so: on the earlier build, one search of three timed out and was lost, and since then a request that gets no answer is sent once more; and on a second profile, Threads answered an error after 222 posts, which ended that profile as partial with the reason (run hh3DEngH0uabFN8r6). Seven profiles of 50 posts took 128 seconds, and a handle that does not exist came back as a free row (run 9KXhWJasgPNsMPEkk): sources are read one after another.
Why this one
Six Threads scrapers on Apify, price by price.
Free plan prices, monthly users and the share of runs that succeeded over 30 days, as each Actor's public record showed them on 2026-11-10 (api.apify.com/ for the leader, the same address for each). "Success" is the share of runs that succeeded, not of posts delivered. We ran none of these Actors, and what each returns was not compared field by field or on the same input.
| Actor | Price, Free plan | Monthly users | Success, 30 days |
|---|---|---|---|
| futurizerush/ | $2.50 per 1,000 results, plus $0.02 per run start | 2,195 | 97.46% |
| apify/ | $5.00 per 1,000 profiles | 709 | 99.70% |
| watcher.data/ | $8.00 per 1,000 results | 592 | 99.10% |
| automation-lab/ | $5.00 per 1,000 posts, down to $1.20 on its top plan tier | 478 | 99.05% |
| igview-owner/ | $20.00 per 1,000 results ($5.00 on paid plans) | 454 | 97.10% |
| futurizerush/ | $2.50 per 1,000 results | 362 | 96.92% |
| This Actor | $1.50 per 1,000 posts, no start fee; profile rows free | New | New |
1,000 posts in one run cost $1.50 here and $2.52 at the leader on the Free plan; on many small runs its start fee weighs more. The leader's record shows a default memory of 4 GB; this Actor runs in 256 MB. Where we lose: the others have users, runs and a 30-day record, and ours is new. Two of the six are search Actors, and this one returns only about 20 posts per query; how deep theirs go was not measured by us. And this one has no view counts.
A real post
A post of @nasa, as the Actor reads it.
One public post as Threads answered a logged-out request on 2026-11-10, read by the Actor's own parser. Its media link is shortened here, and a run adds the row's position in its source and the time it was read.
{
"rowType": "post",
"status": "ok",
"source": "nasa",
"sourceType": "profile",
"postId": "3987696319896658912",
"code": "DdXJKzbkqPg",
"url": "https://www.threads.com/@nasa/post/DdXJKzbkqPg",
"text": "You've got mail: a postcard from Mars!\n\nTo mark the Curiosity rover’s 5,000th day on the Red Planet, this new postcard combines two panoramas captured by the rover's navigation cameras.",
"createdAt": "2026-09-16T20:27:46.000Z",
"authorUsername": "nasa",
"authorId": "28829152388",
"authorFullName": "NASA",
"authorVerified": true,
"likeCount": 5593,
"replyCount": 106,
"repostCount": 247,
"quoteCount": 21,
"reshareCount": 65,
"isReply": false,
"replyToUsername": null,
"isPinned": false,
"isEdited": false,
"mediaType": "image",
"mediaUrls": ["https://... (Threads' signed link, shortened here)"],
"media": [{ "type": "image", "url": "https://... (the same link)", "width": 2000, "height": 1050 }],
"mentions": [],
"textLinks": [],
"linkUrl": null,
"topic": "Space Threads",
"language": "en",
"quotedPostUrl": null
}Limits
What it does not do, said up front.
- About 200 posts per profile. Without an account, Threads ends a profile's list after about 200 posts: 208 on the one profile read to its end on 2026-11-10. You get the newest ones, not the whole history, and the summary says so when a profile ends short of what you asked for. One profile, one day: the exact number may differ per profile.
- About 20 posts per search query. Threads gives a logged-out visitor one set of results and no further page. The Actor returns that set and does not pretend to go deeper.
- No view counts. Threads does not send them to a visitor without an account, so there is no such field.
- No account, no cookies, ever. The Actor does not log in, does not accept your session cookies and does not use the official API. Private profiles show no posts to a logged-out visitor, so they give none here.
- It does not get around a refusal. When Threads refuses a request, the run keeps what it read, says so in the row and the summary, and stops reading that source. A request that gets no answer at all is sent once more, then given up.
- Not in this version. An account's replies tab, its reposts and media tabs, account search and tag search.
- Threads can change its pages. The requests this Actor sends are the ones the Threads web page itself makes, and Meta can change them without notice. When that happens a source ends partial with the reason, never silently short.
Pricing
Pay per post delivered. Nothing to start a run.
$1.50 per 1,000 posts on Apify's Free and Bronze plans, $1.35 on Silver, $1.20 on Gold and up. That is $0.0015 a post on the Free plan, for a post or a reply alike, with no start fee. Free: the profile rows, a profile or a post that was not found, a source that failed (its row says why) and duplicates: a post found twice in a run, by a profile and by a search, is stored and charged once. 200 posts from each of 5 profiles cost at most $1.50. Apify's free plan includes $5 of monthly usage, about 3,300 posts. Set a maximum cost per run and the Actor stops cleanly when it is reached.
More public data
Meta's ads, and what people search for.
The Facebook Ad Library scraper exports the ads a brand runs on Meta, with Google and Microsoft ads in the same run: what a brand pays to say, next to what it posts. The Google Trends scraper reads interest over time for the topics you follow on Threads.
For developers
How it reads Threads, request by request.
The guide explains what a Threads page carries for a logged-out visitor, where the login prompt stops the interface, what the official Threads API offers instead, and when that is the better choice.
Questions
Do I need a Threads or Instagram account, or cookies?
No. The Actor reads Threads logged out, the way the site answers a visitor who has no account. It never logs in, never asks for your cookies or a session, and does not use the official Threads API or a token.
How many posts can I get from one Threads profile?
About 200, the newest ones. Without an account, Threads ends a profile's list there: 208 posts on the one profile we read to its end (run pmo2BqGmFrha0Yq9s, 2026-11-10). It is a ceiling of the logged-out view, not the profile's whole history, and the run's summary says so when a profile ends short of what you asked for.
Can I search Threads by keyword?
Yes, but the result is shallow: about 20 posts per query (18 to 24 in our runs of 2026-11-10). Threads gives a logged-out visitor no further page of search results, and the Actor does not pretend otherwise. For depth, use profiles and post URLs.
Does it return view counts?
No. Threads does not send a post's view count to a visitor without an account: there was none in any page or answer we read on 2026-11-10. Likes, replies, reposts and quotes are in every row.
Can I get the replies under a post?
Yes. Give the post's URL and a number of replies: you get the post and the replies under it, replies to replies included, in the order Threads lists them. We read 300 replies under one post (301 rows with the post, run Wd2ibCEoiT8m2lFiB, 2026-11-10); where the list ends was not measured.
What does it cost?
$1.50 per 1,000 posts on Apify's Free and Bronze plans, $1.35 on Silver, $1.20 on Gold and up, with no start fee. A post row and a reply row cost the same. Profile rows are free, and so are rows for a profile or a post that was not found, a source that failed, and duplicates. Apify's free plan includes $5 of monthly usage, about 3,300 posts.
Is there an official Threads API?
Yes. Meta's Threads API reads and publishes for an account that authorizes your app with an access token. For other accounts' public posts and for keyword search across public posts, it requires permissions that Meta grants per app (its documentation, read 2026-11-10). Our guide on how to scrape Threads says when it is the better choice.
Is it legal to scrape Threads?
The Actor reads only what Threads serves a visitor who is not logged in: public posts of public profiles. It uses no account and no cookie from a signed-in session, and when Threads refuses a request it stops reading that source. Meta's terms and Threads' robots.txt prohibit automated collection without Meta's written permission, and Threads' own interface asks a visitor to log in to see more than a profile's first posts. Posts are written by people: how you store and use them, under privacy law such as the GDPR, is your responsibility. This Actor is not affiliated with Meta or Threads.
Public posts of public profiles only: no login, no account, no cookies. Not affiliated with Meta or Threads. Coming to the Apify Store, and not affiliated with Apify either.