# Bluesky Posts Scraper (`mambalabs/bluesky-posts-scraper`) Actor

Search Bluesky posts by keyword, read an account's posts, or read a post and its replies. Exact like, reply, repost, and quote counts, with dates, hashtags, links, and images. No login and no key. You pay per row.

- **URL**: https://apify.com/mambalabs/bluesky-posts-scraper.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** Social media, Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.93 / 1,000 post rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Bluesky Posts Scraper

Give keywords, Bluesky accounts, or post addresses. The actor returns one row per post or reply, with exact like, reply, repost, and quote counts, dates, hashtags, links, and images. You pay per row returned. Mamba Labs pays the platform costs of the run.

### Features

- Keyword search, sorted by latest or top, with date and language filters.
- An account's own posts, newest first, with or without its replies and reposts.
- A post and its replies, from a post address.
- Replies under every post a search or account read finds, as a charged option.
- One free status row per source, which says how many rows it returned, whether the list was complete, or why it stopped.
- A post found by two sources is returned and charged once.

### How the data is read

The actor reads Bluesky's public AT Protocol API at `api.bsky.app` on the Apify proxy default pool, with no login, no key, and no other developer's actor. An HTTP 429 waits and rereads once, as Bluesky's robots.txt asks, and then returns a free row.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `queries` | array |  | Keywords to search, up to 20. Without your own app password each search returns one page, about 100 posts. Text from Clay splits on new lines, so a query can hold a comma. |
| `authors` | array |  | Bluesky handles, profile addresses, or DIDs, up to 20. Returns each account's own posts, newest first. |
| `post_urls` | array |  | Addresses of Bluesky posts to read, up to 100. |
| `sort` | string | `latest` | latest or top. Default latest. Used for queries. |
| `since_date` | string |  | Only posts from this date, such as 2026-10-01. |
| `until_date` | string |  | Only posts before this date, such as 2026-11-01. |
| `language` | string |  | Language code such as en or de. Used for queries. Reads the language the post's author set. |
| `max_posts_per_source` | string | `100` | Per query or account, up to 2000. Default 100. A search with no app password stops at about 100. |
| `include_replies` | string | `no` | yes or no. Default no. Reads the replies under each post found. Each reply is a charged row. |
| `max_replies_per_post` | string | `20` | Up to 200. Default 20. |
| `include_account_replies` | string | `no` | yes or no. Default no. Used for accounts. |
| `include_reposts` | string | `no` | yes or no. Default no. Used for accounts. A repost row shows the original author. |
| `bluesky_handle` | string |  | Optional, with the app password. Used only to page a search past its first page. |
| `bluesky_app_password` | string |  | Optional. Create an app password in Bluesky settings; never use your main password. Sent only to Bluesky. Without it a search returns one page, about 100 posts. Accounts and post addresses need no password. |
| `max_charge_usd` | string |  | Optional. The run stops before a charge that would pass this amount. Summary rows are always returned. |

### Output

| Field | Type | What it holds |
|---|---|---|
| `row_type` | string | One of: post, reply, source_status, run_summary. run_summary is the one free row written when the input is refused. |
| `row_key` | string | Unique key for this row: the post's AT URI. |
| `source_type` | string | query, author, post, or login: the kind of input this row came from. |
| `query` | string | The search query that found this row. |
| `account` | string | The account input that found this row. |
| `input_url` | string | The post address input that found this row. |
| `query_in_text` | boolean | Search post rows: whether the post text holds the query. Bluesky also matches on things a row does not show, such as a link target, so false is not always wrong. |
| `post_uri` | string | The post's AT URI. |
| `url` | string | The post on bsky.app. |
| `text` | string | The post text. |
| `author_handle` | string | The author's handle. |
| `author_name` | string | The author's display name, where set. |
| `author_did` | string | The author's stable ID. |
| `author_url` | string | The author's profile on bsky.app. |
| `created_at` | string | When the post was written, as its author's client states it, UTC. |
| `indexed_at` | string | When Bluesky indexed the post, UTC. |
| `likes` | integer | Exact like count. |
| `replies` | integer | Exact reply count. |
| `reposts` | integer | Exact repost count. |
| `quotes` | integer | Exact quote count. |
| `languages` | array | Language codes the post's author set. |
| `hashtags` | array | Tags in the post. |
| `mentions` | array | DIDs of accounts mentioned. |
| `links` | array | Link targets in the post and its link card. |
| `image_urls` | array | Full size images on the post. |
| `is_reply` | boolean | Whether the post answers another post. |
| `parent_uri` | string | The post this one answers. |
| `root_uri` | string | The first post of this thread. |
| `posts_returned` | integer | source_status rows: posts this source returned. |
| `replies_returned` | integer | source_status rows: replies this source returned. |
| `list_complete` | boolean | source_status rows: true when Bluesky offered no further page, false when the run stopped first. |
| `row_status` | string | ok, or why this row carries no data: no_results, no_change, partial, blocked, or error. |
| `error_reason` | string | Why the row is not ok. A refused input reads input_invalid: followed by what to fix. |
| `billable_events_json` | string | What this row was billed as, for example {"post-row":1}. {} means free. |
| `scraped_at` | string | When the row was written, UTC. |

