ScrapeCreators is my pick for developers who need public Bluesky profiles, author feeds, and single-post threads through normal REST requests. Choose Bluesky’s public API when you want direct AT Protocol access, Apify for keyword search and Actor jobs, Bright Data for managed record delivery, B-Social for a browser export, bsky-scraper for a self-hosted firehose collector, or SocialCrawl for another hosted API. The right answer depends on whether you start with a known handle, a search query, a page in your browser, or the whole network stream.
I run ScrapeCreators, so my first-place recommendation comes with an obvious bias. I checked the product pages, docs, prices, and public limits below against primary sources on September 22, 2026. I ran eight live ScrapeCreators requests and two direct Bluesky public API requests. I did not run a controlled reliability benchmark across all seven options.
Quick comparison
| Rank | Bluesky scraper | Choose it if | Published starting point checked September 22, 2026 | Main limitation |
|---|---|---|---|---|
| 1 | ScrapeCreators | Your app knows the profile or post it wants and expects a simple REST response | 100 free credits; $47 for 25,000 credits; tested calls used 1 credit each | No keyword search, firehose, follower-list export, or write actions |
| 2 | Bluesky public API | You want the official public read path and can work with AT Protocol records | Public endpoints are available without authentication; engineering and hosting are your costs | You own identity resolution, schemas, retries, filtering, and storage |
| 3 | Apify Bluesky Scraper | You want keyword search, user feeds, reply expansion, datasets, and Actor runs | From $1.50 per 1,000 results, plus an Actor-start event on the published pricing model | Actor runs and dataset items are different plumbing from one synchronous endpoint |
| 4 | Bright Data Bluesky Scraper API | You need managed profile or post collection with record delivery | 5,000 free records per month; scraper APIs advertised from $0.75 per 1,000 records | Record pricing does not map directly to request pricing |
| 5 | B-Social Scraper | A person wants posts, replies, profiles, or follower lists from the browser | In-app purchases; the public store listing did not show a subscription price | Manual browser workflow, not a backend API |
| 6 | bsky-scraper | You want an MIT-licensed Python collector for the Bluesky firehose | Free code; you pay for compute, storage, and maintenance | It collects a stream into JSONL rather than answering profile or post requests |
| 7 | SocialCrawl Bluesky API | You want another hosted REST wrapper for profiles, user posts, and posts | 100 free credits; the Bluesky page lists 1 credit per request | Its public Bluesky page did not show a paid credit-pack price |
Do not divide those prices into one fake cost per post. ScrapeCreators bills endpoint requests. Apify bills result events and an Actor start. Bright Data bills records. B-Social sells browser software. The official API and open-source collector move the bill into development, infrastructure, and data storage.

