Meta Threads Scraper for Posts and Replies
Pricing
from $1.19 / 1,000 posts
Meta Threads Scraper for Posts and Replies
Collect public Threads posts from accounts, and Threads replies from post links. Export original text, likes, replies, images, videos and shared links, with a report showing what was collected. No Threads login required. Maintained by CleanScrape.
Pricing
from $1.19 / 1,000 posts
Rating
0.0
(0)
Developer
CleanScrape
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
4
Monthly active users
5 days ago
Last modified
Categories
Features
Share
Collect public Threads posts from accounts or specific post links. Export the original text, available engagement counts, images, videos and shared links. No Threads login or account cookies are needed.
Use it to review an account's public posts, compare a shortlist of posts, or collect examples for content research. A separate run report explains what was collected and where the source stopped.
From $0.0298 for 20 saved posts. Pay for posts saved, with no startup fee. Bronze, Silver and Gold discounts are available.
Watch the walkthrough
Let's use NASA and National Geographic as an example: collect their last 30 days of posts, compare what gets likes, and export to CSV or Excel. Use your own public accounts or specific post links for another project.
Start with a small example
Open the 20-post example, or enter the same settings yourself:
- Select Account posts.
- In Accounts or post links, enter
nasa. Replace it with your own example when you are ready. - Set Maximum posts to
20, then start the run. The date filter is optional.
Open Posts for the results. To check coverage, open the Posts menu in Output, select Run report, then open REPORT. The maximum applies to the whole run, not separately to each account. It is a limit, not a guaranteed result count.
The same example as JSON input:
{"mode": "accounts","targets": ["nasa"],"maxResults": 20,"timeRange": "any"}
Choose what to collect
| Selection | What to enter | What it collects |
|---|---|---|
| Account posts | Handles such as nasa, @nasa, profile links, or an Instagram profile link (the same name is used on Threads) | Account posts available through the public source |
| Specific posts | Full Threads post links | The posts you selected, without collecting an account feed |
| Replies (experimental) | Full links to posts whose replies you want | Replies available from the public conversation source |
Enter one item per line. If an entry is mistyped, the valid entries are still collected and the run explains which entry was skipped. An account that does not exist, is private or needs a login is reported in the run's message and not charged; the other accounts are still collected. Hashtags and keywords get a plain explanation, as keyword search is not supported. A list of only post links is collected as Specific posts, and a list of only accounts as Account posts, whichever option is selected; the run says when it switched. Keep accounts and post links in separate runs. Both threads.com and older threads.net links are accepted, with or without https://.
With Last 7 days, Last 30 days or your own dates, the Actor stops reading an account once it reaches posts older than your dates, so date-limited runs are quick.
Try the post-links example to compare selected posts without reading an entire account feed. As JSON input, collecting one selected post looks like this:
{"mode": "posts","targets": ["https://www.threads.com/@nasa/post/DZceA72Drjf"],"maxResults": 5}
This requests one post, even though the maximum is five. For replies to that post, change mode to replies. The source may return fewer replies than the count shown on Threads.
This Actor does not search Threads by keyword or export follower lists. Replies are experimental: some replies may be missing, and the output does not reconstruct who replied to whom.
Collect older account posts
Keep Account posts and Any time selected, then increase Maximum posts. The Actor follows the public feed backwards until the source ends, your limit is reached, or a safety stop is needed. The maximum is 10,000 saved posts per run on paid Apify plans and 200 per run on Apify's free plan; 20 remains the default for a quick first try.
Try the older-posts example with a 200-post limit. Replace the example account with your own starting point.
For a longer export, allow up to 60 minutes under Apify's run options and set a spending limit you are comfortable with. The Actor saves its report as it works. A larger maximum does not guarantee that more posts are available.
Entire available feed is not the same as guaranteed entire history. Threads can omit old posts or return incomplete pages without a login. The report distinguishes reaching the available feed's end from stopping early. Use it before treating an export as a complete archive.
Optional date filter
Leave Any time selected for a standard run, or choose Last 7 days, Last 30 days, or Choose dates. Custom dates use calendar controls. Dates left in those controls are ignored when you switch to another option.
For JSON input, use timeRange: "custom" with startDate and endDate in YYYY-MM-DD format. The end date includes the whole UTC calendar day.
Filtering keeps matching posts from what the source supplies; it does not unlock older or unavailable posts. Pinned posts and source ordering can make dates appear out of order. Sort by Published (UTC) when needed.
Read the results
| Posts column | Meaning |
|---|---|
| Author | The account that wrote the post |
| Post text | Original text, without rewriting or generated summaries |
| Published (UTC) | When the post was published |
| Likes, Replies, Reposts, Quotes | Counts supplied by Threads at collection time |
| Post link | A link back to the source post |
Images and videos separates media attachments for inspection. Shared and quoted content shows link previews and quoted posts. Full JSON retains IDs and nested objects for programmatic use.
A blank count or null means the source did not provide that value, not zero. A captionless post can still contain useful media, a shared link or a quote. Link titles remain in linkPreview; they do not replace the author's words.
If Threads explicitly marks a quoted post unavailable, the Actor can still save the readable original post. Its unavailable quote stays blank, and the report notes this. Deleted or inaccessible quoted content is not reconstructed.
Media URLs may expire. Download files you need while the links work. This is not a permanent media archive, and the Actor does not visit shared external websites.
Replies include the requested rootPostId. The immediate parentPostId stays null because that relationship has not been established reliably; the output is not a reconstructed reply tree.
Export or automate
Use Apify's dataset export controls for JSON, CSV or Excel, choosing the view you need. Spreadsheet export provides a separate, compact CSV with one row per post and protection against spreadsheet formulas in collected text. Original JSON values stay unchanged. Keep long post IDs as text in spreadsheets to avoid rounding.
The Actor's API tab provides request examples for automation. Send the same input fields shown above and retrieve the run's default dataset. Keep your Apify token in an environment variable or credential manager, not in a public URL or shared workflow.
Each new run is a separate snapshot. Match postId across runs and use observedAt for collection time. New-only monitoring and cross-run duplicate removal are not built in.
Check coverage
Run report lists each account or link, saved results, filtered or excluded records, and stopping reasons. Coverage JSON contains the machine-readable version.
Checked means the available source ended and queued records were processed, not that complete history was recovered. Partial means collection stopped early, a record was excluded, or a source warning prevents confirming coverage. Read the stopping reason and any coverage notes together. An empty dataset after a failure is not evidence that an account has no posts.
If Threads returns an incomplete page, the Actor can check individual posts before saving them. The report still warns that other posts may be missing. Access blocks, rate limits and unexpected source errors stop collection rather than being hidden.
The limit is shared across accounts. Each active account is checked in turn, so results can be interleaved. Use separate runs if you need a fixed sample from each account.
The Actor does not bypass login requirements or access blocks. It can try another public page when a post response is incomplete, but it does not retry indefinitely.
If an interrupted write cannot be confirmed in the dataset, it is preserved under Recovery records rather than blindly written again. A resumed run reconciles its existing storage. Starting a new run creates a new snapshot, not a continuation.
Pricing
The base price is $1.49 per 1,000 saved posts. Each post saved to the default dataset is one event, including a reply in reply mode. Images, videos and quoted content attached to that post are not extra results. There is no startup fee or separate platform-usage charge for customers.
| Saved posts | Base cost |
|---|---|
| 20 | $0.0298 |
| 100 | $0.149 |
| 1,000 | $1.49 |
Bronze receives 10% off, Silver 15% off, and Gold, Platinum and Diamond 20% off the base event price. Apify applies the eligible tier automatically; check the Pricing tab for your rate.
Free plan limit. On Apify's free plan, each run saves up to 200 posts: enough to test the output on real accounts. Paid Apify plans can save up to 10,000 posts per run. If you ask for more on the free plan, the run saves up to 200 and says so in its status.
Reports, filtered-out posts and separate recovery records are not additional billed results. If a run stops early, posts already saved are still billable. Set Maximum posts and Apify's Maximum cost per run to control your job. New runs are new snapshots and can return previously collected posts again.
Ready-to-run examples
Each example opens with its input filled in. Change the input and run it.
| Example | What it does |
|---|---|
| Export replies to a Threads post for sentiment analysis | Up to 200 replies to a Threads post with text, author, likes and time, ready for sentiment analysis. |
Use it from an AI agent
This Actor works as a tool in Claude, Cursor and other AI assistants that support MCP, through Apify's MCP server. Add this server and sign in with your Apify account when asked:
https://mcp.apify.com?tools=cleanscrape/threads-scraper
Then ask in plain words, for example: "Get the latest 30 Threads posts from @nasa and tell me which ones got the most likes." The assistant runs the Actor in your Apify account and reads the results. The price per result is the same as in Console.
Common questions
Can I scrape Threads without logging in?
Yes. The Actor reads public posts. No Threads login or cookies are needed.
Is there an official Threads API?
Meta's Threads API needs a registered app, access tokens and approval for most uses. This Actor needs only the account name or post links.
How far back can I go?
Raise Maximum posts to reach older posts, or choose a period under Published. Very old posts may not be available for every account.
Can I get replies to a post?
Yes. Choose Replies (experimental) and paste the post links. Some replies may be missing.
How much does it cost to scrape Threads?
$1.49 per 1,000 saved posts, with no start fee. 20 posts cost about $0.03. See Pricing above.
Questions or a problem with a run?
Maintained by CleanScrape. Open an Actor issue or email contact.cleanscrape@gmail.com with the run ID and a non-sensitive example of what you expected. Please do not send API tokens, cookies or private exports.
Happy with the results? A quick review on the Store page would help me a lot. If something’s off, tell me in the Issues tab and I’ll fix it. – Niko / CleanScrape
Disclaimer: This independent tool is not affiliated with, endorsed by or sponsored by Meta. Threads and all other trademarks belong to their respective owners. Collect and use public data responsibly and in accordance with applicable requirements.
More tools from CleanScrape
- Casino Bonus Checker: the casino bonus each affiliate and review site shows, with promo codes, 18+ notices and affiliate IDs
- Kick Sponsor Tracker: which brands Kick streamers promote, with promo codes, affiliate links and broadcast hours
- Google Jobs Scraper: job listings with salaries, descriptions and apply links from Google Jobs
- App Store Reviews & Google Play Reviews Scraper (Play Store): reviews from both app stores in one table
- Google Trends Scraper API for Interest Over Time: search interest over time, by region, related queries and trending searches
- Map Your Show Exhibitor List Scraper for Trade Shows: trade show exhibitor lists and booth changes
- Shopify Product Reviews Scraper for Judge.me and Okendo: Judge.me and Okendo reviews from Shopify product links
- Google News Scraper and RSS Feed Reader: headlines from Google News and publisher feeds
- Pinterest Scraper API: keyword search, public pin links and board previews; search results may lack a pin link
- Google Hotels Scraper: hotel prices and booking offers for your dates
- TikTok Shop Product Scraper: US TikTok Shop prices, sellers and ratings
- Whatnot Seller Tracker: top Whatnot sellers per category, items sold, sales per day and followers over time
- Whatnot Scraper: Whatnot listings with prices and live shows by keyword or category
- Likee Scraper API: Likee videos and comments
- Flashscore Tennis Scraper: tennis results, statistics, point-by-point and head-to-head
- Bilibili Scraper: Bilibili videos, danmaku, top comments and creators, no login
- ATP and WTA Tennis Rankings Scraper: current ATP and WTA singles, doubles and race rankings with points and movement
- Career Site Job Listings from Workday, Greenhouse and Lever: open jobs from company career pages, with salaries and new or closed jobs per company
- Video Frame Extractor for Scene Changes and Thumbnails: still images from video files at scene changes, intervals or timestamps, with contact sheets
- Economic Calendar Scraper for Official Release Dates: CPI, jobs, GDP and central bank decision dates from the official agencies of five economies, with UTC times
- Audio Transcription and Speech to Text for Podcasts: podcast feeds, Apple Podcasts links and audio files to text with timestamps and subtitles
- Google Flights Scraper and Fare Tracker: flight prices, airlines, stops and times for your routes and dates, with only new flights or lower prices on a schedule
- Google Shopping Scraper and Price Tracker: product prices, stores and ratings from Google Shopping, each store’s price for a product, and price changes on a schedule
- Telegram Channel Messages Scraper with Comments: public Telegram channel posts with views, reactions, media and comments, exact subscriber counts, and only new posts on a schedule