Bluesky Comments Scraper – Export Replies & Threads
Pricing
from $0.72 / 1,000 comment extracteds
Bluesky Comments Scraper – Export Replies & Threads
Export public Bluesky replies, nested conversation context, author details, timestamps, and engagement metrics from post URLs or AT URIs.
Pricing
from $0.72 / 1,000 comment extracteds
Rating
0.0
(0)
Developer
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Export public replies from Bluesky post threads as structured JSON, CSV, Excel, or API-ready records. Monitor customer feedback, community response, campaign engagement, and public conversations without a Bluesky login.
Provide one or more public post URLs or AT URIs. The Actor follows the conversation tree, saves nested replies, preserves source-post context, and returns clean records ready for analysis.
Quick start
Paste a public post URL and start with a small limit:
{"postUrls": ["https://bsky.app/profile/petebuttigieg.bsky.social/post/3lhtdtw23m22m"],"maxCommentsPerPost": 20,"maxDepth": 100}
The Actor exports text replies, not the source post itself. Available replies depend on the public thread at collection time. Media-only replies are not saved.
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
Ready-to-run examples
Choose a public example to see its settings before starting a run:
What you get
Each comment includes:
- Stable post identifiers (
id,uri, andcid) - Canonical comment and source-post URLs
- Author handle, DID, display name, and avatar
- Comment text and language tags
- Creation and indexing timestamps
- Reply, repost, like, and quote counts
- Parent and root reply references
- Conversation depth and source-post author
Illustrative output shape (synthetic values, not a collected record). Optional author, language, and timestamp fields can be absent.
{"kind": "comment","id": "3mk66abcxyz2q","uri": "at://did:plc:example/app.bsky.feed.post/3mk66abcxyz2q","cid": "bafyreiexample","url": "https://bsky.app/profile/reply-user.bsky.social/post/3mk66abcxyz2q","authorHandle": "reply-user.bsky.social","authorDid": "did:plc:example","authorName": "Reply User","authorAvatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:example/example@jpeg","text": "This is a useful write-up.","createdAt": "2026-04-23T14:02:11.000Z","indexedAt": "2026-04-23T14:02:12.000Z","languages": ["en"],"replyCount": 1,"repostCount": 0,"likeCount": 7,"quoteCount": 0,"replyParentUri": "at://did:plc:2q2hs5o42jhbd23pp6lkiauh/app.bsky.feed.post/3lhtdtw23m22m","replyRootUri": "at://did:plc:2q2hs5o42jhbd23pp6lkiauh/app.bsky.feed.post/3lhtdtw23m22m","commentDepth": 1,"sourcePostUri": "at://did:plc:2q2hs5o42jhbd23pp6lkiauh/app.bsky.feed.post/3lhtdtw23m22m","sourcePostUrl": "https://bsky.app/profile/source-user.bsky.social/post/3lhtdtw23m22m","sourcePostAuthorHandle": "source-user.bsky.social"}
Who is it for?
- Social media teams tracking public reactions to posts and announcements
- Marketing analysts comparing engagement across campaigns
- Community managers finding recurring questions and feedback themes
- Researchers studying public conversation structures and reply networks
- Developers and data teams feeding Bluesky comments into dashboards, warehouses, or AI pipelines
Use cases
- Monitor replies to product announcements and campaigns.
- Analyze public feedback and conversation depth.
- Refresh engagement dashboards by running this Actor from your own automation.
- Compare comment volume across source posts and analyze sentiment downstream.
- Archive public discussion context for reproducible research.
- Send new replies to a webhook, spreadsheet, CRM, or data warehouse.
Input settings
Export several posts
{"postUrls": ["https://bsky.app/profile/petebuttigieg.bsky.social/post/3lhtdtw23m22m","https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l"],"maxCommentsPerPost": 100,"maxDepth": 20,"maxRunSeconds": 120}
More input settings
| Setting / API field | Type | Description |
|---|---|---|
Post URLs or AT URIs (postUrls) | string array | Required: one or more public Bluesky post identifiers. |
Maximum comments per post (maxCommentsPerPost) | integer | At most 1–1,000 replies per source post. Form default 20. |
Maximum reply depth (maxDepth) | integer | Requested nested depth, 1–1,000. Default 100. |
Run budget (maxRunSeconds) | integer | 35–300 seconds. Default 300. |
Use low limits while validating a new workflow. Set maxCommentsPerPost explicitly in API calls: the form default is 20, while the runtime uses 100 when the key is absent. The run budget includes a 30-second reserve for saving progress. Collection uses public access without a Bluesky login or a configurable proxy option.
Output data
| Group | Fields |
|---|---|
| Record identity | kind, id, uri, cid, url |
| Author | authorHandle, authorDid, authorName, authorAvatar |
| Content | text, languages, createdAt, indexedAt |
| Engagement | replyCount, repostCount, likeCount, quoteCount |
| Thread context | replyParentUri, replyRootUri, commentDepth |
| Source context | sourcePostUri, sourcePostUrl, sourcePostAuthorHandle |
Records can be downloaded from the Dataset tab as JSON, CSV, Excel, XML, or RSS, or consumed through the API.
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
The start event is a one-time run-start charge.
The comment event is charged for each public reply saved. There are no separate status or error dataset rows.
Subscription tiers receive volume rates.
See the live Pricing tab for current prices before starting a large run.
You are not charged a comment event for a reply-free post.
Set maxCommentsPerPost to control the maximum output and cost per source post.
Tips for best results
- Start with 20 comments to verify the selected post and output shape.
- Use canonical public post URLs copied from Bluesky when possible.
- Use AT URIs when another Bluesky integration already supplies them.
- Use your own automation for repeated snapshots. The Actor does not continuously monitor posts.
- Deduplicate downstream records by
uriorid. - Keep run limits aligned with the number and size of source threads.
Limits and caveats
- Only publicly available Bluesky threads can be exported.
- Deleted, blocked, moderated, or otherwise unavailable replies cannot be returned.
- Deeply nested threads are limited by
maxDepth,maxCommentsPerPost, and source availability. Only replies with nonempty text and a creation timestamp are saved. Unavailable or media-only branches can be omitted. - Replies follow the returned conversation-tree order. There is no newest-first, most-liked, date, keyword, or language filter. Apply sorting and analysis downstream.
- A public post with no usable replies completes successfully with an empty dataset. When available,
RUN_SUMMARYin key-value storage describes saved records and source outcomes. - Invalid identifiers fail validation before collection. Individual source failures are recorded in
RUN_SUMMARY. Useful records from other posts are retained. If every source fails, the run fails. - A time-limited run can return partial records and, when storage is available, save
PENDING_WORKfor unfinished inputs. Thread traversal is not a guarantee of exhaustive conversation coverage. - Counts reflect the values available when each reply is collected and may change later.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~all-in-one-bluesky-scraper/runs' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data @- <<'JSON'{"postUrls": ["https://bsky.app/profile/petebuttigieg.bsky.social/post/3lhtdtw23m22m"],"maxCommentsPerPost": 20,"maxDepth": 100}JSON
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/all-in-one-bluesky-scraper').call({"postUrls": ["https://bsky.app/profile/petebuttigieg.bsky.social/post/3lhtdtw23m22m"],"maxCommentsPerPost": 20,"maxDepth": 100});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/all-in-one-bluesky-scraper').call(run_input={'postUrls': ['https://bsky.app/profile/petebuttigieg.bsky.social/post/3lhtdtw23m22m'], 'maxCommentsPerPost': 20, 'maxDepth': 100})print(client.dataset(run['defaultDatasetId']).list_items().items)
MCP and AI agents notes
For agents, provide postUrls explicitly and start with maxCommentsPerPost: 20. Read returned dataset records after the run. This Actor does not generate summaries or sentiment labels itself. MCP discovery and client availability depend on the platform and your client configuration.
MCP and AI agents
You can ask your AI assistant to collect data with Bluesky Comments Scraper – Export Replies & Threads and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Bluesky Comments Scraper – Export Replies & Threads. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/all-in-one-bluesky-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Bluesky Comments Scraper – Export Replies & Threads by Fetch Cat, or give it the identifier fetch_cat/all-in-one-bluesky-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
Give your assistant the inputs it needs along with a request like one of these:
- “Use Fetch Cat’s Bluesky Comments Scraper – Export Replies & Threads to collect the data for these inputs. Show me the available results and keep their source links when provided.”
- “Collect a small sample with Fetch Cat’s Bluesky Comments Scraper – Export Replies & Threads so I can review the returned fields before a larger batch.”
- “Use Fetch Cat’s Bluesky Comments Scraper – Export Replies & Threads to retrieve the records for my research. Organize the results into a table and flag anything that could not be collected.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
FAQ
Does it require a Bluesky account?
No. It exports public thread data without a Bluesky login.
Can I process multiple posts?
Yes. Add multiple values to postUrls. Limits apply to each source post.
Are nested replies included?
Yes, up to maxDepth and maxCommentsPerPost.
Can I use an AT URI instead of a web URL?
Yes. Both public bsky.app post URLs and valid post AT URIs are accepted.
How do I export CSV or Excel?
Open the run Dataset tab and choose the preferred download format, or request a format from the dataset API.
How do I control spend?
Use a low maxCommentsPerPost value first and review the live Pricing tab before scaling.
Related Actors
More Bluesky scrapers
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