Threads Scraper - Posts, Profiles & Search
Pricing
from $1.56 / 1,000 threads posts
Threads Scraper - Posts, Profiles & Search
[$3.00 / 1K] Scrape public Meta Threads posts, profiles, keyword search results, engagement metrics, media, hashtags, mentions, and timestamps without a Threads login.
Pricing
from $1.56 / 1,000 threads posts
Rating
5.0
(1)
Developer
WebData Labs
Maintained by CommunityActor stats
2
Bookmarked
29
Total users
9
Monthly active users
3 days ago
Last modified
Categories
Share
Extract public Meta Threads posts, profiles, and keyword search results without a Threads login. Get clean structured rows for content monitoring, creator research, PR analysis, and data pipelines.
Use the Actor from Apify Console, schedule recurring runs, download JSON/CSV/Excel, or call it through the Apify API and MCP.
โ What you get
- Public profile metadata with exact follower counts when Threads exposes them
- Deep post history per profile - hundreds of posts, not the handful the public page renders
- Public posts with full text, publication timestamps, and canonical URLs
- Likes, direct replies, reposts, and quote counts
- Images, videos, carousel items, dimensions, and video thumbnails
- Parsed hashtags, mentions, and absolute URLs
- Keyword search results with the source query attached to every row
- Consistent
profileandpostresult types in one dataset
๐ Why use this Threads scraper
The public Threads profile page renders only a handful of posts, which is where most Threads scrapers stop. This Actor follows the same paginated feed the site itself uses, so maxPosts is a number you actually reach: a single profile returns hundreds of posts going back months.
It runs over plain HTTP with no browser, so runs are fast and cheap, and a recursive extractor normalizes Threads' deeply nested payloads into stable fields even when Meta reshuffles the wrapper paths.
The result is ready for:
- Brand mention monitoring
- Competitor and executive account tracking
- Creator and influencer discovery
- Campaign and content research
- Academic NLP datasets built from public content
- Scheduled exports to Sheets, data warehouses, or webhooks
๐ What data you get
| Field | Type | Description |
|---|---|---|
type | string | profile or post |
username | string | Threads account username |
fullName | string | Public display name |
followerCount | number | Exact public follower count when available |
text | string | Full public post text |
date | string | ISO 8601 publication time |
likeCount | number | Visible likes |
replyCount | number | Visible direct replies |
repostCount | number | Visible reposts |
quoteCount | number | Visible quote posts |
media | array | Normalized image/video attachments |
hashtags | array | Hashtags parsed from the post text |
mentions | array | Mentioned usernames |
url | string | Canonical Threads profile or post URL |
sourceUsername | string | Input username that produced the row |
searchQuery | string | Input keyword that produced a search row |
scrapedAt | string | ISO 8601 collection time |
๐ฅ Who it's for
- Social media and brand teams monitoring public conversations
- PR agencies tracking spokespeople, journalists, and campaign mentions
- Researchers collecting public Threads data for analysis
- Data teams feeding dashboards, warehouses, and AI workflows
- Developers who need a simple Threads scraper API instead of maintaining browser extraction
โ๏ธ How to scrape Threads
- Open the Actor in Apify Console.
- Choose
Profiles,Profile posts, orKeyword search. - Enter up to 20 usernames/profile URLs or up to 20 search queries.
- Set
maxPoststo how many posts per seed you want. Start at5to check the output shape cheaply. - Run the Actor and inspect the dataset. Network routing is managed automatically.
- Download results or connect a schedule, webhook, Make, Zapier, or API client.
๐ฅ Input
Profile posts example:
{"mode": "posts","usernames": ["zuck", "mosseri"],"maxPosts": 100,"includeProfile": true}
Keyword search example:
{"mode": "search","searchQueries": ["artificial intelligence", "product launch"],"maxPosts": 25,"postedAfter": "2026-08-01T00:00:00Z"}
| Input | Type | Default | Description |
|---|---|---|---|
mode | string | posts | profile, posts, or search |
usernames | string[] | - | Usernames or profile URLs for profile/posts mode. Required unless mode is search |
searchQueries | string[] | - | Keywords for search mode. Required when mode is search |
maxPosts | integer | 25 | Maximum post rows per username/query, 1 to 500. Posts mode pages until it hits this number or the profile runs out; keyword search is one page of about 20 |
postedAfter | string | - | Inclusive ISO 8601 lower date bound. In posts mode the Actor stops paging once it passes this date |
postedBefore | string | - | Exclusive ISO 8601 upper date bound |
includeProfile | boolean | true | Add one profile row in posts mode |
usernames and searchQueries have no defaults on purpose: an empty one fails the run with a clear message instead of quietly scraping something you did not ask for and billing you for it.
๐ค Output
{"type": "post","postId": "3912345678901234567","code": "ExampleCode1","username": "exampleuser","fullName": "Example Creator","isVerified": true,"text": "A sample public post about a product launch.","likeCount": 420,"replyCount": 35,"repostCount": 18,"quoteCount": 7,"mediaType": "image","media": [{"type": "image","url": "https://example.com/media.jpg","thumbnailUrl": null,"width": 1080,"height": 1350}],"hashtags": ["launch"],"mentions": [],"date": "2025-01-15T12:00:00.000Z","url": "https://www.threads.com/@exampleuser/post/ExampleCode1","sourceUsername": "exampleuser","searchQuery": null,"scrapedAt": "2025-01-15T12:05:00.000Z"}
Download the dataset as JSON, CSV, Excel, XML, RSS, or HTML, or read it through the Dataset API.
๐ต How much does it cost to scrape Threads?
The Actor uses pay-per-result pricing with no separate Actor-start charge:
- Post result: $3.00 per 1,000 on the Free tier
- Profile result: $5.00 per 1,000 on the Free tier
A run with 100 posts and one profile costs about $0.305 in event charges on the Free tier. Higher Apify plans receive lower per-result prices. You pay only for rows you receive, so use maxPosts and the date filters to size a run - a postedAfter window stops paging early rather than fetching history you would discard.
๐ Run it on the Apify platform
Schedule daily competitor checks, send datasets to Google Sheets, trigger Slack/webhook alerts, or call the Actor from Node.js, Python, cURL, and MCP. Every row includes its input source so multi-seed runs remain easy to split downstream.
โ ๏ธ Limits and caveats
- Posts mode paginates deep, typically well past 100 posts per profile, but Threads still decides where a profile's public history ends.
maxPostsis a ceiling, not a completeness guarantee. - Keyword search does not paginate. Threads exposes a single page of public search results, roughly 20 posts per query, and raising
maxPostswill not change that. Use posts mode when you need volume. - Search results are ranked by Threads and may not be exhaustive or chronological.
- Media CDN URLs can expire. Persist permitted assets promptly if your workflow needs long-term copies.
- Deep profile runs make one request per page of results, so a 500-post seed takes noticeably longer than a 25-post one.
viewCountis only populated when Threads attaches a public view count to a post, which is rare on logged-out pages.- Meta can change its public web payloads without notice. Report a failed public URL in the Issues tab so the extractor can be updated.
- Only collect and use public data in accordance with applicable law, privacy rules, and Meta's terms.
๐งฉ Related Actors
- Reddit Signal Scraper for community monitoring and public discussion signals
- Bluesky Data API for public Bluesky posts and profiles
- Website Change Intelligence API for monitoring competitor pages and announcements
Combine these sources into a broader brand-monitoring pipeline covering social posts, communities, and owned websites.
โ FAQ
Does this Threads scraper require login?
No. It reads only data exposed on public Threads web pages without a Threads or Instagram account.
Can it scrape private accounts?
No. The Actor does not bypass privacy controls or login walls.
Why did I get fewer posts than maxPosts?
In posts mode, the account simply may not have that many public posts - the run log reports whether the profile was exhausted. Date filters reduce the set further. In search mode this is expected: Threads publishes only one page of public search results per query, about 20 posts, so maxPosts above that has no effect.
Is this an official Threads API?
No. It is an independent public-web scraper running on Apify. It is not affiliated with or endorsed by Meta.
Can I monitor accounts automatically?
Yes. Create an Apify Task with your input, schedule it daily or weekly, and deliver each dataset through an integration or webhook. Deduplicate downstream by postId.
๐ ๏ธ Support
Open the Actor's Issues tab and include the run URL, sanitized input, public Threads URL, expected behavior, and actual behavior. Do not include account credentials or private personal data.