Threads Replies Scraper
Pricing
from $0.05 / 1,000 replies
Threads Replies Scraper
Collect public replies from Threads post or profile URLs. Set a reply limit, nested reply depth, and UTC time filter, then save reply text, authors, links, engagement, and conversation context in a dataset.
Pricing
from $0.05 / 1,000 replies
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
🧵 Find public Threads replies with conversation context
For social media researchers, community teams, and developers, Threads Replies Scraper collects public replies from submitted Threads post or profile URLs. It saves structured records with reply text, timestamps, authors, engagement, media, conversation links, root-post context, and the source URL, so you can review or export the data without copying replies by hand.
- Collect replies from a public Threads post with Threads Post Replies.
- Collect replies from public posts on a profile with Threads Profile Replies.
- Turn a public Threads reply page into structured data with Threads Reply Scraper.
- Gather conversation replies for review with Threads Replies Scraper.
- Scrape public Threads replies for a dataset with Scrape Threads Replies.
📦 Threads reply rows with source and context
Each saved row describes one public reply. It can include the reply author, text, time, engagement counts, media, mentions, hashtags, external links, reply state, and conversation context. The source URL and source type show whether the run used a post or profile target. Optional fields can be missing when Threads does not expose them.
▶️ Run a Threads reply collection
- Set
Targettopostsorprofiles. - Add one or more matching public Threads URLs to
Source URLs. - Optionally set the reply limit, nested reply depth, and UTC time filter.
- Start the run and open the
datasetlink in the output.
Successful default input
This input comes from a successful current-beta run:
{"target": "posts","sourceUrls": [{"url": "https://www.threads.com/@instagram/post/DQNCKbZjq-v"}],"maxRepliesPerTarget": 100,"nestedReplyDepth": 0}
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
target | string | Select posts for post URLs or profiles for profile URLs. |
sourceUrls | array of objects | Lists one or more public Threads URLs that match target. |
sourceUrls[].url | string | Gives one public post or profile URL that matches target. |
maxRepliesPerTarget | integer | Sets an optional cap for each submitted target. Leave it empty to collect all available replies until the source is exhausted. |
nestedReplyDepth | integer | Sets the number of nested reply levels. Use 0 for top-level replies only. A positive number includes that many levels. |
repliesAfter | string (UTC date-time) | Keeps replies published at or after this UTC time. Use an ISO 8601 value such as 2026-01-15T12:00:00Z. |
🧾 Output
Run output
The dataset output is a string URL that opens the default dataset overview for the run.
Dataset row fields
Each dataset item has one reply-row shape. Fields can be missing when Threads does not expose the value.
| Field | Type | What it does |
|---|---|---|
replyId | string | The public ID of the reply. |
replyUrl | string (URL) | The public URL of the reply. |
text | string | The reply text. |
publishedAt | string (date-time) | The time when the reply was published. |
author | object | Public details about the reply author. |
author.username | string | The author's public Threads username. |
author.displayName | string | The author's public display name. |
author.profileUrl | string (URL) | The author's public Threads profile URL. |
author.isVerified | boolean | Whether Threads marks the author as verified. |
engagement | object | Public activity counts for the reply. |
engagement.likes | integer | The public like count for the reply. |
engagement.replies | integer | The public reply count for the reply. |
engagement.reposts | integer | The public repost count for the reply. |
engagement.quotes | integer | The public quote count for the reply. |
media | array of objects | Public media attached to the reply. |
media[].url | string (URL) | The direct public URL of a media file. |
media[].type | string | The public media type. |
media[].altText | string | Accessibility text for the media. |
media[].width | integer | The media width in pixels. |
media[].height | integer | The media height in pixels. |
sharedPost | object | Public quote, repost, or share context attached to the reply. |
sharedPost.type | string | The share type: quote, repost, or share. |
sharedPost.id | string | The public ID of the shared post. |
sharedPost.url | string (URL) | The public URL of the shared post. |
sharedPost.text | string | The text of the shared post. |
conversation | object | The reply's place in the public conversation. |
conversation.depth | integer | The reply's public nesting depth. |
conversation.parentReplyId | string | The public ID of the parent reply. |
conversation.parentReplyUrl | string (URL) | The public URL of the parent reply. |
conversation.rootReplyId | string | The public ID of the first reply in the chain. |
rootPost | object | Public context for the post that starts the conversation. |
rootPost.id | string | The public ID of the root post. |
rootPost.url | string (URL) | The public URL of the root post. |
rootPost.text | string | The text of the root post. |
rootPost.author | object | Public details about the root post author. |
rootPost.author.username | string | The root post author's public Threads username. |
rootPost.author.displayName | string | The root post author's public display name. |
rootPost.author.profileUrl | string (URL) | The root post author's public Threads profile URL. |
rootPost.author.isVerified | boolean | Whether Threads marks the root post author as verified. |
rootPost.engagement | object | Public activity counts for the root post. |
rootPost.engagement.likes | integer | The public like count for the root post. |
rootPost.engagement.replies | integer | The public reply count for the root post. |
rootPost.engagement.reposts | integer | The public repost count for the root post. |
rootPost.engagement.quotes | integer | The public quote count for the root post. |
rootPost.publishedAt | string (date-time) | The time when the root post was published. |
mentions | array of strings | Public usernames mentioned in the reply. |
hashtags | array of strings | Public hashtags found in the reply. |
externalLinks | array of strings (URL) | Public external links found in the reply. |
replyState | object | Public state details for the reply. |
replyState.isQuote | boolean | Whether the reply is marked as a quote. |
replyState.isRepost | boolean | Whether the reply is marked as a repost. |
replyState.isEdited | boolean | Whether the reply is marked as edited. |
replyState.isPartnership | boolean | Whether the reply is marked as a partnership. |
replyState.replyControl | string | The public reply control shown by Threads. |
sourceUrl | string (URL) | The submitted public Threads URL that led to the reply. |
sourceType | string | Says whether sourceUrl points to a post or profile. |
isPublicSubset | boolean | Says whether the row is part of the public subset exposed by Threads. |
collectedAt | string (date-time) | The time when the reply was collected. |
Genuine row from a current-beta run
This unshortened row comes from a successful post-target run with nested reply depth set to 1:
{"replyId": "3750701025532684326_73499897891","replyUrl": "https://www.threads.com/@n1n2t1t2/post/DQNKrXtkagm","text": "I don’t know what to do with myself I don’t know how much","publishedAt": "2025-10-24T20:40:26.000Z","author": {"username": "n1n2t1t2","displayName": "Mirella Hernandez","profileUrl": "https://www.threads.com/@n1n2t1t2","isVerified": false},"engagement": {"likes": 0,"replies": 0,"reposts": 0,"quotes": 0},"media": [],"conversation": {"depth": 1,"rootReplyId": "3750701025532684326_73499897891"},"rootPost": {"id": "3750663577377091503_63404918397","url": "https://www.threads.com/@instagram/post/DQNCKbZjq-v","text": "coffee dates with your bestie >>>\n\nkipotheshibainu","author": {"username": "instagram","displayName": "Instagram","profileUrl": "https://www.threads.com/@instagram","isVerified": true},"engagement": {"likes": 1227,"replies": 63,"reposts": 30,"quotes": 1},"publishedAt": "2025-10-24T19:27:20.000Z"},"mentions": [],"hashtags": [],"externalLinks": [],"replyState": {"isEdited": false,"replyControl": "everyone"},"sourceUrl": "https://www.threads.com/@instagram/post/DQNCKbZjq-v","sourceType": "post","isPublicSubset": true,"collectedAt": "2026-08-25T16:35:33.804Z"}
💳 Pricing
How billing works
The pricing event is charged for each public reply saved to the dataset. Check Apify Console for the current tier price.
🔌 Integrations
Open the dataset output in Apify Console or read its rows through the Apify API.
❓ FAQ
What happens when I leave the reply limit empty?
The Actor collects all available replies until the source is exhausted. A value sets a separate cap for each submitted post or profile.
Can I choose how many nested replies to include?
Yes. Use 0 for top-level replies only. A positive value includes that many nested levels. If you leave the field empty, only top-level replies are included.
Can I filter replies by publication time?
Yes. Set repliesAfter to a UTC ISO 8601 timestamp. The Actor includes replies published at or after that time.
Can I submit both post and profile URLs in one run?
Choose one target value for the run. Add post URLs when target is posts, or profile URLs when it is profiles.
Does the Actor return private replies?
No. It reads public Threads data only. Optional fields can be missing when Threads does not expose them.
How can I trace a reply to its source?
Use sourceUrl and sourceType to identify the submitted target. replyUrl, rootPost, and available conversation links add more context.
What does one billed event cover?
One billed event covers one public reply saved to the dataset. The current tier price is shown in Apify Console.
📝 Changelog
0.0: Initial release
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Reddit Comments Search Scraper: Search public Reddit comments by keyword and export comment text, authors, scores, and post context.
- Facebook User Posts Scraper: Collect public Facebook posts with author details, engagement, media, and links.
- GitHub Discussions Scraper: Save public GitHub discussions with authors, replies, reactions, and source links.
- Twitch Chat Scraper: Collect public Twitch chat messages with sender and source context.
- Social Media Stats Checker: Check public Threads and other social profiles for normalized stats and source URLs.
Made with ❤️ by Maxime Dupré