๐งต Threads User Posts Scraper
Pricing
from $3.99 / 1,000 results
๐งต Threads User Posts Scraper
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 days ago
Last modified
Categories
Share
Threads User Posts Scraper โ Profile Posts, Engagement, Media & Timestamps
Scrape posts from any public Threads profile: caption text, like count, reply count, repost and quote counts, media links, mentions, tags, timestamp and a direct post URL.
Bulk profile input, up to 5,000 posts per profile, and rows streamed into your results table as they are collected.
What is Threads User Posts Scraper?
Threads is Meta's text platform and, for a network this large, it is remarkably closed: no public API, no export, no analytics beyond your own account.
This Actor gives you the profile timeline as data. Paste profile links or plain usernames โ https://www.threads.com/@zuck or just zuck โ and it works through them in order, paginating through each profile's history and writing each post to the dataset as soon as it is collected. Open the Output tab mid-run and you will see rows appearing.
The output is deliberately flat and analysis-ready. Rather than handing back Threads' raw nested payload, each post arrives as one clean row: caption, like_count, direct_reply_count, quote_count, repost_count, a normalised medias array, mentions, taken_at and url. That means a CSV export opens in a spreadsheet and is immediately sortable โ no unnesting, no JSON wrangling.
Four separate engagement counters matter more than they might appear. Likes measure approval, replies measure conversation, and reposts and quotes measure distribution โ the thing that actually grows an account. A post with modest likes and high quotes travelled much further than the like count suggests.
What data can you extract?
| Field | Description |
|---|---|
caption | Post text |
caption_is_edited | Whether the post was edited |
like_count | Likes |
direct_reply_count | Replies |
repost_count | Reposts |
quote_count | Quote posts |
like_and_view_counts_disabled | Whether the author hid counts |
medias | Normalised images and videos with URLs and type |
mentions | Accounts mentioned in the post, with username, ID and profile picture |
tags | User tags on the post |
audio | Audio attachment data when present |
taken_at | Post timestamp |
url | Direct link to the post |
code | Threads post shortcode |
id, pk | Post identifiers |
username | Author handle |
profile_pic_url | Author profile picture |
Why teams scrape Threads profiles
For competitor content analysis
Export a competitor's timeline, sort by like_count, and their best-performing content is in front of you in a minute rather than an afternoon of scrolling.
For influencer vetting
Reply counts relative to likes show whether an audience actually talks back. A high like-to-reply ratio often signals passive reach; a high reply count signals a community.
For measuring distribution, not just approval
repost_count and quote_count are the reach multipliers. Ranking by them surfaces the posts that spread rather than the posts that were merely liked.
For posting-time analysis
taken_at on hundreds of posts, cross-referenced against engagement, shows when a given audience is actually active.
For content archiving
Your own timeline, exported and stored, in a format you control.
For social listening
Track what a set of accounts says over time, with the full text in a searchable column.
How to scrape Threads profiles step by step
- Collect the profiles you want โ full URLs (
threads.comorthreads.net) or plain usernames. - Paste them into Profiles, one per line. Bulk lists are fine.
- Set Max posts per profile (1โ5,000). Lower is faster; higher goes deeper into history.
- (Optional) Leave proxy off โ the Actor escalates to Datacenter and Residential automatically when it needs to.
- Click Start and watch rows appear in the Output tab. Export as CSV, Excel or JSON.
โฌ๏ธ Input
Example input
{"urls": ["https://www.threads.com/@zuck","mosseri","https://www.threads.net/@natgeo"],"maxPostsPerProfile": 200}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | โ (required) | Threads profile links (threads.com or threads.net) or plain usernames. One per line; bulk lists supported. |
maxPostsPerProfile | integer | 10 | Recent posts to save per profile, 1โ5,000. |
proxyConfiguration | object | off | Optional. Leave off โ the Actor auto-escalates to Datacenter and then Residential when the site pushes back. Turn it on only to force a specific group, country or session for those backup steps. |
โฌ๏ธ Output
Example output
{"username": "zuck","profile_pic_url": "https://scontent.cdninstagram.com/โฆ","id": "3141592653589793238","pk": "3141592653589793238","code": "C8xAbCdEfGh","caption": "Shipping something new next week. Any guesses?","caption_is_edited": false,"like_count": 48210,"direct_reply_count": 3120,"quote_count": 184,"repost_count": 942,"like_and_view_counts_disabled": false,"audio": null,"medias": [{ "type": "image", "url": "https://scontent.cdninstagram.com/โฆ", "width": 1080, "height": 1350 }],"tags": null,"mentions": [{ "username": "mosseri", "id": "1234567890", "profile_pic_url": "https://scontent.cdninstagram.com/โฆ" }],"taken_at": "2026-08-07 14:22:31","url": "https://www.threads.net/@zuck/post/C8xAbCdEfGh"}
Illustrative values โ a live run returns current Threads data.
Usage recipes
Find a competitor's best content
{"urls": ["competitor_handle"],"maxPostsPerProfile": 500}
Sort by like_count for approval, then re-sort by repost_count for reach. The two lists are rarely the same, and the second one is usually more instructive.
Measure conversation, not just applause
Compute direct_reply_count / like_count per post. High ratios mark the topics that make an audience respond rather than scroll.
Find the best posting time
Group taken_at by hour of day and average the engagement in each bucket.
Vet several influencers at once
{"urls": ["creator_one", "creator_two", "creator_three"],"maxPostsPerProfile": 100}
Compare median engagement per profile rather than best-post engagement โ medians are much harder to fake.
Build a media library
Filter for rows where medias is non-empty to collect visual content and study formats.
Archive your own timeline
Run your own handle with maxPostsPerProfile: 5000 for a complete, portable backup.
How does this compare to the official Threads API?
Meta's Threads API is publishing-focused and account-scoped: it lets a developer post, read replies and see insights for the authenticated account, behind app review and OAuth. There is no endpoint that returns another public profile's timeline, and no bulk export for accounts you do not control.
This Actor reads publicly visible profile posts โ what any visitor sees โ which is the only route to competitive and cross-account research.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/threads-user-posts-scraper").call(run_input={"urls": ["zuck"],"maxPostsPerProfile": 200,})posts = list(client.dataset(run["defaultDatasetId"]).iterate_items())for p in sorted(posts, key=lambda x: x["repost_count"], reverse=True)[:10]:print(p["repost_count"], "reposts |", (p["caption"] or "")[:70])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/threads-user-posts-scraper').call({urls: ['zuck'],maxPostsPerProfile: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~threads-user-posts-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"urls":["zuck"],"maxPostsPerProfile":200}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent for scheduled monitoring or content research.
Schedules and webhooks
Attach a Schedule and deduplicate on id for a rolling archive, then route results with webhooks or the Google Sheets / Airtable / Slack integrations.
Pricing and what you are charged for
Billing details for this Actor are shown on the Pricing tab of its page โ check there for the current model and rates before a large run. Apify shows a cost estimate before and during every run.
maxPostsPerProfile is per profile, so five profiles at 200 each sets a ceiling of 1,000 rows. Proxy traffic, when escalation engages, is billed separately by the platform.
Limits, reliability and blocking
- Public profiles only. Private accounts are not accessible.
maxPostsPerProfileis per profile. Multiply by your profile count for the real total.- Deep history has practical limits. Threads paginates, and very old posts may become unreachable before you hit 5,000.
- Posts are deduplicated by
idwithin a run, so pagination overlap does not produce repeats. - Views are not available. Threads does not publish a per-post view count to visitors โ
like_and_view_counts_disabledtells you when an author has hidden counts entirely. - Media URLs point at Meta's CDN and expire. Download what you need rather than storing links.
- Proxy escalation is automatic (Datacenter, then Residential). Leave the proxy input off unless you need to force a group or country.
- Requests are deliberately paced between pages, so deep runs take time by design.
- Replies to a post are not collected here โ this Actor returns a profile's own posts. Use the search/post scraper for thread replies.
- Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for deep multi-profile runs.
Is it legal to scrape Threads?
This Actor collects publicly visible posts from public Threads profiles โ the same content any visitor can read without logging in. It does not log in, follow accounts, or access private profiles or direct messages.
Post text and media belong to their authors, and usernames, profile pictures and post content are personal data under GDPR and comparable laws. Use the data for research and analysis, credit and link when you reference a post, do not use it for unsolicited bulk messaging, and comply with Meta's Terms of Service.
โ Frequently asked questions
Do I need a Threads account or API key?
No. The Actor reads public profiles without credentials.
Can I pass just a username?
Yes โ zuck works as well as the full profile URL, and you can mix both in one run.
How many posts can I get per profile?
Up to 5,000, subject to how far back the profile's timeline remains reachable.
Can I scrape private profiles?
No. Only public profiles are accessible.
Do I get view counts?
No. Threads does not publish per-post views to visitors. You get likes, replies, reposts and quotes.
What is the difference between reposts and quotes?
A repost shares your post as-is; a quote adds commentary. Both spread it, and both are counted separately.
Do I get the replies underneath a post?
Not from this Actor โ it returns a profile's own posts. Use the Threads search/post scraper for thread replies.
Do I need a proxy?
No. The Actor escalates to Datacenter and Residential automatically when needed.
Why is medias sometimes null?
The post is text-only. Threads is a text-first platform, so that is common.
Which export format should I use?
CSV or Excel โ the output is flat by design. Use JSON if you want medias and mentions as real arrays.
๐ Related scrapers
- ๐งต Threads Search Post Scraper โ individual posts and their reply threads.
- X Posts Scraper (Twitter) โ the same analysis on X.
- โค๏ธ๐ฌ Instagram Likes Scraper with Comments โ engagement on Meta's photo platform.
- Truth Social Scraper โ another text-first network.
Browse the full collection on the ScraperForge profile.
๐ฌ Feedback
Need deeper history, reply collection, or a custom Threads pipeline? Open an issue on the Issues tab of this Actor.