Threads Scraper: Posts, Profiles, Tags & Keyword Monitor
Pricing
from $0.60 / 1,000 posts
Threads Scraper: Posts, Profiles, Tags & Keyword Monitor
Scrape Meta Threads (threads.net) posts, profiles, hashtags & search. No login, no cookies. Get text, media, likes, replies & reposts. Pay only per post delivered. Works in Claude, ChatGPT & any MCP agent.
Pricing
from $0.60 / 1,000 posts
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
80
Total users
42
Monthly active users
20 hours ago
Last modified
Categories
Share
๐งต Threads Scraper: Posts, Profiles, Hashtags & Search (No Login)
Part of the Social & Market Research MCP. This actor's data is also available to AI agents through our Social & Market Research MCP server โ eight social, news and search-interest tools behind one endpoint. No result, no charge.
โก 2,082 runs in the last 30 days ยท pay only per post delivered ยท no login, no cookies, no ban risk. ๐ธ Empty searches, blocked pages and failed runs are never billed.
Overview
Threads Scraper turns any public Meta Threads target (threads.net) into structured JSON: post text, media URLs, likes, replies, reposts, quote counts, author info, and full timestamps. Feed it a profile handle, a search keyword, a hashtag, or a direct post URL. It works without an account, without cookies, and without a paid API. You pay only for posts actually delivered.
Meta never shipped a public Threads API, so the usual options are manual copy-paste or brittle browser hacks. This actor reads the same public data any logged-out visitor sees on threads.net, then flattens the nested response into one clean record per post.
Measured, not promised: in the 30 days to 2026-07-29 this actor completed 2,082 runs โ 1,901 succeeded, 0 failed. The 163 timed-out runs in that window all predate the July 25 rebuild (per-request IP rotation + a deadline watchdog that returns partial results instead of dying); since the rebuild, every run has completed. A run that delivers nothing charges nothing, so even a timeout costs you $0 โ the charge event fires only after a post record is actually in your dataset.
โ No login | โ No cookies | โ Pay per post delivered | โ Zero charge on empty runs | โ MCP-ready for AI agents
Features
Four input modes in one actor: profile posts, single post detail, keyword search, and hashtag feed.
Full engagement counts: likes, replies, reposts, and quote counts on every post.
Media captured: image and video URLs, media type, and a has-media flag for filtering.
Include or exclude replies and reposts with a single toggle, plus is_reply / is_repost flags in the output.
Search or hashtag modes support both recent and top feeds, so you can watch a trend build or pull the highest-engagement posts.
How it works
The actor calls Threads' public GraphQL surface as an unauthenticated visitor. For search, it fans out across the logged-out surfaces that carry results for your query โ the recent and top feeds, the query's own tag feed, and repeated recency windows over the course of the run โ deduplicated into one result set, exceeding the ~20-post single-feed cap (each run's summary lists the exact search_windows yield so you can audit it, in the run's OUTPUT record). For profile mode it walks the user's post timeline; for post mode it fetches the post detail plus quoted or parent context. No account, no cookies, no anti-bot fragility.
For each post it flattens Threads' deeply nested response into one analysis-ready record. Reply and repost posts are filtered out by default; toggle the input to include them.
๐งพ Input configuration
{"mode": "hashtag","hashtag": "ai","maxPosts": 25,"resultType": "top","includeReplies": false,"includeReposts": false}
๐ค Output format
{"post_id": "3937491905269768921","code": "DakyAavlKLZ","url": "https://www.threads.net/@zuck/post/DakyAavlKLZ","username": "zuck","user_full_name": "Mark Zuckerberg","user_pic_url": "https://scontent-iad6-1.cdninstagram.com/v/t51.82787-19/550174606_17925811725103224_8363667901743352243_n.jpg...","user_verified": true,"text": "Today we're releasing Muse Spark 1.1 -- a strong agentic and coding model at a very low price. It's available through our new Meta Model API and in Meta AI.","posted_at": "2026-07-09T14:00:34.000Z","posted_at_human": "Thu, 09 Jul 2026 14:00:34 GMT","like_count": 2766,"reply_count": 617,"repost_count": 189,"quote_count": 62,"has_media": false,"media_urls": [],"media_type": "text","is_reply": false,"is_repost": false,"hashtags": [],"mentions": [],"urls": [],"scraped_at": "2026-07-15T04:18:09.233Z"}
This record was captured live from a real public Threads post by @zuck on 2026-07-15.
Every post record contains these fields:
| Field | Description |
|---|---|
๐ post_id | Numeric Threads post ID |
๐ก code | Post shortcode used in the URL |
๐ url | Canonical threads.net post URL |
๐ค username | Author username without the @ |
๐ท๏ธ user_full_name | Author display name |
โ
user_verified | True if the author is verified |
๐ท user_pic_url | Author profile picture URL |
๐ text | Full post text |
๐ posted_at | ISO timestamp of publication |
๐ posted_at_human | Human-readable publication timestamp |
โค๏ธ like_count | Number of likes |
๐ฌ reply_count | Number of replies |
๐ repost_count | Number of reposts |
๐จ๏ธ quote_count | Number of quote posts |
๐ผ๏ธ media_type | image, video, carousel, or null |
๐ has_media | True when media is attached |
๐๏ธ media_urls[] | Array of media file URLs |
#๏ธโฃ hashtags[] | Hashtags extracted from the text |
@ mentions[] | Mentions extracted from the text |
๐ urls[] | Plain URLs extracted from the text |
โฉ๏ธ is_reply | True if this post is a reply |
๐ is_repost | True if this post is a repost |
๐งต parent_post_id | Parent post ID for replies |
๐งฌ original_post_id | Original post ID for reposts |
๐ scraped_at | ISO timestamp of when the record was captured |
๐ผ Common use cases
Brand and topic monitoring Search Threads for your brand name or a keyword and capture every public post that mentions it. Flag spikes in conversation volume before they turn into a PR moment.
Trend and hashtag tracking Pull the recent or top feed for any tag to see what is gaining traction. Compare hashtag velocity across days to spot early breakouts.
Competitor and creator watch Snapshot a rival account's latest posts with full engagement metrics. Build a rolling dataset of which formats and hooks perform best on Threads.
AI training and sentiment analysis Assemble structured Threads corpora for LLM fine-tuning or sentiment scoring. Feed live posts into a Claude, ChatGPT, or MCP agent for summarization and classification.
๐ Getting started
- Open the actor and pick a Mode: Profile posts, Post detail, Search query, or Hashtag feed.
- Fill in the matching field: usernames, post URLs, search text, or hashtag (without the #).
- Set Max posts to cap the run size, and optionally toggle Include replies or Include reposts.
- For search and hashtag modes, pick Result type: Recent or Top.
- Click Save & Start, then download as JSON, CSV, or Excel, or pull via API or MCP.
๐ Run on a schedule
Turn this from a one-off pull into a standing feed with Apify's built-in Schedules โ no code, no cron server of your own.
- Run the actor once with the input you want repeated, then click Save as a task (top of the run form) โ this keeps your exact input attached for every future run.
- In the Apify Console, go to Schedules (left sidebar) โ Create new.
- Name it, set your timezone, and pick a frequency โ a preset (hourly / daily / weekly) or a custom cron expression (e.g.
0 6 * * *for daily at 6am). - Under Actors or tasks to run, add the task you saved in step 1.
- Save. From then on it runs unattended on your schedule, billed the same pay-per-post way as a manual run โ nothing is charged just for the schedule existing.
Prefer to automate the setup itself? Same thing via the API:
curl -X POST "https://api.apify.com/v2/schedules?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"name": "threads-scraper-daily","cronExpression": "0 6 * * *","isEnabled": true,"actions": [{ "type": "RUN_ACTOR", "actorId": "themineworks/threads-scraper" }]}'
Full options โ time zones, run notifications, pausing a schedule โ are in Apify's Schedules documentation.
Monitor mode โ pay only for NEW posts
Set monitorMode: true and this actor remembers what it delivered last time (keyed on
post_id) โ on the next scheduled run, only genuinely new posts are pushed and charged.
Re-running the same input daily costs you for the new posts each day, not the whole feed
every time.
{ "monitorMode": true }
Pairs directly with Run on a schedule above: save a task with monitorMode: true,
attach it to a daily schedule, and you have a standing "what's new" feed with no
duplicate charges. The run summary reports new_this_run and skipped_duplicates so
you can see the dedup working. First run establishes the baseline (everything is "new");
every run after that is incremental.
The summary lives in the run's OUTPUT record (Storage โ Key-value store โ
OUTPUT), not in the dataset, so your dataset holds posts and nothing else. It
carries posts_scraped, charged_for, and the per-window fan-out yield.
๐ต Pricing
| Event | Price | You pay when |
|---|---|---|
| Post delivered | $0.001 | A post record lands in your dataset |
That's $1.00 per 1,000 posts โ actively-used Threads scrapers on the Store currently range from $1 to $20 per 1,000, and several add a $0.02 per-run start fee that dominates the bill on scheduled monitors. This actor has no start fee, no subscription, no minimum, and no charge for empty or failed runs.
FAQ
Does Threads have an official API? No. Meta has not released a public Threads API, which is why this scraper exists. It reads only the public data a logged-out visitor sees on threads.net.
How am I charged? Pay per post. You are billed only for posts actually delivered. Runs that return zero posts are never charged. There is no free tier.
Can I include replies and reposts?
Yes. Both are excluded by default. Toggle Include replies and Include reposts to add them, then use the is_reply and is_repost flags to sort or filter downstream.
Which input modes are supported? Four: profile (a user's posts), post (one or more post URLs with detail), search (posts matching a keyword), and hashtag (a tag's recent or top feed).
Is it legal to scrape Threads? The actor collects only publicly available posts and never accesses private accounts. Public data can still include personal data under laws like the GDPR, so scrape only what you have a legitimate reason to use.
Is there a Threads API in 2026? Meta has still not shipped a public read API for Threads. Third-party options are scrapers like this one, which read only what a logged-out visitor sees on threads.net.
Can I monitor a keyword on Threads over time? Yes โ save a search-mode input and put it on a schedule (see "Run on a schedule"). Each run appends new posts to your dataset, and the in-run recency windows catch posts that appear while it runs.
What's the cheapest way to get Threads data? At $1.00/1k posts with no start fee, this is currently the lowest per-post price among actively-used Threads actors on the Store. If a competitor is cheaper for your workload, use them โ our bet is total cost including start fees and failed-run billing, where we charge zero.
๐ค Use from Claude, ChatGPT & any MCP agent
Hosted MCP endpoint โ no install, OAuth on first connect:
https://mcp.apify.com/?tools=themineworks/threads-scraper
Claude Desktop / Cursor config (token auth):
{"mcpServers": {"threads": {"url": "https://mcp.apify.com/?tools=themineworks/threads-scraper","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Ask your agent: "Search Threads for posts about [topic] from the last week and summarize the sentiment."
For multi-platform social research in one connection (Threads + Reddit + X + YouTube + Google Trends + news), use our Social & Market Research MCP server โ eight tools behind one endpoint.
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/threads-scraper').call({mode: 'hashtag',hashtag: 'ai',maxPosts: 25,resultType: 'top',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
๐ ๏ธ Complete your social listening pipeline
Threads is one channel. Add the others in the same suite:
- Instagram Profile Scraper: followers, bio, and stats for any public account. Threads and Instagram share usernames.
- Twitter / X Scraper: tweets by keyword or handle without a paid API key.
- Reddit Scraper: posts, comments, and subreddit search with full comment trees.
Typical flow: search Threads for a brand or keyword, cross-check the same handle on Instagram and X, then pull Reddit for longer-form conversation.
Found a bug or have a feature request? Open an issue on the actor's Apify Console page or reach out through the Apify profile.