### Pricing

Pay per event. Summary rows and a refused input are free.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| `post-row`, one post or reply | $0.0011 | $0.001045 | $0.00099 | $0.000935 |
| `apify-actor-start`, once per run (one per GB of memory; the default 256 MB is one) | $0.0065 | $0.0065 | $0.0065 | $0.0065 |

Per 1,000 rows of `post-row`: $1.10 on the free plan, $0.94 on Gold.

Free plan cap: 1.50 USD of evaluation a month, about 1364 rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your `max_charge_usd` input.

Mamba Labs pays the platform costs of your run, Apify proxy traffic included.

### Usage examples

**Clay.** Number and on or off inputs are text fields, which is what Clay sends. A list input takes a JSON list, so put the column inside a one item list.

**MCP.** The Mamba Labs MCP server `@mambalabsdev/mcp-bluesky-posts-scraper` exposes this actor to Claude and other MCP clients.

### Error handling

| Case | What you get |
|---|---|
| Missing or unreadable input | One free row, `row_type` `run_summary`, `error_reason` starting `input_invalid:` with what to fix. The run ends successfully and charges nothing but the run start |
| A source refuses, finds nothing, or does not exist | One free `source_status` row with `row_status` `blocked`, `partial`, or `no_results`, and the next source still runs |
| The run is close to its timeout | The actor stops starting new work 90 seconds before the timeout and delivers what it has |

### Limitations

- A search with no account returns one page, about 100 posts per query. Bluesky answers any later search page with HTTP 403 "forbidden by administrative rules" from every exit tested. The status row reads `partial` and says so. The actor does not slice dates to get past this. To page further, give your own `bluesky_handle` and `bluesky_app_password`.
- The app password route has not run on a real account. Fixtures and the refused password path are the test, and the first buyer's password is the live test. Use an app password, never your main password. It is sent only to Bluesky, stays out of rows and logs, and is used only for search.
- A login session lasts about 2 hours by Bluesky's own setting, and a longer search then ends as `partial`.
- Accounts page with no account of your own: 2,000 unique posts from one account in one test run, 303 seconds. 2,000 per source is the actor's maximum.
- Bluesky decides what a search matches, and it also matches things a row does not show, such as a link target. `query_in_text` reads false on those rows. In one test, 13 of 99 read false, and these rows are charged.
- Replies come from the first 6 levels of a thread. Blocked and deleted replies are skipped.
- If the first 5 sources return nothing, the run stops with a free row, so a list of dead entries does not run on. After any row is returned, every source runs.
- A repost row shows the original author and post, not who reposted it.
- An author who asks Bluesky not to show them to logged out viewers is skipped, free, on every route, including when you give an app password. On one search page, 10 of 100 posts were skipped this way, so a search can return fewer rows than the maximum. An account or post input like this reads `no_results` and says why.

### Mamba Labs actor suite

