BLUESKY API

Public voices.
Connected data.

Bring Bluesky profiles, posts, and conversations into your product. Read public account details, follow a paginated feed, and keep replies connected to the post.

Live private service · production acceptance passed

WHAT’S ON THE MAP

The data you need.
The details that matter.

View full coverage
01

Know the account

Retrieve handles, stable account IDs, bios, images, and source follower counts.

02

Follow the feed

Read public posts and reposts with text, media metadata, engagement counts, and a next-page cursor.

03

Keep the conversation

Retrieve one post and its nested replies, with clear signals when replies are limited or unavailable.

YOUR FIRST REQUEST

Get to the
good data.

Start with a local worker and a service key. The examples use the current Bluesky contract.

GET/v1/bluesky/profile

Get a Bluesky profile

Retrieve a public Bluesky profile by handle, including DID, display name, bio, avatar, banner, follower/following/post counts and available source extensions.

Request and response fields
GET/v1/bluesky/user/posts

Get a Bluesky user’s posts

Retrieve one author-feed page of up to 30 posts and reposts, including replies. Provide exactly one of handle or user_id. Pass the opaque response cursor unchanged to retrieve the next page. Each feed item is the complete source post view; feed wrappers such as repost reasons are not included.

Request and response fields
GET/v1/bluesky/post

Get a Bluesky post

Retrieve a public post and a bounded nested reply tree by HTTPS bsky.app URL. The profile segment accepts a handle or DID. Handles are resolved through the public profile API. Up to six reply levels and 100 visited reply nodes are included; ancestors are not fetched.

Request and response fields
QUICKSTART / LOCAL EXAMPLES
# Local worker · use your own service key
export BASE_URL="http://localhost:3013"

curl --get "$BASE_URL/v1/bluesky/profile" \
  -H "x-api-key: $BLUESKY_API_KEY" \
  --data-urlencode "handle=example.test"
GET/v1/bluesky/profileJSON response

Examples target local workers. Use the origin and credentials supplied for your service.

TAKE IT SOMEWHERE USEFUL

Made for what
you’re making.

Enrich public profiles

Connect public account details to creator research and discovery workflows.

Track published content

Use cursor pagination to read an account’s public feed in manageable pages.

Research conversations

Keep posts and reply relationships together for your own analysis tools.

BEFORE YOU BUILD

A few useful
answers.

Read the full reference
Which endpoints are available?

Profile, user posts, and single post. All three use the same dedicated service-key header; each request returns its own coverage and accounting.

Can I paginate through posts?

Yes. Supply a handle or DID and pass the returned cursor unchanged for the next page. Each request reads up to 30 source feed entries.

Are all replies included?

Replies are bounded to six levels and 100 visited nodes. Restricted or unavailable data is omitted with explicit partial coverage.

How do I connect?

Use the private service origin and Bluesky key supplied by your operator. The documentation includes request parameters, response examples and local setup.

Is this an official Bluesky API?

No. ScrapeAtlas is independent and is not affiliated with Bluesky. This endpoint retrieves supported publicly available data.