Threads.net Posts Scraper
Pricing
from $4.00 / 1,000 results
Threads.net Posts Scraper
Scrape public Threads posts by keyword search, hashtag, or user profile. Returns post text, engagement metrics, media URLs, and author info. No login required.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Pretorius
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrapes public posts from Threads.net by keyword/hashtag search or user profile. No login required.
What it scrapes
- Search: posts matching a keyword or hashtag (e.g. "AI" or "#startup")
- Profiles: all recent posts from one or more public Threads accounts
- Both modes can run in a single actor call
Data returned includes post text, engagement counts (likes, replies, reposts, quotes), media URLs, and author info.
Inputs
| Field | Type | Description | Default |
|---|---|---|---|
searchQuery | string | Keyword or hashtag to search (e.g. AI or #startup) | AI |
profileUsernames | array | Threads usernames to scrape (e.g. ["zuck", "mosseri"]) | [] |
maxResults | integer | Max posts to return, up to 1000 | 100 |
At least one of searchQuery or profileUsernames must be provided.
Output fields
| Field | Type | Description |
|---|---|---|
post_id | string | Unique post ID |
post_url | string | Direct URL to the post |
username | string | Author's Threads username |
display_name | string | Author's display name |
text | string | Post text content |
like_count | number | Number of likes |
reply_count | number | Number of replies |
repost_count | number | Number of reposts |
quote_count | number | Number of quote-posts |
timestamp | string | ISO 8601 post creation time |
media_urls | array | Image or video URLs attached to the post |
is_reply | boolean | True if this post is a reply to another post |
parent_post_id | string | Post ID of the parent post (if is_reply is true) |
Output example
{"post_id": "DdCYWl7GktV","post_url": "https://www.threads.com/@zuck/post/DdCYWl7GktV","username": "zuck","display_name": "Mark Zuckerberg","text": "Your Muse gets its own private computer in the cloud to do work for you. We've built new technology so the Muse Secure VM keeps your content safe.","like_count": 18203,"reply_count": 941,"repost_count": 2104,"quote_count": 388,"timestamp": "2026-09-08T18:56:24.000Z","media_urls": [],"is_reply": false,"parent_post_id": null}
Note: like_count, reply_count, repost_count, and quote_count are populated via API interception when running on Apify platform with residential proxies. display_name is also populated via the API path. Local runs without a proxy fall back to DOM extraction, which produces accurate post_id, post_url, username, text, timestamp, and media_urls, but zeroes for engagement counts.
How it works
Threads.net is a client-side React app -- all post data is delivered via Meta's internal GraphQL API after the page loads. This actor uses a headless Chromium browser (Playwright) to load each target page, intercepts the API responses, and extracts structured post data from them.
On the Apify platform, it runs through residential proxies (RESIDENTIAL group) to avoid IP-based blocks.
Pricing
$1.00 per 1,000 results (pay-per-result). A typical run scraping 100 posts costs $0.10.
Limitations
- Requires Playwright (browser-based), so cold starts take 10-20 seconds and memory usage is higher than HTML-only actors.
- Some Threads content (private accounts, age-restricted posts) requires login and cannot be scraped.
- Meta may add stricter bot detection as the platform matures; runs requiring login will log a warning and skip those pages.
- Engagement counts (likes, reposts) are only available via API interception; DOM fallback returns 0 for those fields.
- No historical posts: the actor scrapes what is currently visible on the page/search results.
- Search results on Threads are ranked by relevance, not chronologically.