Bluesky Profile Lookup: Followers, Bio and Labels
Pricing
from $0.75 / 1,000 profile returneds
Bluesky Profile Lookup: Followers, Bio and Labels
Look up Bluesky profiles by handle or DID: followers, follows, posts count, bio, created date, labels and verification status. No key, no login, one row per profile.
Pricing
from $0.75 / 1,000 profile returneds
Rating
0.0
(0)
Developer
Adriana Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Bluesky profile lookup by handle. Paste handles or DIDs and get one row per account: followers, follows, posts count, bio, created date, labels and verification status. No key, no login, no proxy.
Rows come from Bluesky's public AT Protocol profile endpoint at request time, so the counts are the live numbers, not a stale snapshot.
Who it's for
- Influencer and creator vetting teams checking follower counts and account age before outreach.
- Brand and trust-and-safety analysts who need labels, verification status and created date per account.
- Agents and n8n/Make/Clay flows that enrich a list of Bluesky handles with structured profile fields.
What you get
One dataset row per profile: handle, did, displayName, description, followersCount, followsCount, postsCount, createdAt, indexedAt, labels (a list of label values; an empty list means none), verifiedStatus, trustedVerifierStatus, isLabeler, list, feed and starter-pack counts, pinnedPostUri, avatarUrl, bannerUrl, profileUrl and sourceUrl. Values Bluesky does not return are null, never 0 or an empty string. query and scrapedAt are on every row.
Handles can be pasted as bsky.app, @bsky.app, a bsky.app/profile/... link or a did:plc: id. An account that does not exist (or is deactivated or taken down) comes back as "found": false (NOT_FOUND) and is never charged.
How to use
- In the Apify Console. Open the actor page and click Start — the
handlesfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~bluesky-profile-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"handles":["bsky.app","jay.bsky.team","did:plc:z72i7hdynmk6r22z27h6tvur"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"handles": ["bsky.app","jay.bsky.team","did:plc:z72i7hdynmk6r22z27h6tvur"]}
One per line: a handle (bsky.app), @handle, a bsky.app/profile URL, or a did:plc: id. Accepted formats: bsky.app, @jay.bsky.team, https://bsky.app/profile/bsky.app, did:plc:z72i7hdynmk6r22z27h6tvur.
Output
One row per item, for example:
| query | found | status | handle | did | displayName | description | followersCount | followsCount | postsCount | createdAt | indexedAt | labels | verifiedStatus | trustedVerifierStatus | isLabeler | listsCount | feedGensCount | starterPacksCount | pinnedPostUri | avatarUrl | bannerUrl | profileUrl | sourceUrl | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| bsky.app | true | OK | <pinned post (at:// uri)> | 1970-01-01T00:00:00.000Z |
Example runs
Three inputs that need no credentials of any kind and return rows as they stand. Paste one into the Input tab and press Start.
1. One account by handle
{"handles": ["bsky.app"]}
2. Mixed formats in one run (handle, link, DID)
{"handles": ["@jay.bsky.team", "https://bsky.app/profile/bsky.app", "did:plc:z72i7hdynmk6r22z27h6tvur"]}
3. Only found accounts, a few columns
{"handles": ["bsky.app", "jay.bsky.team"],"onlyFound": true,"columns": ["handle", "followersCount", "postsCount", "createdAt"]}
Pricing
Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed
per item only when data is actually found and returned — see
.actor/pay_per_event.json for exact prices. A miss is never charged.
Charged once per profile returned. An account that does not exist, a bad handle, or a rate-limited request is never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~bluesky-profile-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"handles":["bsky.app","jay.bsky.team","did:plc:z72i7hdynmk6r22z27h6tvur"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~bluesky-profile-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"handles":["bsky.app","jay.bsky.team","did:plc:z72i7hdynmk6r22z27h6tvur"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~bluesky-profile-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"handles":["{{Bluesky profile}}"]}, mapping the row's Bluesky profile into the handles array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "bluesky profile lookup by handle" — the agent will find and run this actor.