| Actor | Actor ID |
|---|---|
| [Account Hiring Watch](https://apify.com/mambalabs/account-hiring-watch?fpr=mamba) | `gRAZA5WBi1r6L0gy7` |
| [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor?fpr=mamba) | `anxbRv0lKrpQ1pnua` |
| [Agent to Brokerage Resolver](https://apify.com/mambalabs/agent-brokerage-resolver?fpr=mamba) | `ePRRGLxOGyaVHO4dI` |
| [AI Answer Visibility Tracker](https://apify.com/mambalabs/ai-answer-visibility-tracker?fpr=mamba) | `RJZvzKniYK4nswcMg` |
| [AI List Extractor for Any Website](https://apify.com/mambalabs/ai-list-extractor-any-website?fpr=mamba) | `D5hOdIez45M0NX5jD` |
| [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector?fpr=mamba) | `EwkHhmqiuJgRoVEbE` |
| [Amazon Product, Price, and Stock Tracker](https://apify.com/mambalabs/amazon-product-price-stock-tracker?fpr=mamba) | `MtJPZoyjJ3IeqTFyo` |
| [API Deprecation and Breaking Change Monitor](https://apify.com/mambalabs/api-change-monitor?fpr=mamba) | `pHsbS3xXUK8Jqutz5` |
| [App Store and Google Play Review Monitor](https://apify.com/mambalabs/app-store-google-play-review-monitor?fpr=mamba) | `MaCMEhGrbchxQZ92G` |
| [B2B Reddit Conversation Monitor](https://apify.com/mambalabs/b2b-reddit-conversation-monitor?fpr=mamba) | `SoDryzzsjmY3SsiyG` |
| [Bluesky Brand Presence Mapper](https://apify.com/mambalabs/bluesky-brand-presence-mapper?fpr=mamba) | `eLpxzP4IuXznlFVND` |
| [Bluesky Posts Scraper](https://apify.com/mambalabs/bluesky-posts-scraper?fpr=mamba) | `KldSjS7wjoeZ7vQGm` |
| [Brand Sponsor Finder](https://apify.com/mambalabs/brand-sponsor-finder?fpr=mamba) | `PPgK6xrgOmvL7Nrys` |
| [Bulk WHOIS and RDAP Domain Age Lookup](https://apify.com/mambalabs/whois-domain-lookup?fpr=mamba) | `MTrkG5FLU6SjqLdJY` |
| [Career Change Signal Engine](https://apify.com/mambalabs/career-change-signal-engine?fpr=mamba) | `vX2Yga1a6wGaXaP14` |
| [Company Careers Page Jobs, 17 ATS Boards](https://apify.com/mambalabs/ats-jobs-feed?fpr=mamba) | `izP0rfIgf5YaRZfIh` |
| [Company Change Event Feed](https://apify.com/mambalabs/company-change-event-feed?fpr=mamba) | `oX44rS0fkEJ3rXLWe` |
| [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder?fpr=mamba) | `jch0HdaZnpbMqlcGS` |
| [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher?fpr=mamba) | `YlUtLWjfPpqykmB8g` |
| [Company Funding Record](https://apify.com/mambalabs/funding-investor-record?fpr=mamba) | `OFS4Mt1gyYNtGfUbE` |
| [Company Headcount Estimator](https://apify.com/mambalabs/company-headcount-estimator?fpr=mamba) | `aHC4GROnNt6kfZe5r` |
| [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver?fpr=mamba) | `lr8fTRAmZCBZmuwwh` |
| [Company Role Email, Phone and Address Finder](https://apify.com/mambalabs/company-contact-details-extractor?fpr=mamba) | `4mMncKaJykiq94grz` |
| [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper?fpr=mamba) | `4k6CCemkgBDz18m2h` |
| [Competitor Price, Stock, and Changelog Monitor](https://apify.com/mambalabs/competitor-price-stock-changelog-monitor?fpr=mamba) | `yxdgCbUQ4PYQWwRNU` |
| [Contact Classifier](https://apify.com/mambalabs/contact-classifier?fpr=mamba) | `0lGSeYJmniXhGANnO` |
| [Contractor License Search, CA, TX, WA, OR, LA](https://apify.com/mambalabs/contractor-license-lookup?fpr=mamba) | `WBYK3CPI2kdeq4bP1` |
| [CRM Contact Job Change Checker](https://apify.com/mambalabs/job-change-tracker?fpr=mamba) | `L8UbEmMJC1XYPSZOb` |
| [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker?fpr=mamba) | `0tVgxI7A6o9jMlxmc` |
| [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver?fpr=mamba) | `3HtnSaqPHOg1Qg5gx` |
| [Ecommerce Platform Profiler](https://apify.com/mambalabs/ecommerce-platform-profiler?fpr=mamba) | `5G2NeYjBbQTjaTn9L` |
| [Ecommerce Store Discovery](https://apify.com/mambalabs/ecommerce-store-discovery?fpr=mamba) | `PeHu4sLyFvQHXUUrX` |
| [Email List Verifier, Bring Your Own Key](https://apify.com/mambalabs/email-verifier?fpr=mamba) | `CzVJ4NlaCKk80xpgE` |
| [Event Presence Index](https://apify.com/mambalabs/event-presence-index?fpr=mamba) | `WLhMy8fMDgsxdYxv5` |
| [Expert Witness Finder, US and Australia](https://apify.com/mambalabs/expert-witness-directory?fpr=mamba) | `LIpwlgfE3LaQBaXd4` |
| [Facebook Posts Scraper](https://apify.com/mambalabs/facebook-posts-scraper?fpr=mamba) | `T6jxIeq4ua0SLXnqG` |
| [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner?fpr=mamba) | `FS13X6dhQVgX3XOM6` |
| [GDPR Cookie Banner and Consent Checker](https://apify.com/mambalabs/cookie-consent-audit?fpr=mamba) | `TrKyOS0KBoGC35nbr` |
| [GitHub Followers and Following Export](https://apify.com/mambalabs/github-followers-following-export?fpr=mamba) | `SGNxDmFb9v3tRDaFI` |
| [GitHub Organization Signal Scanner](https://apify.com/mambalabs/github-organization-signal-scanner?fpr=mamba) | `ahF8RRpv5mzPao5CN` |
| [Google Ads Transparency Center Scraper by Domain](https://apify.com/mambalabs/google-ads-transparency-monitor?fpr=mamba) | `1eOwxhBVxzvOXAm4s` |
| [Google Maps Places Scraper](https://apify.com/mambalabs/google-maps-places-scraper?fpr=mamba) | `SuvHCNJ7pIuw6gn54` |
| [Google Trends Scraper](https://apify.com/mambalabs/google-trends-scraper?fpr=mamba) | `OeDzaACKmBYJXzHZk` |
| [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper?fpr=mamba) | `D7O1SA2EqwHGsGr1P` |
| [GTM Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay?fpr=mamba) | `xKdRfnfFNkdMpFuNs` |
| [Healthcare Provider NPI Enricher](https://apify.com/mambalabs/healthcare-provider-npi-enricher?fpr=mamba) | `MrgbHzcpDq3mOv9Df` |
| [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay?fpr=mamba) | `W161DT8W4kW55dMFh` |
| [Influencer Change Monitor](https://apify.com/mambalabs/creator-change-monitor?fpr=mamba) | `d2VVgahNL6UmcLkhg` |
| [Influencer Lead List Builder](https://apify.com/mambalabs/creator-lead-list-all-in-one?fpr=mamba) | `KnmByszcv135yM30G` |
| [Influencer Profile Scraper](https://apify.com/mambalabs/creator-profile-reader?fpr=mamba) | `EqEnklDVMIcB1V499` |
| [Influencer Search Across TikTok, Instagram and YouTube](https://apify.com/mambalabs/creator-finder?fpr=mamba) | `tpkedmloIIWtXx6sg` |
| [Influencer Talent Agency Lookup](https://apify.com/mambalabs/talent-agency-lookup?fpr=mamba) | `zCuX4Mgyg6JvXgGzd` |
| [Instagram Facebook Brand Presence Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper?fpr=mamba) | `HXh65I0JBjPsunbY8` |
| [Integration and Marketplace Presence Mapper](https://apify.com/mambalabs/integration-marketplace-presence-mapper?fpr=mamba) | `V0guNuvM85Q61f2gj` |
| [Job Board Keyword Signal Scanner](https://apify.com/mambalabs/job-board-keyword-signal-scanner?fpr=mamba) | `4DvqpvhMR74NLcDDY` |
| [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery?fpr=mamba) | `QCfICD9kOPiOdj5iI` |
| [Journalist and Media List Builder](https://apify.com/mambalabs/journalist-media-list-builder?fpr=mamba) | `mAfizsZC8qRoR0ecS` |
| [Launch Directory List Builder](https://apify.com/mambalabs/launch-directory-list-builder?fpr=mamba) | `cRq3bmvEZxZtioQ7U` |
| [Lead File Import Checker](https://apify.com/mambalabs/lead-file-import-checker?fpr=mamba) | `RwlGVXTf46LqZdUgt` |
| [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver?fpr=mamba) | `KHFyPCDIx7CyqULYm` |
| [Link in Bio Scraper and Newsletter Detector](https://apify.com/mambalabs/link-in-bio-newsletter-checker?fpr=mamba) | `OorucdheTIgu7RFzK` |
| [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper?fpr=mamba) | `zOPm6A9JEhUGcIdFW` |
| [LinkedIn Jobs Feed](https://apify.com/mambalabs/linkedin-jobs-feed?fpr=mamba) | `SH6N0d8cz46BhCC8B` |
| [LinkedIn Post Tracker](https://apify.com/mambalabs/linkedin-post-engager-capture?fpr=mamba) | `oiGLNPuaf5BRaz9K5` |
| [Local Business Lead Builder](https://apify.com/mambalabs/local-business-lead-builder?fpr=mamba) | `qMN97aoHhsAS5bznV` |
| [Local Rank and Map Pack Tracker](https://apify.com/mambalabs/local-rank-map-pack-tracker?fpr=mamba) | `gv0kyHGDIg8XscclB` |
| [Lookalike Companies from Seed Domains](https://apify.com/mambalabs/lookalike-company-finder?fpr=mamba) | `e2O426WBAbLLQL4Z2` |
| [Manufacturer and Supplier Finder](https://apify.com/mambalabs/manufacturer-supplier-finder?fpr=mamba) | `Qcsdmd0lUfPzVkonh` |
| [MCP Server Change and Health Monitor](https://apify.com/mambalabs/mcp-server-change-health-monitor?fpr=mamba) | `IeqjWF9U0BdDQFY08` |
| [Media URL Transcriber](https://apify.com/mambalabs/media-url-transcriber?fpr=mamba) | `Syfr7Ya3EsHgWfrB6` |
| [Meta Ad Library Ads by Company, Graph API](https://apify.com/mambalabs/meta-ad-library-monitor?fpr=mamba) | `J1GWlSXfSGU3u8Wng` |
| [Mobile Phone Waterfall](https://apify.com/mambalabs/mobile-phone-waterfall-orchestrator?fpr=mamba) | `6OOgPktf7RIa5XCOP` |
| [New Hire Finder](https://apify.com/mambalabs/new-hire-finder?fpr=mamba) | `cKuc38p4nYHNF3IW8` |
| [Newly Registered Companies, UK, Norway, Finland, France](https://apify.com/mambalabs/new-company-registrations-feed?fpr=mamba) | `g2WfZhWvCtc57g2Jo` |
| [News and Media Mention Monitor](https://apify.com/mambalabs/news-media-mention-monitor?fpr=mamba) | `gol1PPUKrsIk4QLBd` |
| [Newsletter Sponsor Tracker](https://apify.com/mambalabs/newsletter-sponsor-tracker?fpr=mamba) | `qSwpqxD1TiPZpLQHv` |
| [Open Tender and RFP Finder](https://apify.com/mambalabs/open-tender-rfp-finder?fpr=mamba) | `kPTGz6t6TFoUUyfaO` |
| [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint?fpr=mamba) | `v43UJC8r7qW7cBSTG` |
| [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor?fpr=mamba) | `TpurgcOZbVnknlaiC` |
| [Partner and Member Directory Extractor](https://apify.com/mambalabs/partner-member-directory-extractor?fpr=mamba) | `ZX0XJPPUvnFJxeC1a` |
| [People Finder & Email Verifier](https://apify.com/mambalabs/people-finder?fpr=mamba) | `LEgloG7tWgQl4o6TD` |
| [Person LinkedIn URL Resolver](https://apify.com/mambalabs/person-linkedin-url-resolver?fpr=mamba) | `ssuyPV8LnEsL8qbnb` |
| [Person Social Footprint Mapper](https://apify.com/mambalabs/person-social-footprint-mapper?fpr=mamba) | `jfQXa2zW9FHCJot9K` |
| [Personal Email to Company Resolver](https://apify.com/mambalabs/personal-email-to-company-resolver?fpr=mamba) | `AefT5Ye6YNPFQwJBf` |
| [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper?fpr=mamba) | `d1HvjZfKhgvWsoEwn` |
| [Podcast Guest and Host Finder](https://apify.com/mambalabs/podcast-guest-host-finder?fpr=mamba) | `o2MGSvgbSLeeXOsIo` |
| [Product Hunt Daily Launches with Maker Domains](https://apify.com/mambalabs/product-hunt-launches-feed?fpr=mamba) | `O4VX63drWK9Y9x641` |
| [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine?fpr=mamba) | `q9rT6v64nUJdPexOQ` |
| [Public Feature Board and Roadmap Monitor](https://apify.com/mambalabs/public-feature-board-roadmap-monitor?fpr=mamba) | `rcHF5gj5r2Vqnry35` |
| [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency?fpr=mamba) | `TbLwaUUATdYb6wp4N` |
| [Recent Funding Rounds Feed](https://apify.com/mambalabs/recent-funding-rounds-feed?fpr=mamba) | `KueVp9MOz7iOoAgDp` |
| [Reddit Brand Presence Mapper](https://apify.com/mambalabs/reddit-brand-presence-mapper?fpr=mamba) | `pKQZmDaT70SEb54bZ` |
| [Reddit Search and Thread Scraper](https://apify.com/mambalabs/reddit-search-thread-scraper?fpr=mamba) | `4Gsth5cP2Xt9V2xDN` |
| [Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder?fpr=mamba) | `uINxR7a1IW8qUTRUX` |
| [Research Topic Institutions and Authors](https://apify.com/mambalabs/research-topic-institutions-authors?fpr=mamba) | `OH8ANqt7bCKbo72Gk` |
| [Sequencer Event Poller](https://apify.com/mambalabs/sequencer-event-poller?fpr=mamba) | `S6s8Rjd61tGdrMRk4` |
| [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push?fpr=mamba) | `0Jv27VeWM5tSZQs9x` |
| [Shopify App Store and Chrome Web Store Listings](https://apify.com/mambalabs/shopify-app-store-chrome-web-store-listings?fpr=mamba) | `gaY0BzkLyN77mD3wI` |
| [Site Crawler for Links and Tables](https://apify.com/mambalabs/site-crawler-links-tables?fpr=mamba) | `lLLJ6JxZ4XqN8ULz0` |
| [Substack Newsletter and Posts Scraper](https://apify.com/mambalabs/substack-scraper?fpr=mamba) | `UEFsdwiPLmPNVy9xd` |
| [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor?fpr=mamba) | `j8a9zX0k4mNbvDbWK` |
| [Tech Stack Signal Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper?fpr=mamba) | `qyd7nNyqFPelQViBx` |
| [Tennis Match Data](https://apify.com/mambalabs/tennis-match-data?fpr=mamba) | `v3OX6zxXHZOf2yurO` |
| [Threads Posts by Keyword, Exact Match](https://apify.com/mambalabs/threads-keyword-search?fpr=mamba) | `2OT8K8RiEEWtaj2MW` |
| [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper?fpr=mamba) | `fco8FvoJcSafbeyd1` |
| [Trustpilot Reputation Enricher](https://apify.com/mambalabs/review-platform-reputation-enricher?fpr=mamba) | `3lIqfCt61j4hqE1xz` |
| [US and UK Contract Award Winners by Company](https://apify.com/mambalabs/public-award-monitor?fpr=mamba) | `zhEtllASykOcx9hJ8` |
| [US Import Records Buyer Finder](https://apify.com/mambalabs/us-import-records-buyer-finder?fpr=mamba) | `VIMafpKF5ggOw0COU` |
| [VC and Accelerator Portfolio List Builder](https://apify.com/mambalabs/vc-accelerator-portfolio-list-builder?fpr=mamba) | `chH8hrfuoqqolW06m` |
| [Website Accessibility Checker, WCAG 2.2 AA](https://apify.com/mambalabs/wcag-accessibility-audit?fpr=mamba) | `P3jBj3FRghKEhX52z` |
| [Website Phrase and Business Model Classifier](https://apify.com/mambalabs/website-phrase-business-model-classifier?fpr=mamba) | `CBuZ9k7sRwBeiKiCS` |
| [Website Traffic Rank Estimator](https://apify.com/mambalabs/website-traffic-rank-estimator?fpr=mamba) | `GnOFUzlNVIoXgeJjH` |
| [Work Email Waterfall](https://apify.com/mambalabs/email-waterfall-orchestrator?fpr=mamba) | `OT6xqTFThC0Rjf7Zj` |
| [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector?fpr=mamba) | `Li6pPDhqbdzFz3h7G` |
| [X Brand Presence Mapper](https://apify.com/mambalabs/x-brand-presence-mapper?fpr=mamba) | `oLOgadhHUkNAyDA3w` |
| [YouTube Channel from Company Domain](https://apify.com/mambalabs/youtube-channel-transcript-extractor?fpr=mamba) | `6hSpD3kd2s2IQ4VSs` |
| [Zillow Listing Details](https://apify.com/mambalabs/zillow-listing-details?fpr=mamba) | `yG4zM0Enfsw2NefJ1` |

Built by [Mamba Labs](https://apify.com/mambalabs).

# Actor input Schema

## `queries` (type: `array`):

Keywords to search, up to 20. Without your own app password each search returns one page, about 100 posts. Text from Clay splits on new lines, so a query can hold a comma.

## `authors` (type: `array`):

Bluesky handles, profile addresses, or DIDs, up to 20. Returns each account's own posts, newest first.

## `post_urls` (type: `array`):

Addresses of Bluesky posts to read, up to 100.

## `sort` (type: `string`):

latest or top. Default latest. Used for queries.

## `since_date` (type: `string`):

Only posts from this date, such as 2026-10-01.

## `until_date` (type: `string`):

Only posts before this date, such as 2026-11-01.

## `language` (type: `string`):

Language code such as en or de. Used for queries. Reads the language the post's author set.

## `max_posts_per_source` (type: `string`):

Per query or account, up to 2000. Default 100. A search with no app password stops at about 100.

## `include_replies` (type: `string`):

yes or no. Default no. Reads the replies under each post found. Each reply is a charged row.

## `max_replies_per_post` (type: `string`):

Up to 200. Default 20.

## `include_account_replies` (type: `string`):

yes or no. Default no. Used for accounts.

## `include_reposts` (type: `string`):

yes or no. Default no. Used for accounts. A repost row shows the original author.

## `bluesky_handle` (type: `string`):

Optional, with the app password. Used only to page a search past its first page.

## `bluesky_app_password` (type: `string`):

Optional. Create an app password in Bluesky settings; never use your main password. Sent only to Bluesky. Without it a search returns one page, about 100 posts. Accounts and post addresses need no password.

## `max_charge_usd` (type: `string`):

Optional. The run stops before a charge that would pass this amount. Summary rows are always returned.

## `source_tag` (type: `string`):

Internal attribution tag. Leave empty.

## Actor input object example

```json
{
  "queries": [
    "apify"
  ],
  "sort": "latest",
  "max_posts_per_source": "10",
  "include_replies": "no",
  "max_replies_per_post": "20",
  "include_account_replies": "no",
  "include_reposts": "no"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `run_summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "apify"
    ],
    "max_posts_per_source": "10"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/bluesky-posts-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["apify"],
    "max_posts_per_source": "10",
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/bluesky-posts-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "apify"
  ],
  "max_posts_per_source": "10"
}' |
apify call mambalabs/bluesky-posts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mambalabs/bluesky-posts-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KldSjS7wjoeZ7vQGm/builds/6wuwwi6viYDH1gowB/openapi.json
