# Bluesky (/docs/bluesky)
Bluesky [#bluesky]
Public Bluesky data on the AT Protocol network: an account snapshot, its feed, and any single
post together with the replies underneath it. Three endpoints, all 1 credit, no OAuth and no app
password.
Base URL: `/v1/bluesky/...`
There is no search endpoint on this platform, and no separate comments endpoint —
`/v1/bluesky/post`
returns a post together with its reply thread, or not at all. Start from a handle you already hold.
Bluesky identifies accounts two ways. The **handle** is the readable one and is usually a domain
— `espn.com`, `bsky.app` — because Bluesky lets you verify a domain as your handle. The
**`did`** is the permanent identifier, in the form `did:plc:x7d6j54pm22ufehkes6jo4jf`. A handle
can change; a `did` cannot, so store the `did` if you are tracking an account over time.
Getting started [#getting-started]
Every endpoint is a `GET` with query parameters and an `x-api-key` header.
```bash
# 1. The account
curl "https://www.socialcrawl.dev/v1/bluesky/profile?handle=espn.com" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"
# 2. What it posted
curl "https://www.socialcrawl.dev/v1/bluesky/user/posts?handle=espn.com" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"
```
`user/posts` accepts either `handle` or `user_id` (the `did`) — one of the two is required, and
sending neither is a `400` before billing.
What each endpoint gives you [#what-each-endpoint-gives-you]
`profile` returns display name, description, avatar, follower, following and post counts, join
date and verified status.
`user/posts` returns the account's feed, each post with its text, author, attachments and the
four engagement counts Bluesky publishes: replies, reposts, likes and **quotes**. Quote counts
are their own number here rather than being folded into reposts, which is a distinction most
platforms do not make.
`post` takes a post URL and returns that post **plus its reply thread** in the same call. That
is worth knowing because there is no separate comments endpoint on this platform — the replies
come back with the post or not at all.
```bash
curl "https://www.socialcrawl.dev/v1/bluesky/post?url=https://bsky.app/profile/espn.com/post/3lqdfq7fkvm2g" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"
```
Endpoints [#endpoints]
Read this before you build [#read-this-before-you-build]
**There is no search endpoint on this platform.** Keyword discovery on Bluesky is not covered
here — start from a handle you already know, or find accounts elsewhere and pivot in.
**Handles look like domains and that is correct.** Do not strip a `.com` off a Bluesky handle
the way you would strip an `@` elsewhere; the domain *is* the handle.
**Reposts and quotes are different numbers.** A repost carries no new text; a quote does. Adding
them together double-counts the amplification.
Notes [#notes]
* All endpoints use `GET` with query parameters
* Authentication via the `x-api-key` header
* Responses follow the unified SocialCrawl schema
* All three endpoints are 1 credit
* `user_id` is the AT Protocol `did`, not a numeric id