100 free credits. No credit card required.Start building
Logo
Bluesky logoBluesky API

Scrape Bluesky data with one API

Fetch public Bluesky data as structured JSON with one SocialCrawl API key. Same Post, Comment, and Author schema as every other platform. Reads are priced in credits.

Bluesky logo
/v1/bluesky

3 active endpoints

  • GET /v1/bluesky/profile
  • GET /v1/bluesky/user/posts
  • GET /v1/bluesky/post

What Bluesky endpoints does SocialCrawl ship?

3 live read endpoints for public Bluesky data. Profiles, user posts, and single posts. Data API only.

Profile

1 credit
/v1/bluesky/profile

Get a Bluesky profile.

handle

User posts

1 credit
/v1/bluesky/user/posts

List a Bluesky user's posts.

handle, user_id

Post

1 credit
/v1/bluesky/post

Get a Bluesky post.

url

Bluesky API3 endpoints supported
View docs

Returns a Bluesky account's public profile: display name, description, avatar, follower, following and post counts, join date, and verified status.

Use it when you have a handle such as espn.com and want the account snapshot before pulling its posts.

1 credit

GET/v1/bluesky/profile?handle=espn.com

handle · Bluesky handle (e.g. `espn.com`).

$ curl https://www.socialcrawl.dev/v1/bluesky/profile?handle=espn.com \
    -H "x-api-key: sc_YOUR_API_KEY"
idle
// Running this live needs your own API key. Hit "Try it" to see an example response

How the Bluesky API works

Bluesky is a normal SocialCrawl social surface. You call GET /v1/bluesky/… with an API key, spend credits on live misses, and get a single JSON envelope back. No second SDK.

Authenticate every call

Send your key in the x-api-key header. The same key works across the SocialCrawl catalog.

GET with query params

Routes are GET. Pass handles, urls, queries, and cursors as query strings. We validate formats before charging.

Pay in credits, not seats

Live misses debit the route tier. Cache hits cost 0. Empty or hard failures refund.

Read one JSON envelope

Every response is the same shape: success, data, credits_used, credits_remaining, request_id, cached.

The usual integration chain

Most products resolve an account, page content, then deepen only the posts that matter.

01Account
GET /v1/bluesky/profile

Author-shaped profile

Resolve the handle or id once.

02Feed
GET /v1/bluesky/user/posts

PostList of recent public items

Page with cursor or after when the route supports it.

03Item
GET /v1/bluesky/post

Full Post for one URL or id

List rows are not enough when you need the full record.

04Comments
GET /v1/bluesky/post

CommentList when the platform exposes it

Expand only when a thread matters.

request
GET /v1/bluesky/profile
  ?handle=espn.com
Host: www.socialcrawl.dev
x-api-key: sc_your_api_key_here
response envelope
{
  "success": true,
  "data": { "/* Author | Post | PostList | CommentList | … */": true },
  "credits_used": 1,
  "credits_remaining": 9999,
  "request_id": "req_…",
  "cached": false
}

What lands in data

Field names match the rest of SocialCrawl where archetypes align.

Authorprofile

id, username, display_name, avatar_url, bio, followers, url, ext

PostList / Postuser/posts

items[].post with id, url, content, engagement, author, published_at, ext

CommentListpost

items[] with author, content.text, engagement, published_at when comments ship

Search / Mediapost

search hits, media metadata, or transcripts depending on route

Inside the gateway

Same request lifecycle as every other /v1 platform endpoint.

  1. 01

    Edge receives the call

    Next.js catch-all routes into the Hono social API. We mint a request_id, authenticate the key, then enforce rate limit and concurrency.

  2. 02

    Validate, then debit

    Registry lookup finds the route. Required params run first. Invalid input returns 400 with no charge. Valid calls debit before upstream work.

  3. 03

    Cache or fetch

    A deterministic cache key is built from platform + resource + params. Hit: credits_used = 0. Miss: upstream fetch with retries and circuit breaker.

  4. 04

    Normalize and return

    Upstream JSON is mapped to Author / Post / PostList / CommentList (or route archetype), validated, wrapped in the success envelope, and logged for billing audit.

Billing rules that matter in production

  • Standard live miss: tier cost (often 1 credit)
  • Advanced reads: typically 5 credits
  • Premium reads: typically 10 credits
  • Metered routes: min floor when documented
  • Cache hit: 0 credits
  • Empty / hard fail: auto-refund
  • Bad params: 400, never charged
  • No credits: 402, never charged
  • Disabled routes: 503, never charged

How we get the data

Bluesky is public-read data on SocialCrawl. We normalize it into the shared schema so your code does not learn a second OAuth flow.

What Bluesky is for this API

Public Bluesky surfaces exposed by the registry. Read-only for research, monitoring, and product jobs.

How SocialCrawl reaches it

Social-read upstreams behind one gateway. Prism composites combine legs when a fat route is registered.

What leaves our edge

Unified JSON envelope: success, data, credits_used, request_id, cached. Shared Author / Post / Comment leaves where archetypes align.

What we do not ship live

No write endpoints and no private inbox. Disabled routes stay out of the active count. Prefer registry docs for the live inventory.

field map sketch
public profile / channelauthor.*profile identity and counters
public post / mediapost.* / items[].postpost content and engagement
list / search pageitems[] or hitscomments or search hits when present

What this API is used for

The jobs this API is most often used for.

3active Bluesky endpoints in the registry
1 / 5 / 10credit ladder across standard, advanced, premium

Bluesky monitoring and content intelligence

Callers concentrate on profile, content lists, search, and deepen paths on Bluesky. Structured Bluesky JSON on the shared schema with one SocialCrawl API key.

