Threads Related Posts Scraper
Pricing
Pay per event
Threads Related Posts Scraper
🧵 Map the Related threads recommendations below public Threads posts. Export source-to-related edges, authors, text, links, domains, timestamps, and engagement.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Turn the Related threads section below public Threads posts into a structured recommendation graph.
Provide one or more public post URLs and receive the related post URL, author, timestamp, text, outbound link, visible engagement, and the exact source→related edge.
No Threads login is required for publicly visible recommendations.
What does Threads Related Posts Scraper do?
Threads Related Posts Scraper opens public post pages and waits for the separately labeled Related threads section.
It extracts only those recommendation cards.
It does not mix ordinary replies, profile posts, or search results into the dataset.
Each row preserves the source post that caused the recommendation to appear.
That provenance makes changes measurable across scheduled runs.
Why scrape Related threads recommendations?
A recommendation is different from a keyword match.
It shows which conversations Threads places next to a specific source post for an anonymous session.
Use the data to:
- map adjacent conversations;
- discover creators and publishers;
- monitor recommendation changes;
- audit outbound domains;
- seed content research;
- build bounded recommendation graphs.
Who is it for?
Social-listening teams
Track conversations that Threads recommends beside important posts.
Creator and influencer researchers
Discover accounts appearing in recommendation cards without manually browsing every seed.
Recommendation-system auditors
Store directed edges and compare snapshots over time.
Content discovery pipelines
Feed related post text, authors, and domains into tagging, enrichment, or review workflows.
Publishers and brand analysts
See which articles and domains surface near a public conversation.
What data can you extract?
| Field | Description |
|---|---|
sourcePostUrl | Public post where the recommendation appeared |
relatedPostUrl | Resolved recommended Threads post URL |
edgeKey | Deterministic source→related edge |
sourceDepth | Depth of the source in a recursive crawl |
authorUsername | Related post author username |
authorProfileUrl | Public Threads profile URL |
publishedAt | Machine-readable rendered timestamp when available |
relativeTime | Visible time such as 4h |
text | Related post text or snippet |
outboundUrl | Decoded external link when present |
outboundDomain | External hostname for grouping |
likeCount | Visible likes when rendered |
replyCount | Visible replies when rendered |
repostCount | Visible reposts when rendered |
scrapedAt | UTC extraction timestamp |
Engagement values are nullable because Threads may hide an individual count.
How to scrape Related threads posts
- Open a public Threads post in your browser.
- Copy its
/@username/post/codeURL. - Add one or more URLs to Public Threads post URLs.
- Keep Recommendation depth at
0for a direct snapshot. - Choose a global result limit.
- Start the Actor.
- Export the dataset as JSON, CSV, Excel, or another Apify format.
Input
{"startUrls": [{ "url": "https://www.threads.com/@zuck/post/CuP48CiS5sx" }],"maxItems": 10,"maxDepth": 0}
startUrls
Required list of public Threads post URLs.
Legacy threads.net links are normalized to threads.com.
Profile, search, tag, and non-Threads URLs are outside this Actor's scope.
maxItems
Global maximum number of recommendation-edge rows.
The default is 25 and the maximum is 1,000.
The limit applies across every seed and recursion level.
maxDepth
Use 0 for recommendations directly below supplied seeds.
Use 1 to also visit related posts and extract their recommendations.
Use 2 only for a broader, still-bounded graph.
proxyConfiguration
Optional Apify Proxy or custom proxy settings.
Try a proxy when Threads repeatedly returns a transient error shell from your run location.
Output example
{"sourcePostUrl": "https://www.threads.com/@zuck/post/CuP48CiS5sx","relatedPostUrl": "https://www.threads.com/@thisisanfield/post/DbGlnp4mjdC","edgeKey": "https://www.threads.com/@zuck/post/CuP48CiS5sx->https://www.threads.com/@thisisanfield/post/DbGlnp4mjdC","sourceDepth": 0,"authorUsername": "thisisanfield","authorProfileUrl": "https://www.threads.com/@thisisanfield","publishedAt": "2026-07-22T17:00:00.000Z","relativeTime": "12h","text": "NEW: Andoni Iraola is right to sound the alarm over Liverpool’s squad depth","outboundUrl": "https://lfc.thisisanfield.com/example","outboundDomain": "lfc.thisisanfield.com","likeCount": null,"replyCount": null,"repostCount": null,"scrapedAt": "2026-07-23T05:00:00.000Z"}
Values change because recommendations and engagement are live.
Direct snapshots versus recursive maps
A depth-0 run answers: “What does Threads recommend beside these seeds now?”
A depth-1 run answers: “What appears beside the seeds and beside their first-hop recommendations?”
The Actor deduplicates queued related URLs.
It also deduplicates identical directed edges.
maxItems remains the hard global stop.
Scheduling a recommendation monitor
Create an Apify schedule with stable seed URLs.
Send each run to a named dataset or downstream integration.
Compare edgeKey values between snapshots.
New edges indicate newly observed recommendations.
Missing edges can indicate recommendations that no longer rendered for that session.
Do not assume a single anonymous session represents every user or geography.
How much does it cost to extract Related threads posts?
This Actor uses pay-per-event pricing.
A run has a small $0.005 start charge plus a tiered charge for each saved related-post row.
The BRONZE price is $0.0030846 per related post.
Higher Apify plans receive lower per-record tier prices, down to $0.00086368 per related post on DIAMOND.
Only typed recommendation records saved to the dataset trigger the item event.
Failed pages and skipped invalid URLs do not create item charges.
Tips for reliable runs
- Start with one known public post.
- Keep depth at
0until the seed is verified. - Use modest result limits for scheduled monitoring.
- Enable Apify Proxy if direct sessions repeatedly show a transient error.
- Avoid private, deleted, age-restricted, or login-only posts.
- Expect recommendations to vary across time and sessions.
Integrations
Google Sheets
Send each recommendation snapshot to a sheet for editorial review.
Slack or email alerts
Trigger an alert when a new edgeKey appears for a monitored source.
Webhooks
Deliver the completed dataset to your data pipeline after every scheduled run.
Make and Zapier
Route related authors or outbound domains into no-code enrichment workflows.
AI analysis
Summarize themes, classify domains, or cluster related post text after extraction.
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/threads-related-posts-scraper').call({startUrls: [{ url: 'https://www.threads.com/@zuck/post/CuP48CiS5sx' }],maxItems: 10,maxDepth: 0,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API example
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/threads-related-posts-scraper').call(run_input={'startUrls': [{'url': 'https://www.threads.com/@zuck/post/CuP48CiS5sx'}],'maxItems': 10,'maxDepth': 0,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL API example
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~threads-related-posts-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url":"https://www.threads.com/@zuck/post/CuP48CiS5sx"}],"maxItems": 10,"maxDepth": 0}'
Use with Apify MCP
Connect AI tools through https://mcp.apify.com?tools=automation-lab/threads-related-posts-scraper.
Claude Code
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/threads-related-posts-scraper"
Claude Desktop
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/threads-related-posts-scraper"}}}
Cursor
Add the same HTTP MCP URL in Cursor Settings → Tools & MCP → Add custom MCP.
VS Code
Add the HTTP MCP server URL through the MCP configuration used by your VS Code AI extension.
Example prompts:
- “Map the recommendations below these three Threads posts.”
- “Return authors and external domains from this Related threads section.”
- “Build a one-hop recommendation graph with at most 50 edges.”
Data quality and deduplication
The Actor canonicalizes public post URLs.
A row is uniquely identified by its source and related URL.
The same related post may correctly appear more than once when different sources recommend it.
That is not a duplicate: it represents distinct directed edges.
Visible counts are parsed only when the rendered card exposes an accessible metric.
Limitations
Threads is a dynamic Meta surface and markup can change.
The Related threads section may not render for every public post.
Recommendations may vary by session, time, geography, or experiments.
This Actor does not log in and cannot access private content.
It does not claim exhaustive or personalized recommendation coverage.
Browser retries are bounded so a transient target does not create an endless run.
Is it legal to scrape public Threads recommendations?
This Actor extracts information shown on public pages without authentication.
You are responsible for your use case, source terms, and applicable privacy, copyright, and data-protection law.
Collect only what you need.
Avoid using results for harassment, discrimination, or invasive profiling.
Consult qualified counsel for regulated or high-risk uses.
Troubleshooting
The run says no Related threads section was rendered
Try another public post and confirm that the section is visible in an anonymous browser.
Recommendations can be absent or session-dependent.
Enable Apify Proxy if the log shows repeated transient Threads error pages.
Some engagement counts are null
Threads does not expose every count on every card.
Null means the metric was not reliably visible, not zero.
My URL was skipped
Use the full public /@username/post/code URL.
Profile, search, and redirect-only URLs are intentionally rejected.
Recursive runs stop early
maxItems is a global cap.
Increase it carefully or lower maxDepth to prioritize direct edges.
Related Threads scrapers
- Threads Scraper for profiles, posts, and search.
- Threads Replies Scraper for comments and reply relationships.
- Threads Followers Scraper for follower-focused workflows where public access permits.
Choose this Actor when the recommendation edge itself is the product.
FAQ
Does it require a Threads or Instagram account?
No. Version 1 targets recommendations rendered on anonymous public post pages.
Does it scrape replies?
No. Replies are excluded from this Actor's product boundary.
Can I process several seeds?
Yes. Add several URLs and set one global maxItems limit.
What does depth 0 mean?
Only recommendations directly below your supplied seeds are extracted.
Why can results change between runs?
Threads controls the live recommendation surface and may personalize or experiment with it.
Can I export CSV or Excel?
Yes. Use the standard Apify dataset export controls or API formats.
Are external redirect URLs decoded?
Yes. When Threads uses l.threads.com, the Actor returns the decoded destination and hostname.
Start mapping Related threads
Paste a public Threads post URL, keep depth at 0, and start with ten records.
Review the source→related edges, then schedule the input or expand to one-hop discovery when the seed produces useful recommendations.