Threads Scraper: Profiles, Posts & Replies
Pricing
from $1.00 / 1,000 posts
Threads Scraper: Profiles, Posts & Replies
Public Threads (threads.com) profiles with followers and bio, their latest posts, and single post pages with visible replies: text, likes, replies, reposts, quotes, media. No login, no browser. $1.00 per 1,000 posts.
Pricing
from $1.00 / 1,000 posts
Rating
0.0
(0)
Developer
subimpact
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Read public Threads (threads.com) profiles, their latest posts, and single post pages with their visible replies. Plain HTTP, no login, no API key, no browser.
Each run gives you three kinds of row in one dataset:
- one profile row per profile: username, user id, full name, bio, bio links, follower count, verified and private flags, avatar and how many posts the page carried
- one post row per post: text, creation time, likes, reply / repost / quote / reshare counts, image and video URLs, link preview, author, quoted post
- one reply row per visible reply of a post link, with the code of the post it was rendered under
Rows are pushed one at a time as soon as they are parsed, so a run that hits its time limit still delivers everything it collected.
Input
{"usernames": ["zuck", "nasa"],"postUrls": ["https://www.threads.com/@zuck/post/DeZtp-TkQHh"],"maxPostsPerProfile": 15,"includeReplies": true,"maxRepliesPerPost": 20,"maxItems": 200,"proxyConfiguration": { "useApifyProxy": true }}
usernames accepts zuck, @zuck, https://www.threads.com/@zuck and https://www.threads.net/@zuck.
postUrls accepts https://www.threads.com/@user/post/<code> and the .net form.
An entry in either list that cannot be read (a typo or another site's link) does not fail the run: it
becomes its own error row with your entry in inputValue and the reason in error, it is never charged, and the
remaining entries are scraped as usual. Blank lines are skipped. Only a run where every entry is unreadable fails, with a message naming
the rejected entries.
Give usernames, postUrls, or both. If you leave both out, the actor reads the profile zuck so that a
one-click run still returns data. Both fields are optional in the form on purpose: neither carries a default, so a
run that only sets postUrls never also scrapes a profile.
maxPostsPerProfile (0 to 50, 0 means the profile row only), includeReplies, maxRepliesPerPost (0 to 100) and
maxItems (1 to 10000, the cap on charged rows) bound the size of a run. The default run of the two prefilled
profiles delivers 2 profile rows and 30 post rows for about $0.034.
Output
One real profile row, trimmed here to the fields you use most (avatar and profile picture URLs are long CDN links):
{"rowType": "profile","username": "zuck","userId": "63055343223","fullName": "Mark Zuckerberg","bio": "Mostly superintelligence and MMA takes","bioLinks": [],"followers": 5750904,"verified": true,"isPrivate": false,"profileUrl": "https://www.threads.com/@zuck","postsInPage": 33,"status": "ok","error": null,"inputValue": "zuck","scrapedAt": "2026-10-29T12:00:00.000Z"}
One real post row from that profile:
{"rowType": "post","postCode": "DeZtp-TkQHh","postId": "4006434140014576097","postUrl": "https://www.threads.com/@zuck/post/DeZtp-TkQHh","authorUsername": "zuck","authorId": "63055343223","authorVerified": true,"text": "Introducing Muse Wonder, our new family of frontier models with state of the art performance for personal and professional agentic work.","createdAt": "2026-10-12T16:56:29.000Z","likes": 2141,"replies": 615,"reposts": 170,"quotes": 62,"reshares": 148,"views": null,"isReply": false,"parentPostCode": null,"quotedPostCode": null,"imageUrls": ["https://scontent-iad6-1.cdninstagram.com/..."],"videoUrls": [],"linkUrl": null,"isPinned": false,"sourceProfile": "zuck","sourcePostUrl": null,"status": "ok","error": null,"scrapedAt": "2026-10-29T12:00:00.000Z"}
A reply row from the same run has "rowType": "reply", its own postCode, parentPostCode set to the post it
was rendered under, and sourcePostUrl set to the post link you asked for.
Every field is described in the dataset schema. status is ok, not_found_or_login_wall, error or
skipped; only ok rows are charged.
How this compares
Free-plan list prices checked on 2026-10-29. Competitor platform usage is billed separately: see their listings.
| Actor | Price | Notes |
|---|---|---|
| futurizerush/meta-threads-scraper | $2.50 per 1,000 results plus $0.02 per run start | 1,946 users in 30 days |
| apify/threads-profile-api-scraper | $5.00 per 1,000 profiles | 673 users in 30 days |
| this actor | $1.00 per 1,000 posts, $2.00 per 1,000 profiles, no start fee | profiles, posts and visible replies in one dataset |
Pricing
Pay per event:
- $0.002 per profile row (
profile) - $0.001 per post or reply row (
post)
There is no start fee. You are charged only after a row has been pushed, and never for error rows, missing profiles, login walls or an empty result. Apify platform usage (compute and proxy) is billed on top.
Limits
- About the 15 latest threads of a profile: threads.com serves one profile page with no deeper pagination, so a profile gives the threads in that page (each thread can hold several posts) and nothing older.
- No search, hashtag or home feed pages; profiles and single post links only.
- Public accounts only. A private or missing profile, or a login wall, is reported as
not_found_or_login_walland is not charged. - Only the replies threads.com renders on the post page are available. There is no way to page through further replies.
- View counts are published for some posts only;
viewsstaysnullwhen Threads does not print one. - One request per profile and one per post link, retried up to 3 times with a fresh proxy session.
Responsible use
Threads' robots.txt says automated collection needs Meta's permission. This actor reads public pages only, holds no login and no cookies, and returns what any visitor sees. You are responsible for how you use the data: comply with Meta's terms and with privacy law in your jurisdiction, and do not use it for mass profiling or harassment.