Know the account
Retrieve handles, stable account IDs, bios, images, and source follower counts.
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
Retrieve handles, stable account IDs, bios, images, and source follower counts.
Read public posts and reposts with text, media metadata, engagement counts, and a next-page cursor.
Retrieve one post and its nested replies, with clear signals when replies are limited or unavailable.
YOUR FIRST REQUEST
Start with a local worker and a service key. The examples use the current Bluesky contract.
/v1/bluesky/profileRetrieve 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/v1/bluesky/user/postsRetrieve 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/v1/bluesky/postRetrieve 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# 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"const baseUrl = "http://localhost:3013";
const url = new URL('/v1/bluesky/profile', baseUrl);
url.searchParams.set("handle", "example.test");
const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': process.env.BLUESKY_API_KEY
}
});
const data = await response.json();
console.log(data);/v1/bluesky/profileJSON responseExamples target local workers. Use the origin and credentials supplied for your service.
TAKE IT SOMEWHERE USEFUL
Connect public account details to creator research and discovery workflows.
Use cursor pagination to read an account’s public feed in manageable pages.
Keep posts and reply relationships together for your own analysis tools.
Profile, user posts, and single post. All three use the same dedicated service-key header; each request returns its own coverage and accounting.
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.
Replies are bounded to six levels and 100 visited nodes. Restricted or unavailable data is omitted with explicit partial coverage.
Use the private service origin and Bluesky key supplied by your operator. The documentation includes request parameters, response examples and local setup.
No. ScrapeAtlas is independent and is not affiliated with Bluesky. This endpoint retrieves supported publicly available data.