Threads Posts Scraper - Posts & Replies avatar

Threads Posts Scraper - Posts & Replies

Pricing

from $1.69 / 1,000 threads posts

Go to Apify Store
Threads Posts Scraper - Posts & Replies

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

ParseBird

Maintained by Community

Actor 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:

FieldDescription
textThe post text. Posts whose whole body is a text attachment return that text here
attachment_textText of an attachment Threads shows as a collapsed snippet, or null
published_onPublish time as a Unix timestamp in seconds
id, pk, codeFull post ID, numeric post ID, and the shortcode used in the post URL
username, user_full_name, user_pic, user_verifiedAuthor username, display name, profile picture URL, and verified badge
user_pk, user_idAuthor's numeric user ID
like_count, reply_count, repost_count, quote_countLikes, direct replies, reposts, and quotes
images, image_countImage URLs attached to the post, including carousel items
videos, has_audioVideo URLs, and whether the video has audio
has_gif, gif_descriptionWhether the post is a GIF, and the GIF's description such as "Warning I Told You GIF by Holly Logan"
link_urlDestination URL of a shared link, or null
urlLink to the post on threads.com

How to scrape Threads posts and replies

  1. Open Threads Posts Scraper and click Try for free or Start.
  2. 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.
  3. Keep Include replies on to get replies, or turn it off to get only the posts.
  4. Set Max replies per post. The default of 12 keeps the first run cheap.
  5. Click Start.
  6. Open the Output tab, or export the results as JSON, CSV, or Excel.

Input parameters

ParameterTypeRequiredDefaultDescription
startUrlsarrayYes—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
includeRepliesbooleanNotrueReturn the replies to each post. Set to false to get only the post
maxRepliesintegerNo12Most replies to return per post URL (0–5,000), including replies to replies. Each reply is billed as one result
proxyConfigurationobjectNo{"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

  1. 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.
  2. It loads the public post page the same way a logged-out visitor sees it and reads the post and the first replies.
  3. If you asked for more replies, it pages through the remaining public replies until it reaches maxReplies or the end of the conversation.
  4. Each post and reply is converted into the same flat set of fields and saved as one dataset item per URL.
  5. 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.

EventApify planPrice per resultPrice per 1,000 results
post-scrapedFree$0.00199$1.99
post-scrapedBronze$0.00189$1.89
post-scrapedSilver$0.00179$1.79
post-scrapedGold$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 ApifyClient
client = 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.

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

ActorWhat it does
Threads ScraperScrape Threads profiles, user posts, and keyword search results
Threads Search ScraperSearch public Threads posts by keyword or hashtag
Instagram Reels Search & Trend DiscoveryFind Instagram Reels by keyword with engagement data
Twitter (X) Video DownloaderGet MP4 download links and tweet details from X posts