What a Bluesky scraper can mean
The query mixes five different jobs:
- Start with a known handle and fetch a public profile or author feed.
- Start with one post URL and retrieve the post, engagement counters, and available replies.
- Search public posts by keyword, hashtag, date, or language.
- Export rows visible in a browser to CSV, JSON, or Excel.
- Consume a continuous network stream for research, moderation, or monitoring.
Those jobs need different tools. A profile API should not quietly promise keyword discovery. A Chrome extension is not a production backend. A firehose collector is overkill when an application only needs one post.
This split also protects existing ScrapeCreators pages. The Bluesky API product page explains the three ScrapeCreators endpoints and should keep owning direct API intent. This article owns the separate buyer question around bluesky scraper and best bluesky scraper. It compares operating models instead of replacing the product page or the broader social media scraping API comparison.
That separation matches current search evidence. In a live US check on September 22, ScrapeCreators did not appear in the first ten results for bluesky scraper or best bluesky scraper. The product page ranked fourth for bluesky scraper api and tenth for bluesky data scraper, so its title and product framing do not need to change. The buyer SERP mixed extensions, hosted scrapers, official API resources, no-code tools, and tutorials. A job-based list is the cleaner answer.
The seven best Bluesky scrapers
1. ScrapeCreators for known public profiles and posts
ScrapeCreators’ Bluesky API has three focused endpoints:
- Profile accepts a handle and returns public profile fields such as DID, counts, description, avatar, and verification data.
- User Posts accepts a handle or user ID and returns a page of author-feed records plus a cursor.
- Post accepts a public post URL and returns the post plus available replies.
Choose it when your product already knows the account or post it needs. You make a GET request with one API key and receive JSON. You do not have to manage a Bluesky session, resolve a PDS, decode a stream, or run a browser.
The boundary is clear. ScrapeCreators does not currently offer Bluesky keyword search, follower-list export, direct messages, firehose access, or posting. It is a read-only shortcut for supported public profile and post data. If discovery is the main job, choose Apify or the official search endpoint. If whole-network collection is the job, use Jetstream, the firehose, or a collector built for it.
Pricing showed 100 free credits and a $47 pay-as-you-go pack with 25,000 credits. Credits do not expire. The site says most endpoints use one credit, and each live Bluesky request in my check reported credits_charged: 1. Cache hits cost zero only when the result is actually in cache.
Choose another option if the input is a keyword rather than a profile or post, or if your team wants the full AT Protocol instead of a normalized slice of it.
2. Bluesky’s public API for direct protocol access
Bluesky is unusual because a scraper is not always necessary. Its API host guide says many Bluesky Lexicon endpoints are public and do not require authentication. It recommends https://public.api.bsky.app for public web use cases because that host adds caching.
The official path is the best choice when your team is comfortable with XRPC, Lexicons, DIDs, cursors, and AT Protocol data shapes. Public endpoints cover profiles, author feeds, post threads, and search. The same ecosystem also exposes a firehose, and Bluesky points bulk-data users toward Jetstream’s network replay for a simpler filtered-history path.
Bluesky’s rate-limit page does not publish one fixed number for the public API. It describes those limits as generous and asks developers to make public web calls through the cached host. Authenticated PDS requests have separate limits, including 3,000 overall API requests per five minutes per IP on Bluesky’s hosted account infrastructure. These limits can change, so read response headers and back off on HTTP 429 rather than hard-coding a permanent assumption.
Direct access is not free operations. You still have to decide which service to call, preserve cursors, normalize records, monitor failures, and store only what your project needs. It is the right answer when control matters more than convenience.
3. Apify for search, Actor runs, and datasets
Apify’s Bluesky Scraper covers a broader input range than ScrapeCreators. Its current page documents keyword search with top or latest sorting, user feeds, filters for original posts or media, reply expansion, and authenticated direct-message collection. Results land in the Apify dataset system.
That makes Apify the better fit for scheduled discovery. A team can run an Actor, save the dataset, export rows, call it through Apify’s API, and connect the run to other Apify tooling. It is also the strongest relevant Apify competitor in the current search results. The Actor ranked third for bluesky scraper and second for best bluesky scraper in the final live US snapshot.
The public page listed pricing from $1.50 per 1,000 results. Apify’s Actor API also showed a $0.005 start event for the published pay-per-event model and $0.002 per result on the Free tier, with lower result rates on paid tiers. Treat those as separate events, not one flat request price.
The current Actor description says direct messages require authentication. Supplying credentials changes the risk and security model. Use an app password where the product supports it, restrict access to the secret, and avoid DM collection unless your application has a clear permission and retention basis.
4. Bright Data for managed record delivery
Bright Data’s Bluesky Scraper API is aimed at managed, structured record delivery. Its page lists post URLs, IDs, text, dates, author handles, replies, reposts, likes, quoted posts, embedded media, and profile details. It separates post collection from profile-URL collection.
Choose it when the job is a larger batch and your procurement or data team already uses Bright Data. The page advertised 5,000 free records per month without a credit card. Its pricing navigation showed scraper APIs from $0.75 per 1,000 records.
A record is not an API request. One profile job can return many records, and a sparse input can return fewer. Ask how failed jobs, retries, duplicates, and empty inputs are counted. Run a representative batch before turning the headline rate into a budget.
Bright Data is a poor fit if your product expects one small, synchronous profile response and nothing else. ScrapeCreators or the official API keeps that path simpler.
5. B-Social for a manual browser export
B-Social Scraper is the browser option. Its Chrome Web Store listing says it extracts posts, replies, profiles, and follower lists from Bluesky pages, with automatic pagination and exports to CSV, Excel, JSON, HTML, or raw JSON. It also advertises page monitoring, alerts, and batch URL opening.
This is the most practical lane for an analyst who wants a file from pages they can inspect. The listing says extraction and processing run locally in the browser. On September 22 it showed version 3.5.0, an update date of September 15, 203 users, a 3.1 rating from eight ratings, and in-app purchases.
The store page did not publish the paid price. Do not call it free just because installation is free. The listing also says the extension handles authentication information, so review the developer’s privacy disclosure and your organization’s extension policy before installing it.
B-Social is not a server-side API. A browser must load pages, pagination depends on what the interface exposes, and unattended production monitoring may need a different tool.
6. bsky-scraper for a self-hosted firehose collector
deepfates/bsky-scraper is a small Python project that collects posts from the Bluesky firehose and writes JSONL. Its README lists post text, creation time, author, URI, image presence, and reply information. It uses a cache for author-handle resolution.
This is a different product shape from the first five. You run a long-lived collector and receive whatever matches the stream as it happens. That is useful for research corpora, network monitoring, or your own downstream filters. It is inefficient for occasional lookups of one known profile.
GitHub reported an MIT license, 75 stars, nine forks, one open issue, and a latest push on July 4, 2026 when checked. Those numbers show current repository activity, not a service-level agreement.
The software is free. Collection is not. You own the process supervisor, replay strategy, disk growth, schema changes, identity resolution, moderation choices, deletion handling, and access controls around the resulting dataset.
7. SocialCrawl for another normalized REST option
SocialCrawl’s Bluesky page lists the same three high-level jobs as ScrapeCreators: profile, user posts, and single-post details with replies. Each endpoint costs one credit on the stated standard tier, and new accounts receive 100 free credits.
Choose it when you want a second hosted API to evaluate or you already use SocialCrawl’s normalized schema across its platform catalog. The page says cache hits cost zero and hard failures are refunded. It also makes the read-only boundary explicit.
The Bluesky page did not show a paid credit-pack price, so I cannot compare its paid request cost with ScrapeCreators from that source. Ask for the current paid rate and test your exact fixtures before making a purchase decision.
ScrapeCreators is my recommendation when you want the documented endpoints, pay-as-you-go pricing on the public site, and direct access to the founder. SocialCrawl is still worth a fixture check if normalized multi-platform output is your priority.
A live Bluesky API check
I tested ScrapeCreators on September 22, 2026 with three public handles: espn.com, bsky.app, and washingtonpost.com. For each handle, I called Profile and User Posts. All six requests returned HTTP 200 and charged one credit. Response times ranged from 1.49 to 2.06 seconds.
Each first feed page returned 30 rows and a cursor. I passed the espn.com cursor into a second request. Page two returned 30 more rows, another cursor, no overlapping post URIs, HTTP 200, and credits_charged: 1 in 1.31 seconds. A post-detail request for the first ESPN row returned HTTP 200 in 1.48 seconds with the post and six reply rows.
A normal author-feed request looks like this:
curl --get 'https://api.scrapecreators.com/v1/bluesky/user/posts' \
--header "x-api-key: $SCRAPE_CREATORS_API_KEY" \
--data-urlencode 'handle=espn.com'
A shortened response shape from that live call looked like this:
{
"success": true,
"credits_charged": 1,
"feed": [
{
"post": {
"uri": "at://did:plc:x7d6j54pm22ufehkes6jo4jf/app.bsky.feed.post/3muznlkmspz2x",
"author": {
"handle": "espn.com",
"displayName": "ESPN"
},
"record": {
"createdAt": "2026-09-08T18:27:24.700Z"
},
"replyCount": 8,
"repostCount": 11,
"likeCount": 85,
"quoteCount": 6
}
}
],
"cursor": "2025-09-25T17:06:11.912Z"
}
I removed the post text and extra public fields from this example, but kept the returned URI, author, timestamp, counts, and cursor. Counts are a dated snapshot and can change after the request.
I also called Bluesky’s public profile and author-feed endpoints directly without an auth header. Both returned HTTP 200. The profile call completed in 0.22 seconds. The one-row author-feed call took 60.27 seconds in this single check. That is an observation from two requests, not a reliability comparison.
These fixtures prove that the named public inputs, three endpoint shapes, and cursor path worked on the stated date. They do not prove universal uptime, complete history, stable engagement counts, or identical field availability for every account.
What builders actually ask for
I searched YouTube in a US context for bluesky scraper and three close variants. The four searches returned 78 rows across 57 unique videos. I read five available English transcripts totaling 1,817 transcript segments. They covered an Apify post scraper, a browser export extension, the official API, bot automation, and public-data concerns.
I also reviewed 24 unique top or newest YouTube comments. Those rows declared ten public replies, and I fetched and read eight reply rows. The recurring questions and disagreements changed this guide:
- Is the input a known account, a keyword, or every public event?
- Can a non-developer export rows without setting up an API client?
- Does the workflow need search, replies, media, or follower lists?
- Is public data automatically fair to retain forever or reuse for model training?
- Who handles deleted records, identity changes, and sensitive research data?
- Can a simple API replace the infrastructure needed for a firehose consumer?
That is why the comparison starts with input shape and upkeep. It also keeps the privacy section concrete instead of treating public as permission for every downstream use.
Reddit added a useful warning. Four searches returned 28 post rows across 26 unique posts and ten comment-search rows across nine unique comments. I opened three relevant threads and read 11 top-level comments plus six nested replies. People asked for whole-account media downloads, debated whether public firehose access changes the consent question, and pointed out that later deletion does not remove copies already stored elsewhere.
LinkedIn and TikTok helped with use cases, but both were noisy. Four LinkedIn searches returned 40 rows across 22 unique posts. The useful rows described Jetstream monitoring, research, and cross-platform alerting. Four TikTok searches returned 119 rows across 105 unique videos, but most were generic scraper promotion or false matches involving a literal blue sky or skyscraper. Two exact Bluesky API demos were useful: one showed a direct API request, and another framed the official API as a free alternative to X’s paid API.
I treated all of that as qualitative audience research. Social engagement does not prove search demand, ranking strength, product reliability, or legal permission.
Choose by data path, not one price
Start with the request your application will actually make:
| Need | Best starting lane | Why |
|---|---|---|
| Fetch a known public profile or author feed in an app | ScrapeCreators | Focused request and immediate JSON response |
| Use official public records or add write actions later | Bluesky public API | Direct protocol access and full control |
| Search keywords and schedule collection jobs | Apify | Search inputs, Actor runs, datasets, and exports |
| Deliver larger managed batches of profiles or posts | Bright Data | Record-oriented managed scraper product |
| Export visible pages to a spreadsheet | B-Social | Browser workflow and several file formats |
| Collect a continuous whole-network stream | bsky-scraper or Jetstream | Long-running stream instead of one-off lookups |
| Evaluate another normalized multi-platform REST API | SocialCrawl | Similar profile and post request model |
Then write a real fixture set. A fair test might include 20 handles, five post URLs with reply threads, two cursor pages per active author, one deleted post, one changed handle, and one account with sparse data. Measure useful records, missing fields, duplicates, latency, retries, and operator time separately.
If you are comparing Apify and ScrapeCreators, the bigger difference is not the Bluesky field list. It is Actor jobs and datasets versus focused API responses. The Apify vs. ScrapeCreators guide goes deeper on that operating-model choice.
Sign up for 100 free credits if your fixtures start with known Bluesky profiles or post URLs. Use the official public API first if you need protocol-level control or write operations.
Limits to plan for
Public does not mean complete. A feed page is not guaranteed to contain every historical post. Deleted records can disappear from the live source while old copies remain in someone else’s dataset. Counts can change. Embeds, media, labels, and replies can be absent or shaped differently.
Bluesky identity also needs care. A handle can change, while a DID is designed to be the stable account identifier. Store both when the source returns them. Keep the original AT URI for a post and record the fetch time next to any engagement snapshot.
A firehose is not a license to retain everything forever. Define your purpose, retention period, deletion policy, access controls, and process for sensitive or regulated data before collection starts. Follow Bluesky’s terms and the laws that apply to your users and project. Get legal advice for consequential use cases rather than borrowing a blog’s interpretation.
Credentials change the risk. Public profile and post reads do not need your Bluesky password in ScrapeCreators. Direct messages and write actions are different. If a tool needs an app password or session, scope it narrowly, keep it out of source control, rotate it, and document who can access the collected data.
Finally, do not accept every HTTP 200 as useful. Assert required fields, alert on empty pages that should contain records, deduplicate by URI or CID, preserve cursors, and log enough response metadata to diagnose schema drift.
Sources checked
Capabilities, prices, limits, and repository details were verified on September 22, 2026 against the ScrapeCreators Bluesky docs, ScrapeCreators pricing, Bluesky API host guide, Bluesky rate limits, Apify Actor page, Bright Data Bluesky scraper, B-Social Chrome listing, deepfates/bsky-scraper, and SocialCrawl’s Bluesky page.
Search demand came from Ahrefs US on September 22. Its final isolated exact row for bluesky scraper showed volume 200, with KD, traffic potential, and CPC all unreported. Ahrefs returned no exact row for best bluesky scraper, bluesky scraper api, or bluesky data scraper, and its SERP endpoint returned no stored ranking rows for the four queries. The live US results and GSC evidence were checked separately rather than treated as the same snapshot.

