Enter a name
A handle or a profile link.
Look up any Bluesky profile by its handle.
A handle or a profile link.
Name, bio and the counts.
Read it here, or request the same profile from the API.
Look up a profile. No signup and no login.
Name, bio, picture and counts.
Read the name, bio and counts.
Check the profile behind a name before you use it.
Look someone up without signing up.
The same profile is one API request.
1curl -G "https://api.socialscrape.dev/v1/bluesky/profile" \2 -H "x-api-key: $SOCIALSCRAPE_API_KEY" \3 --data-urlencode "handle=bsky.app"1import os2import requests34params = {5 "handle": "bsky.app",6}7res = requests.get(8 "https://api.socialscrape.dev/v1/bluesky/profile",9 headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},10 params=params,11)12body = res.json()1314if body["ok"]:15 print(body["data"])16else:17 print(body["error"]["code"], body["error"]["message"])1const url = new URL("https://api.socialscrape.dev/v1/bluesky/profile");2url.search = new URLSearchParams({3 "handle": "bsky.app"4}).toString();5const res = await fetch(url, {6 headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },7});8const body = await res.json();910if (body.ok) {11 console.log(body.data);12} else {13 console.error(body.error.code, body.error.message);14}{ "ok": true, "credits_charged": 1, "credits_remaining": 4999, "cached": false, "cached_at": null, "request_id": "req_05f7500f90e3d6adce09a3e3", "data": { "object": "profile", "platform": "bluesky", "id": "did:plc:z72i7hdynmk6r22z27h6tvur", "handle": "bsky.app", "name": "Bluesky", "headline": null, "url": "https://bsky.app/profile/bsky.app", "kind": "person", "bio": "official Bluesky account (check username👆)\n\nBugs, feature requests, feedback: [email protected]", "avatar_url": "https://cdn.bsky.app/img/avatar/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreihwihm6kpd6zuwhhlro75p5qks5qtrcu55jp3gddbfjsieiv7wuka", "banner_url": "https://cdn.bsky.app/img/banner/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreichzyovokfzmymz36p5jibbjrhsur6n7hjnzxrpbt5jaydp2szvna", "verified": false, "is_private": null, "external_url": null, "links": null, "location": null, "category": null, "created_at": "2023-04-12T04:53:57.057000Z", "stats": { "followers": 35443566, "following": 32, "posts": 901, "likes": null, "views": null }, "extra": { "associated": { "activitySubscription": { "allowSubscriptions": "followers" }, "chat": { "allowIncoming": "none" }, "feedgens": 7, "labeler": false, "lists": 18, "starterPacks": 15 }, "did": "did:plc:z72i7hdynmk6r22z27h6tvur", "indexed_at": "2025-10-27T21:05:26.152Z", "pinned_post_uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l", "status": { "cid": "bafyreihkojqw7p22odgjcbzjh5sh4vrntow24sd4nvntpqnddrd5pqma44", "embed": { "$type": "app.bsky.embed.external#view", "external": { "description": "Elon Take The Wheel Livestream: Alex Gibney, Director of \"MUSK\"", "thumb": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreifbiu2m3dnnhmzq4dk6u4227p3xuq3zzqhhzvibhuojnz6unengny", "title": "e.w. niedermeyer is live on Streamplace", "uri": "https://stream.place/niedermeyer.online" } }, "expiresAt": "2026-10-20T17:00:37.680Z", "isActive": false, "labels": [], "record": { "$type": "app.bsky.actor.status", "createdAt": "2026-10-20T16:00:37.680Z", "durationMinutes": 60, "embed": { "$type": "app.bsky.embed.external", "external": { "$type": "app.bsky.embed.external#external", "description": "Elon Take The Wheel Livestream: Alex Gibney, Director of \"MUSK\"", "thumb": { "$type": "blob", "mimeType": "image/jpeg", "ref": { "$link": "bafkreifbiu2m3dnnhmzq4dk6u4227p3xuq3zzqhhzvibhuojnz6unengny" }, "size": 195438 }, "title": "e.w. niedermeyer is live on Streamplace", "uri": "https://stream.place/niedermeyer.online" } }, "status": "app.bsky.actor.status#live" }, "status": "app.bsky.actor.status#live", "uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.actor.status/self" }, "verification": { "trustedVerifierStatus": "valid", "verifications": [], "verifiedStatus": "none" } } }, "cursor": null, "has_more": null }
Type it in full, for example example.com. Only a bare name gets .bsky.social added.
No. Bluesky profiles can be read without one.
Yes. No account and no card. Each visitor gets a limited number of lookups an hour, so it stays free for everyone.
Send GET /v1/bluesky/profile with your key in the x-api-key header. A request costs 1 credit. A repeat of something fetched recently costs 0 credits, and failed requests are free. See the reference.