How to get Bluesky profile
GET request to /v1/bluesky/profile with your input. You get clean JSON back in seconds for 1 credit per call — no OAuth, scraping or platform SDKs. Bluesky profile — handle, did, bio, counts, banner, verification{}, labels[], and associated{} (1 credit).How to get Bluesky profile (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the Bluesky Profile API
Send an authenticated GET request to /v1/bluesky/profile with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/bluesky/profile?url=https%3A%2F%2Fbsky.app%2Fprofile%2Fjay.bsky.team" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"platform": "bluesky",
"handle": "jay.bsky.team",
"url": "https://bsky.app/profile/jay.bsky.team",
"did": "did:plc:oky5czdrnfjpqslsw2a5iclo",
"name": "Jay 🦋",
"bio": "Founder & Chief Innovation Officer @ Bluesky\n\nWorking on @attie.ai\n\n🌱 🪴 🌳",
"followers": 595179,
"following": 3974,
"posts": 4110,
"avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:oky5czdrnfjpqslsw2a5iclo/bafkreihxtnc37g7jqdcgidtkknwuswtjiijcdnc6cx4imc4oq33cnsc5da",
"banner": "https://cdn.bsky.app/img/banner/plain/did:plc:oky5czdrnfjpqslsw2a5iclo/bafkreicgnmvhtmj4arcvwhueygbwvkucd3odvom3lxtfmn6wlqbh3yf7p4",
"verified": true,
"verification": {
"verifications": [
{
"issuer": "did:plc:z72i7hdynmk6r22z27h6tvur",
"issuerHandle": "bsky.app",
"issuerDisplayName": "Bluesky",
"uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.graph.verification/3lndslpegeo2f",
"isValid": true,
"createdAt": "2025-04-21T11:35:53.359Z"
}
],
"verifiedStatus": "valid",
"trustedVerifierStatus": "none"
},
"labels": [],
"associated": {
"lists": 0,
"feedgens": 0,
"starterPacks": 0,
"labeler": false,
"chat": {
"allowIncoming": "following",
"allowGroupInvites": null
},
"activitySubscription": {
"allowSubscriptions": "followers"
}
},
"createdAt": "2022-11-17T06:31:40.296Z",
"indexedAt": "2026-03-29T21:16:33.460Z"
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Bluesky profile URL, @handle, or handle, e.g. bsky.app/profile/handle. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| cache | boolean | No | Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control. Envelope includes cached + cachedAt on hits. |
| cacheMaxAge | string | No | Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL (SC cache_max_age). Envelope: cached + cachedAt. |
Frequently asked questions
What does the Bluesky Profile API do?
The Bluesky Profile API lets you fetch profile or page details and audience stats from a public Bluesky profile or page using one GET request to /v1/bluesky/profile. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Bluesky Profile API cost?
Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Bluesky API key or OAuth?
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Is the Bluesky Profile API suitable for production use?
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to get Bluesky profile?
Start free with 100 credits — no credit card required.
Get your free API key