Threads Scraper (Meta) - Posts, Replies, Profiles & Search
Pricing
from $2.45 / 1,000 results
Threads Scraper (Meta) - Posts, Replies, Profiles & Search
Scrape Meta Threads (threads.net) posts by keyword, the latest posts of any profile, and the replies under any post. Get text, likes, replies, reposts, quotes, shares, images, video links and author details. No login or cookies needed. Export to JSON, CSV or Excel.
Pricing
from $2.45 / 1,000 results
Rating
0.0
(0)
Developer
Silkline
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
5 hours ago
Last modified
Categories
Security
Limited permissionsShare
Threads Scraper is a Threads API that extracts public data from Meta Threads (threads.net), the social app by Meta, and returns clean, flat JSON. It works in seven modes: search Threads posts or profiles by keyword, get the latest posts, replies or reposts of any profile, collect the replies under any post, and look up single posts. Every item includes the text, likes, replies, reposts, quotes, shares, image and video links, and the public profile of the author. No Threads or Instagram account, API keys, proxies or cookies needed.
It is made for marketers, social media analysts, researchers and developers who want Threads posts and replies in a spreadsheet, database or data pipeline. Pricing is pay per event: $0.003 per post or reply, plus a $0.00005 start fee for each keyword, profile or post you give it, so you can work out the cost before you run.
What is Threads?
Threads is a social app from Meta for short public posts, available on the web at threads.net. People publish text, images and videos, and other users like, reply to, repost, quote and share them. This Actor turns those public posts and replies into structured data you can filter, sort and analyse.
What data can you get?
Modes
| Mode | Give it | You get |
|---|---|---|
search | keywords | up to 20 posts per keyword |
userPosts | usernames, @names or profile links | the latest posts of each profile, up to 25, with the author's bio and follower count (replies to other people are left out) |
replies | Threads post links | the direct replies under each post, up to about 20 |
searchProfiles | keywords | up to 10 matching profiles per keyword (username, name, ID, picture, verified flag) |
userReplies | usernames, @names or profile links | up to 25 recent replies each profile wrote, each with the post it answers |
userReposts | usernames, @names or profile links | the posts each profile reposted (the original posts, with who reposted them and when), up to 25 |
postDetails | Threads post links | the post itself: text, counts, pictures, video and author |
Fields
Every item is one post ("type": "post"), reply ("type": "reply"), reposted post ("type": "repost") or profile ("type": "profile"). The table lists the exact field names in the dataset.
| Field | What it contains | Where you get it |
|---|---|---|
text | Post or reply text; null for pictures without a caption | All modes |
likeCount | Number of likes | All modes |
replyCount | Number of replies | All modes |
repostCount | Number of reposts | All modes |
quoteCount | Number of quotes | All modes |
shareCount | Number of shares | All modes |
createdAt | Publishing time, ISO 8601 UTC | All modes |
url | Link to the post or reply on threads.net | All modes |
username | Public username of the author | All modes |
userId | Author's Threads user ID | All modes |
displayName | Public display name of the author | Posts only; not included on replies |
avatarUrl | Author's profile picture URL (largest available in profile mode) | All modes |
isVerified | Whether the author has a verified badge | All modes |
isPrivate | Whether the author's account is private | All modes |
authorFollowers | Follower count of the author | userPosts only (null on search posts; not included on replies; also null when Threads' profile lookup is down and the profile is found through search instead) |
bio | Author's bio as published | userPosts only (null on search posts; not included on replies; also null when Threads' profile lookup is down and the profile is found through search instead) |
mediaType | text, image, video or carousel | All modes |
imageUrls | Pictures of the post (one per carousel slide); an empty list when there are none | All modes |
videoUrl | First video of the post | All modes |
type | post, reply, repost or profile | All modes |
postId | Post ID | Posts |
shortcode | The code in the post or reply link | All modes |
replyId | Reply ID | Replies |
parentPostId | ID of the post a reply belongs to | Replies |
parentUsername | Username of the author being replied to | Replies |
repostedBy | Username of the profile that reposted the post | userReposts |
repostedAt | Time of the repost, ISO 8601 UTC | userReposts |
isActiveOnThreads | Whether the profile is active on Threads | searchProfiles |
In Apify Console the dataset has two table views, Posts and Replies, that show the text, username, main counts, createdAt and url at a glance. The full items with all fields are included in every export.
How to use Threads Scraper
- Open Threads Scraper in Apify Console.
- Choose a Mode: search posts by keyword, profile posts, or replies of posts.
- Fill in the list for that mode: keywords, usernames or post links. Usernames can be written as
zuck,@zuckorhttps://www.threads.net/@zuck. Profile posts and replies modes need at least one entry. - Set Max results per keyword, profile or post (default 20).
- Click Start.
- Open the dataset and export the results as JSON, CSV or Excel, or read them through the Apify API.
Input
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
mode | string | Required | What to scrape: search (posts by keyword), userPosts (posts of profiles) or replies (replies under posts) | search |
keywords | array of strings | Optional (mode search) | Search keywords; each returns up to 20 posts. Falls back to "coffee" when empty | none (prefilled with coffee in Console) |
usernames | array of strings | Required in mode userPosts | Usernames (zuck), @zuck or profile links; each returns up to the 25 most recent posts, replies to others left out | none (prefilled with zuck in Console) |
postUrls | array of strings | Required in mode replies | Threads post links (https://www.threads.net/@<user>/post/<code>); each returns up to about 20 direct replies | none (prefilled with one sample post link in Console) |
maxResults | integer (1 to 25) | Optional | Maximum items per keyword, profile or post; capped at 20 for search, 25 for profile posts and 20 for replies | 20 |
maxResults is the limit for each keyword, profile or post, not for the whole run. The run delivers at most that many items per input. Threads returns one page only per input, so a value above the cap of a mode does not return more items.
In userPosts mode usernames must contain at least one entry, and in replies mode postUrls must contain at least one entry; an empty list fails the run. The Console prefill does not apply to API calls. An entry that is not a readable username or post link also fails the whole run. Only keywords falls back to "coffee" when empty. Each list is cut to its first 50 unique entries; the rest are dropped.
Search Threads posts by keyword
{"mode": "search","keywords": ["coffee", "espresso machine"],"maxResults": 20}
Threads profile posts
{"mode": "userPosts","usernames": ["zuck", "@mosseri"],"maxResults": 25}
Threads replies of a post
{"mode": "replies","postUrls": ["https://www.threads.net/@jue.halus/post/DeOvnAEiZHG"],"maxResults": 20}
Search Threads profiles
{"mode": "searchProfiles","keywords": ["zuck"],"maxResults": 10}
Threads profile replies and reposts
{"mode": "userReplies","usernames": ["zuck"],"maxResults": 25}
Use "mode": "userReposts" for the posts a profile reposted.
Threads post details
{"mode": "postDetails","postUrls": ["https://www.threads.net/@jue.halus/post/DeOvnAEiZHG"]}
Empty input
An empty input {} searches for "coffee" and returns up to 20 posts. It is a quick way to see the output format.
Output example
The values below are illustrative samples.
Threads post (profile mode)
{"type": "post","postId": "3998123456789012345","shortcode": "DdAbCdEfGhI","url": "https://www.threads.net/@sample.roastery/post/DdAbCdEfGhI","text": "New single-origin beans are in this week. Which brew method should we test first?","username": "sample.roastery","userId": "63123456789","displayName": "Sample Roastery","avatarUrl": "https://.../avatar.jpg","isVerified": false,"isPrivate": false,"authorFollowers": 12840,"bio": "Small-batch coffee roaster. Brewing tips every week.","createdAt": "2026-10-08T09:21:54Z","likeCount": 148,"replyCount": 20,"repostCount": 6,"quoteCount": 0,"shareCount": 7,"mediaType": "carousel","imageUrls": ["https://.../slide1.jpg", "https://.../slide2.jpg"],"videoUrl": null}
In search mode posts have the same fields, but authorFollowers and bio are null.
Threads reply
Reply items do not include displayName, authorFollowers or bio.
{"type": "reply","replyId": "3998234567890123456","parentPostId": "3998123456789012345","parentUsername": "sample.roastery","shortcode": "DdBcDeFgHiJ","url": "https://www.threads.net/@sample.reader/post/DdBcDeFgHiJ","text": "Pour-over first, please!","username": "sample.reader","userId": "58123456789","avatarUrl": "https://.../avatar.jpg","isVerified": false,"isPrivate": false,"createdAt": "2026-10-08T10:02:11Z","likeCount": 12,"replyCount": 1,"repostCount": 0,"quoteCount": 0,"shareCount": 0,"mediaType": "text","imageUrls": [],"videoUrl": null}
How much does it cost?
Threads Scraper uses pay-per-event pricing. There are two events:
| Event | Price | When it is charged |
|---|---|---|
Start fee (run-start) | $0.00005 | Once for each keyword, profile or post you give it |
Result (result) | $0.003 | For each post, reply, reposted post or profile returned |
Examples:
- 20 search results for one keyword: $0.00005 + 20 × $0.003 = $0.06005.
- Two keywords with 20 results each: $0.1201.
- 100 results from five keywords (20 each): 5 × $0.00005 + 100 × $0.003 = $0.30025.
- 100 results from four profiles (25 each): 4 × $0.00005 + 100 × $0.003 = $0.3002.
- Details of 10 posts: 10 × $0.00005 + 10 × $0.003 = $0.0305.
On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.
How charging works:
- The start fee for the first keyword, profile or post is charged when the first request succeeds, even if that request returns nothing. It is not charged when the run fails from the start or rejects the IDs, or when your spending limit cannot cover it.
- Each further start fee is charged just before the first request for that keyword, profile or post, and is kept even if that input then fails or returns nothing.
- A keyword that returns no results, or a profile that does not exist, still costs its start fee.
- If a run fails from the start, nothing is charged; a start fee already paid is not refunded.
- You are never charged for items the run did not deliver, and never for more than
maxResultsitems per input. - The run stops by itself if your spending limit is reached.
Use cases
- Brand and product monitoring: search keywords for a product, a competitor or a topic and see what people post about it today, with likes, replies and reposts for each post.
- Creator and competitor research: pull the latest posts of a profile together with its follower count and bio, and compare how each post performs.
- Social listening and sentiment: collect the direct replies under a launch, an announcement or a widely shared post.
- Creator shortlists: compare profiles by
authorFollowers,isVerifiedand the engagement counts of their recent posts. - AI and data projects: Threads text with clean metadata for classification, summaries and trend analysis.
- Recurring reports: schedule runs on the same keywords or profiles and compare the counts from run to run.
Integrations and API
You can start Threads Scraper from your own code through the Apify API, run it on a schedule in Apify Console, and send the results to other tools through Apify integrations and webhooks. Results are stored in a dataset that you can download as JSON, CSV or Excel, or read item by item through the API.
Python example with the apify-client package:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("clover_folktale/threads-scraper").call(run_input={"mode": "search","keywords": ["coffee", "espresso machine"],"maxResults": 20,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
To get profile posts or replies instead, change mode and pass usernames or postUrls as shown in the Input section.
Tips and limits
- One page per input. Search returns about 20 posts per keyword (10 profiles in
searchProfiles), profiles about 25 posts, replies or reposts, and replies about 20 per post. Reposts are often fewer than 25 because Threads lists only the recent ones. Asking for more is not possible; the limits are also in the input description. If you need more data, use more keywords or more profiles. - Up to 50 inputs per list. Each list (keywords, usernames or post links) is cut to its first 50 unique entries; the rest are dropped.
- Check your list. In profile posts and replies modes an empty list fails the run, and so does any entry that is not a readable username or post link.
- Search order. Search results are what Threads search returns for the keyword, not a time-ordered feed.
- Profile order. Profile mode returns posts in the order Threads lists them (newest first). Replies the profile wrote to other people are left out.
- Direct replies only. Replies mode returns direct replies; answers nested under a reply are not expanded.
- Profile lookup path. A username may be found through profile search (exact username match only); the posts, replies or reposts are the same, but
authorFollowersandbioarenullfor that run. - Not found. Unknown profiles and posts are skipped (their start fee still applies).
- Failed runs. A run ends as Failed if it stops before anything has been delivered; run again later. You are never charged for items the run did not deliver.
- Counts and media. Counts are what Threads shows at the time of the run. Media links are temporary; download what you need soon after the run.
- Empty fields. Reply items do not include
authorFollowers,displayNameorbio, and search results have noauthorFollowersorbio(they arenull). Follower counts and bios come with profile posts.textisnullfor pictures without a caption,imageUrlsis an empty list when a post has no pictures, andvideoUrlis empty when a post has no video. - Unreadable entries. If one entry of an ID or link list cannot be read (a typo, a stray cell, a link to the wrong kind of page), it is skipped and named in the log, and the status message says how many were skipped; the other entries still run and nothing is charged for a skipped one. Only a list with no readable entry stops the run with an input error.
- Free plan. On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.
FAQ
Do I need a Threads or Instagram account?
No. You do not need a Threads or Instagram account, API keys, proxies or cookies.
Is it legal to scrape Threads?
The Actor only returns public data: public posts, public replies and the public profile fields of their authors (username, display name, user ID, profile picture, verified and private flags, and in profile mode the bio and follower count). It does not return private account data such as private messages. Bios are returned as published and may contain contact details the author made public. You are responsible for how you use the data, including any data protection rules that apply to you.
How fresh is the data?
Data is collected when you run the Actor. Likes, replies, reposts, quotes, shares and follower counts are the values Threads shows at that moment.
Why are some fields empty?
Some fields only exist in one mode. authorFollowers and bio come only with profile posts (they are null on search posts), and reply items do not include displayName, authorFollowers or bio at all. text is null for pictures without a caption.
How many results can I get?
Up to about 20 posts per keyword, 25 posts per profile and 20 replies per post, because Threads answers one page per request. Each list of keywords, profiles or post links takes up to 50 unique entries; anything after the first 50 is dropped.
Can I schedule runs and export the data?
Yes. You can schedule runs in Apify Console or start them through the Apify API, and export each dataset as JSON, CSV or Excel.
What happens if a profile or post does not exist?
It is skipped and its start fee still applies.
A field or mode is missing. What can I do?
Open an issue from the Actor page and it will be looked at.
Other tools by Silkline
Every tool below charges per result and needs no login or cookies.
Global platforms
- TikTok Scraper - Video Search, Hashtags, Profiles & Sounds
- TikTok Live Scraper - Search, Status, Rankings & Gifters
- YouTube Shorts Scraper - Search, Channel Shorts & Videos
- Instagram Scraper - Posts, Reels, Profiles & Followers
- Reddit Scraper - Posts, Comments, Subreddits & Users
- Telegram Channel Scraper - Messages, Search & Subscribers
- IMDb Scraper - Top 250 Movies & TV Shows Chart, Ratings
More from Silkline
- Xiaohongshu 小红书 RedNote Scraper - Notes, Comments & Replies (Chinese social media and content)
- Taobao Tmall 淘宝 Product Scraper - Prices, Sales & Shops (E-commerce)
- Douyin Xingtu 巨量星图 KOL Scraper - Rates, CPM & Rankings (Marketing and creator data)