Social media
Bluesky Starter Pack Scraper
Export full member lists from any Bluesky Starter Pack via the AT Protocol API — pack metadata and member profiles with follower counts — to JSON or CSV. No login needed; we page through every member so none are missed.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Bluesky Starter Packs are curated community lists that drove 43% of all follows during Bluesky's 2024 growth surge (EurekAlert, 2024). This Bluesky starter pack scraper reaches the AT Protocol AppView API (https://public.api.bsky.app/xrpc/) to export every member of any starter pack — by URI or by creator handle. We do the heavy lifting against three chained endpoints; you get one clean denormalized dataset.
Target endpoints:
What we handle for you
- Two collection modes — scrape a single pack by URI/URL, or bulk-export every pack owned by a creator handle up to 100 packs per run.
- Denormalized output — every row carries pack metadata and the member profile in one flat record. No joins needed when you drop it into a spreadsheet or CRM.
- Bluesky web URLs accepted — paste
https://bsky.app/starter-pack/handle/rkeydirectly; we normalize it to AT URI form. - Follower counts on every row —
member_followers_count,member_following_count, andmember_posts_countare denormalized onto each member row. - Configurable member cap — 1–5,000 members per pack; keep test runs cheap.
- PPE pricing — you pay only for rows emitted, not for idle compute.
Use cases
- B2B growth marketing — identify niche audiences (e.g. "AI researchers on Bluesky") and build targeted outreach lists from curated community packs.
- Bluesky audience research — map which accounts are recommended by influential pack curators in your industry before you invest in the platform.
- Bluesky followers list export — enumerate the full member graph of a peer group and compare follower counts, post activity, and engagement ratios.
- Academic research — map community topology and influencer networks; starter packs are the AT Protocol's primary community-formation mechanism.
- Competitive intelligence — track which handles appear across multiple packs in your niche.
- Journalism and OSINT — document community formation around a topic or event.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
starterPackUri | string | no | AT URI (at://did:plc:.../app.bsky.graph.starterpack/...) or Bluesky web URL (https://bsky.app/starter-pack/handle/rkey) of the pack to scrape. Use this for single-pack mode. Mutually exclusive with Creator handle. |
creatorHandle | string | no | Bluesky handle (e.g. pfrazee.com) or DID of a starter-pack creator. The Actor lists every pack owned by that user via app.bsky.graph.getActorStarterPacks and scrapes each. Mutually exclusive with Starter pack URI. |
maxPacks | integer | no | Maximum number of starter packs to process when using creator mode. Ignored in single-pack mode. Default 10. |
maxMembersPerPack | integer | no | Maximum number of member rows emitted per starter pack. Acts as a client-side cap; pagination stops when this limit is reached. Default 500. |
{
"starterPackUri": "at://did:plc:ragtjsm2j2vknwkz3zp4oxrd/app.bsky.graph.starterpack/3l2stmy4ote2b",
"maxPacks": 10,
"maxMembersPerPack": 500,
"proxyConfiguration": {
"useApifyProxy": false
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
pack_uripack_namepack_descriptionpack_creator_handlemember_didmember_handlemember_display_namemember_followers_countmember_following_countmember_posts_countmember_indexed_atscraped_at
{
"pack_uri": "at://did:plc:abc123/app.bsky.graph.starterpack/xyz789",
"pack_name": "AI Researchers on Bluesky",
"pack_description": "Curated list of ML/AI researchers who migrated from Twitter.",
"pack_creator_handle": "alice.bsky.social",
"member_did": "did:plc:def456",
"member_handle": "bob.bsky.social",
"member_display_name": "Bob Smith",
"member_followers_count": 1204,
"member_following_count": 380,
"member_posts_count": 841,
"member_indexed_at": "2024-11-14T09:22:01.000Z",
"scraped_at": "2026-05-16T12:00:00.000Z"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Member row emitted | $0.0020 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
FAQ
Do I need a Bluesky account to use this?
https://public.api.bsky.app/xrpc/) supports unauthenticated access. No login, no API key, no OAuth required from you — we handle authentication with the platform on our end.Can I scrape multiple packs in one run?
creatorHandle) to export every pack published by a Bluesky user, up to 100 packs per run.How do I find a pack's AT URI?
https://bsky.app/starter-pack/<handle>/<rkey>) directly into starterPackUri. We normalize it to AT URI form automatically.Why are some follower counts null?
null rather than dropping the row — so your row count stays accurate.Is this a bluesky followers list for any user?
Is scraping Bluesky starter packs compliant with the Terms of Service?
What happens if I provide both starterPackUri and creatorHandle?
Can I use this for bluesky audience research before investing in the platform?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors