Threads Posts Scraper - Posts & Replies
Pricing
from $1.69 / 1,000 threads posts
Threads Posts Scraper - Posts & Replies
Scrape Threads posts and their replies from post URLs. Get post text, likes, reply counts, images, videos, GIFs, text attachments, author info, and timestamps. Export JSON, CSV, Excel.
Pricing
from $1.69 / 1,000 threads posts
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Threads Posts Scraper - Posts & Replies
Threads Posts Scraper extracts public Threads posts and their replies from post URLs, with post text, likes, reply counts, images, videos, GIFs, text attachments, author details, and publish time.
| Paste threads.com or threads.net post links and get one clean record per post with up to 5,000 replies (including replies to replies shown in the conversation), 25 fields per post and reply, and no Threads login or API key. |
| ParseBird Threads Suite • Posts, replies, profiles & search | ||
|
Threads Scraper Profiles, user posts & search |
Threads Search Scraper Search posts by keyword or hashtag |
Threads Posts Scraper You are here |
|
Threads User Posts Scraper Full profile post history | ||
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Use Apify Actor parsebird/threads-posts-scraper to scrape public Threads posts and their replies. Example with ApifyClient (Python): client.actor("parsebird/threads-posts-scraper").call(run_input={"startUrls":[{"url":"https://www.threads.com/@openai/post/DW7RXR7EnRC"}],"includeReplies":True,"maxReplies":12}). Inputs: startUrls array of {url} required (threads.com or threads.net post links like https://www.threads.com/@user/post/CODE, or short https://www.threads.com/t/CODE links; duplicates processed once); includeReplies boolean default true; maxReplies integer default 12 (0-5000, per post URL, includes replies to replies); proxyConfiguration object default {"useApifyProxy": false} (optional; failed posts are retried once through Apify Proxy automatically). Output: one dataset item per post URL with {thread, replies[]}. Every post and reply has: text, attachment_text, published_on (Unix seconds), id, pk, code, username, user_full_name, user_pic, user_verified, user_pk, user_id, has_audio, reply_count, like_count, repost_count, quote_count, images[], image_count, videos[], has_gif, gif_description, link_url, url. Pricing: pay per result, the post and each reply count as one result each. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
What is Threads Posts Scraper?
Threads Posts Scraper is a Threads post scraper and API alternative that turns links to public Threads posts into structured data. For every post you get the full post text, like, reply, repost, and quote counts, image and video URLs, GIF descriptions, text attachments, the author's username, profile picture, and verified badge, and the publish timestamp, plus the replies to that post with the same fields.
You don't need a Threads or Instagram account, cookies, or a Meta API key. The easiest way to try it is to open the actor, keep the prefilled OpenAI post, and click Start. A post with 12 replies takes a few seconds.
What can Threads Posts Scraper do?
- 🧵 Scrape any public Threads post from its URL: threads.com, threads.net, and short
/t/links all work. - 💬 Scrape Threads replies: collect up to 5,000 replies per post, including replies to replies shown in the conversation, in the order Threads ranks them.
- 🖼️ Get media links: image URLs (including every carousel item), video URLs with an audio flag, and GIF descriptions.
- 📝 Read text attachments: posts with a long-form text attachment return that text in
attachment_text. - 🔗 Get shared links: the destination URL of a link preview, unwrapped from Threads' redirect.
- 👤 Know who posted: username, display name, profile picture, verified badge, and numeric user ID for the author of every post and reply.
- ⏱️ Automate with Apify schedules, the Apify API, webhooks, and integrations such as Google Sheets, Make, Zapier, and Slack.
- 📁 Export results as JSON, CSV, Excel, HTML, or XML.
What data can you extract from Threads?
Each dataset item holds a thread object for the post and a replies array. Every post and reply has these fields:
| Field | Description |
|---|---|
text | The post text. Posts whose whole body is a text attachment return that text here |
attachment_text | Text of an attachment Threads shows as a collapsed snippet, or null |
published_on | Publish time as a Unix timestamp in seconds |
id, pk, code | Full post ID, numeric post ID, and the shortcode used in the post URL |
username, user_full_name, user_pic, user_verified | Author username, display name, profile picture URL, and verified badge |
user_pk, user_id | Author's numeric user ID |
like_count, reply_count, repost_count, quote_count | Likes, direct replies, reposts, and quotes |
images, image_count | Image URLs attached to the post, including carousel items |
videos, has_audio | Video URLs, and whether the video has audio |
has_gif, gif_description | Whether the post is a GIF, and the GIF's description such as "Warning I Told You GIF by Holly Logan" |
link_url | Destination URL of a shared link, or null |
url | Link to the post on threads.com |
How to scrape Threads posts and replies
- Open Threads Posts Scraper and click Try for free or Start.
- In Threads post URLs, add one or more post links. Copy a link on Threads with Share → Copy link, or copy it from the browser address bar.
- Keep Include replies on to get replies, or turn it off to get only the posts.
- Set Max replies per post. The default of 12 keeps the first run cheap.
- Click Start.
- Open the Output tab, or export the results as JSON, CSV, or Excel.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | Yes | — | Threads post URLs, for example https://www.threads.com/@openai/post/DW7RXR7EnRC. threads.net and /t/CODE links also work. One dataset item is produced per URL |
includeReplies | boolean | No | true | Return the replies to each post. Set to false to get only the post |
maxReplies | integer | No | 12 | Most replies to return per post URL (0–5,000), including replies to replies. Each reply is billed as one result |
proxyConfiguration | object | No | {"useApifyProxy": false} | Optional proxy. Runs work without one, and a post that fails to load is retried once through Apify Proxy automatically |
Example input:
{"startUrls": [{ "url": "https://www.threads.com/@openai/post/DW7RXR7EnRC" }],"includeReplies": true,"maxReplies": 12}
Output example
A real item from a run on the example input, with URL query strings removed and the replies list shortened to one entry:
{"thread": {"text": "There’s a new Pro tier in town. \n\nTo celebrate the launch, we’re increasing Codex usage for a limited time through May 31st so that Pro $100 subscribers get up to 10x usage of ChatGPT Plus on Codex to build your most ambitious ideas.\n\nOur existing $200 Pro tier still remains our highest usage option. And as a thank you to our existing Pro users on the $200 tier, we’re extending our 2x Codex usage promo (until May 31st) and we’ve reset your Codex rate limits (yes, again).","attachment_text": null,"published_on": 1775770338,"id": "3871764671238403138_63299409527","pk": "3871764671238403138","code": "DW7RXR7EnRC","username": "openai","user_full_name": "OpenAI","user_pic": "https://scontent.cdninstagram.com/v/t51.82787-19/788716177_18115256264517701_8401817653356104064_n.jpg","user_verified": true,"user_pk": "63299409527","user_id": "63299409527","has_audio": null,"reply_count": 28,"like_count": 217,"repost_count": 23,"quote_count": 8,"images": ["https://scontent.cdninstagram.com/v/t51.82787-15/661617063_18096549797517701_8389667311012176678_n.jpg"],"image_count": 1,"videos": [],"has_gif": false,"gif_description": null,"link_url": null,"url": "https://www.threads.com/@openai/post/DW7RXR7EnRC"},"replies": [{"text": "Aw shit MIGHT have to downgrade Claude for that 10x plus. @openai help convince me haha. Make it irrefutable","attachment_text": null,"published_on": 1775770627,"id": "3871767105461481006_76614717151","pk": "3871767105461481006","code": "DW7R6s-Eu4u","username": "griffinlong.dev","user_full_name": "Griffin Long","user_pic": "https://scontent.cdninstagram.com/v/t51.82787-19/790319655_17943256095321890_5618796657983618003_n.jpg","user_verified": true,"user_pk": "76614717151","user_id": "76614717151","has_audio": null,"reply_count": 0,"like_count": 5,"repost_count": 0,"quote_count": 0,"images": [],"image_count": 0,"videos": [],"has_gif": false,"gif_description": null,"link_url": null,"url": "https://www.threads.com/@griffinlong.dev/post/DW7R6s-Eu4u"}]}
Download the dataset in JSON, CSV, Excel, HTML, or XML from the Output tab or through the API.
Use cases
- Social listening: track what people say under brand, competitor, or creator posts.
- Customer feedback: collect replies to product launch and announcement posts for sentiment analysis.
- Campaign reporting: record likes, replies, reposts, and quotes for a list of campaign posts on a schedule.
- Influencer research: check engagement and audience reactions on creator posts before a partnership.
- AI and research datasets: build conversation datasets of posts and replies for NLP or LLM work.
- Content archiving: keep a copy of post text, media links, and replies for compliance or moderation reviews.
How it works
- The actor reads each Threads post URL and pulls out the post shortcode, so threads.com, threads.net, and
/t/links all resolve to the same post. Duplicate URLs are processed once. - It loads the public post page the same way a logged-out visitor sees it and reads the post and the first replies.
- If you asked for more replies, it pages through the remaining public replies until it reaches
maxRepliesor the end of the conversation. - Each post and reply is converted into the same flat set of fields and saved as one dataset item per URL.
- Failed requests are retried with a fresh connection, and the last retry goes through Apify Proxy. Posts that don't exist, were deleted, or aren't public are logged and skipped, and you are not charged for them.
How much does it cost to scrape Threads posts?
Threads Posts Scraper uses pay-per-event pricing. You pay for each result: the post counts as one result and each reply counts as one result.
| Event | Apify plan | Price per result | Price per 1,000 results |
|---|---|---|---|
| post-scraped | Free | $0.00199 | $1.99 |
| post-scraped | Bronze | $0.00189 | $1.89 |
| post-scraped | Silver | $0.00179 | $1.79 |
| post-scraped | Gold | $0.00169 | $1.69 |
For example, on the Free plan, 100 posts with 12 replies each is 1,300 results, which costs about $2.59. A run that returns only posts (includeReplies off) costs $1.99 per 1,000 posts. Apify's free monthly platform credits can be used for these runs, and you can set a maximum cost per run in the run options; the actor stops when it reaches that limit.
FAQ
Can I scrape Threads without logging in? Yes. Threads Posts Scraper only reads what Threads shows to logged-out visitors, so you don't need a Threads or Instagram account, cookies, or a Meta API key.
Why is reply_count higher than the number of replies I get?
reply_count is the total Threads reports for the post. Some of those replies are hidden, restricted, or removed and are not shown to logged-out visitors, so the actor can only return the replies Threads makes public. For example, the OpenAI post in the example reports 28 replies, and 21 replies are public.
Does it include replies to replies?
Yes. When Threads shows a reply's own replies inline in the conversation, they are included in replies and count toward maxReplies.
Can I get the GIF file?
No. Threads does not serve the GIF file to logged-out visitors, so has_gif and gif_description tell you a GIF is there and what it shows, but no GIF URL is returned.
What happens with deleted or private posts? They are skipped and logged as unavailable, and they are not charged. If none of the URLs can be scraped, the run ends as failed with a message explaining why.
How long do image and video links work? Media URLs come from Meta's CDN and include signed query parameters that expire after some time. Download the files soon after the run if you need to keep them.
Can I scrape a Threads profile or search Threads by keyword? Use Threads Scraper for profiles and user posts, or Threads Search Scraper to search posts by keyword or hashtag. Then pass the post URLs you want into this actor to get their replies.
How do I call it from Python?
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("parsebird/threads-posts-scraper").call(run_input={"startUrls": [{"url": "https://www.threads.com/@openai/post/DW7RXR7EnRC"}],"includeReplies": True,"maxReplies": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["thread"]["like_count"], len(item["replies"]))
How do I call it from JavaScript?
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('parsebird/threads-posts-scraper').call({startUrls: [{ url: 'https://www.threads.com/@openai/post/DW7RXR7EnRC' }],includeReplies: true,maxReplies: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => console.log(item.thread.like_count, item.replies.length));
See the Python client docs, the JavaScript client docs, or the actor's API tab for HTTP endpoints.
Can I run it on a schedule or send results to other tools? Yes. Use Apify schedules to re-scrape posts daily or weekly, and integrations or webhooks to send results to Google Sheets, Slack, Make, Zapier, or your own API.
Something isn't working. What should I do? Open an issue in the Issues tab with the post URL and run link, and we'll look into it.
Is it legal to scrape Threads?
Threads Posts Scraper only collects data that Threads shows publicly to logged-out visitors. It does not access private accounts or data behind a login. Results can still include personal data such as usernames and profile pictures, which may be protected by the GDPR in the EU and by other regulations elsewhere. Don't scrape personal data unless you have a legitimate reason, and check the Threads Terms of Use for your use case. If you're unsure, consult a lawyer. Read more in Apify's post Is web scraping legal?
Other Threads and social media scrapers
| Actor | What it does |
|---|---|
| Threads Scraper | Scrape Threads profiles, user posts, and keyword search results |
| Threads Search Scraper | Search public Threads posts by keyword or hashtag |
| Instagram Reels Search & Trend Discovery | Find Instagram Reels by keyword with engagement data |
| Twitter (X) Video Downloader | Get MP4 download links and tweet details from X posts |