Detail reads are typically a few seconds on live miss. Search and fat composites are slower paths.

What people build with the Bluesky API

The jobs Bluesky data is most often used for. Each one is a full recipe with the endpoint chain and pricing.

Use case examples

Common ways teams put this data to work, and the stack each one tends to run.

Monitoring jobs

Python, cron, Slack bots

Poll profiles and feeds on Bluesky. Alert when engagement velocity jumps.

Research and VoC

Node, notebooks, BI loads

Search and expand posts for brand, product, and competitor language on Bluesky.

Backend product jobs

Go, workers, Explorer

Wire resolve to list to detail into pipelines. Cache hits keep recurring runs cheap.

Call it in two lines

Live misses spend credits by tier. Cache hits are free. Empty or hard failures refund.

curl "https://www.socialcrawl.dev/v1/bluesky/profile?handle=espn.com" \
  -H "x-api-key: sc_your_api_key_here"
curl "https://www.socialcrawl.dev/v1/bluesky/user/posts?handle=example" \
  -H "x-api-key: sc_your_api_key_here"
Bluesky logoBluesky on SocialCrawl

Same key as the rest of the catalog

Endpoints

What data does the Bluesky API return?

Every endpoint returns structured JSON in a unified envelope. Computed fields such as engagement rate and content category are included only where the endpoint supports them and the required source inputs are present.

Comparison

How does SocialCrawl compare to AT Protocol (direct) for Bluesky data?

Same Bluesky data, two very different paths. Auth, rate limits, schema, and cost, side by side.

Authentication

SocialCrawl
One x-api-key header
AT Protocol (direct)
Session-based auth with app passwords or OAuth

Setup / approval

SocialCrawl
Sign up and call immediately
AT Protocol (direct)
No approval queue, but you build an XRPC client with lexicons and DIDs

Rate limits

SocialCrawl
Credit-based, pay per request
AT Protocol (direct)
Per-account and per-IP limits you manage yourself

Response schema

SocialCrawl
Unified JSON shared across 64 platforms
AT Protocol (direct)
AT Protocol records with lexicon-specific shapes

Pricing

SocialCrawl
1 credit per request; 100 free credits on signup
AT Protocol (direct)
Free: you pay in engineering and infrastructure time

Data coverage

SocialCrawl
Profiles, post feeds, and reply threads: read-only
AT Protocol (direct)
Full network access including posting, firehose streams, and custom feeds

Maintenance

SocialCrawl
Schema stays stable when Bluesky changes internals
AT Protocol (direct)
You track lexicon and protocol evolution
FAQ

Have a question? We got answers

Find answers to frequently asked questions about SocialCrawl's API, pricing, and capabilities.

Contact us
How do I scrape Bluesky data with an API?
SocialCrawl exposes 3 Bluesky endpoints: profile, user posts, and post details with threaded replies. Send a GET request with your x-api-key and a handle or post URL; you get normalized JSON back with no AT Protocol session, no XRPC client, and no app password.
Is there a Bluesky data API?
Yes. SocialCrawl is a Bluesky data API that returns profiles, user post feeds, and posts with threaded replies as unified JSON from a single GET. Bluesky runs on the open AT Protocol, so the official route is fully capable: it lets you post, stream the firehose, and run custom feeds, but it means building an XRPC client with lexicons, DIDs, and session auth. When you only need to read public data, SocialCrawl skips that with one x-api-key across 3 REST endpoints, and 100 free credits to start.
Do I need an AT Protocol client or Bluesky app password?
No. The official Bluesky API speaks XRPC with lexicons, DIDs, and session-based auth. SocialCrawl wraps all of that behind plain REST: one x-api-key header, standard GET requests, and the same response envelope used across all 64 platforms we support.
What Bluesky endpoints does SocialCrawl offer?
3 endpoints: Profile, User Posts, and Post. All return the unified SocialCrawl schema.
How is this different from the Bluesky firehose?
The Bluesky firehose streams every event on the network. You filter, decode CBOR, and maintain consumers yourself. SocialCrawl is request-based: ask for one profile, feed, or post and get clean JSON in a single GET. For monitoring specific accounts or posts, request-based is far less infrastructure.
How much does the Bluesky API cost?
Each Bluesky request costs 1 credit on the standard tier. New accounts get 100 free credits with no credit card required, enough to test all 3 endpoints end-to-end before you pay anything.
Is scraping Bluesky data legal?
SocialCrawl reads only publicly visible Bluesky data: public profiles, public posts, and public replies. You are responsible for complying with Bluesky's Terms of Service and any data protection regulations that apply to your use case, especially for research datasets. SocialCrawl operates under a documented GDPR legitimate-interest framework: public, logged-out data only, no credential use, short-lived caches (2 to 30 minutes) with no persistent store, and a public opt-out channel for anyone whose public info appears in responses. Full details: socialcrawl.dev/legal/public-data-notice.
What is the best Bluesky scraper API?
For reading public Bluesky data without building an AT Protocol client, SocialCrawl is the simplest option: 3 REST endpoints for profiles, user post feeds, and posts with threaded replies, each costing 1 credit. New accounts get 100 free credits with no credit card, no XRPC, lexicons, DIDs, or app passwords.
Bluesky scraping API vs the official Bluesky API: what's the difference?
With SocialCrawl there is no app review or approval queue. Sign up and call Bluesky endpoints immediately with a single x-api-key. Responses share one unified schema with every other SocialCrawl platform, and credit-based pricing replaces per-platform quotas. Official APIs are still the right choice for posting and other write actions: SocialCrawl is read-only data.

Ask AI about SocialCrawl

Read the Bluesky API reference in the docs

🤖 AI agent or LLM? Read this page as markdown