Bluesky Starter Packs Scraper: Members, Posts & Profiles avatar

Bluesky Starter Packs Scraper: Members, Posts & Profiles

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Bluesky Starter Packs Scraper: Members, Posts & Profiles

Bluesky Starter Packs Scraper: Members, Posts & Profiles

Export Bluesky starter packs and members, public author posts, post threads and profiles. Find accounts by keyword.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Categories

Features

Limited permissions

Share

Export public Bluesky starter packs with every member account, plus public author posts, post threads and profiles, and find accounts by keyword. One clean dataset row per pack, member, profile or post, ready for JSON, CSV or Excel. No Bluesky login or app password is needed.

Typical uses

  • Audience and community research: list who is in the starter packs of a topic, conference or industry, with bios and follower counts.
  • Creator and influencer discovery: pull every pack a creator has published, then the members of each, to build an outreach or follow list.
  • Brand and account monitoring: export a set of profiles or an account's recent posts on a schedule and track counts over time.
  • Conversation analysis: collect a post and its public replies (up to six levels deep) with likes, reposts, quotes, hashtags and mentions.
  • Lead and expert lists: search accounts by keyword (for example astronomy) and export handles, display names and descriptions.

Quick start

Run with {} (or the Console prefill) to collect one example starter pack, the Bluesky team's "Apple Experts" pack: one pack row plus up to 20 member rows, 21 rows in total. With {} the status message says it was the example. A target list left empty on purpose ({"starterPackUrls": []}) stops at once with a message asking for targets.

{"mode": "starter-packs", "starterPackUrls": ["https://bsky.app/starter-pack/bsky.app/3mv3qhvnmkd2l"], "maxResults": 21}

Other modes, one per run (replace the example handles and links with your own):

{"mode": "starter-packs", "creatorHandles": ["bsky.app"], "maxResults": 100}
{"mode": "author-posts", "handles": ["bsky.app"], "since": "2026-10-01T00:00:00Z", "includeReposts": false, "maxResults": 50}
{"mode": "post-threads", "postUrls": ["https://bsky.app/profile/bsky.app/post/<post-id>"], "maxResults": 200}
{"mode": "profiles", "handles": ["bsky.app", "@atproto.com"], "maxResults": 10}
{"mode": "actor-search", "query": "astronomy", "maxResults": 20}

Input

FieldTypeDefaultWhat it does
modestringfrom the targetsstarter-packs, author-posts, post-threads, profiles or actor-search. Modes run separately. Left out, the targets you give choose it (pack links or creators, post links, or a query); handles need profiles or author-posts. Targets that the chosen mode does not read stop the run with a message.
maxResultsinteger21Total rows across all targets (1–10,000). Pack rows and member rows both count.
starterPackUrlsarrayexample packFull bsky.app/starter-pack/... links or starter pack at-uris. With no targets at all, the example pack is used.
creatorHandlesarrayemptyCollect every starter pack published by these creators.
includeMembersbooleantrueAdd one row per pack member. Set false for pack metadata only.
handlesarrayemptyHandles, @handles, DIDs or full bsky.app/profile/... links, for author-posts and profiles.
postUrlsarrayemptyFull bsky.app/profile/.../post/... links or post at-uris, for post-threads.
querystringemptyAccount search keyword, for actor-search.
sincestringemptyauthor-posts only: posts created at or after this time (ISO with Z or an offset, e.g. 2026-10-01T00:00:00Z).
untilstringemptyauthor-posts only: posts created before this time (exclusive).
includeRepliesbooleantrueauthor-posts only: include the author's replies.
includeRepostsbooleantrueauthor-posts only: include reposts (they carry repostedBy).

Short go.bsky.app links are not resolved; paste the full bsky.app link instead.

What it returns

Every row has type, uri and url. type is starterPack, starterPackMember, profile or post.

  • Packs: name, description, createdAt, creator, memberCount, listUri, joinedAllTimeCount, joinedWeekCount and membersIncluded (always false, because members are delivered as their own rows).
  • Members and profiles: handle, did, displayName, description, avatar (URL), createdAt, followersCount, followsCount, postsCount. Member rows also carry starterPackUri, so you can group them by pack.
  • Posts: text, author, createdAt, indexedAt, langs, replyCount, repostCount, likeCount, quoteCount, hashtags, mentions (DIDs), reply (parent and root references), embeds (links, image URLs and alt text; images are not downloaded) and repostedBy on reposts.

Optional fields can be null when Bluesky does not supply them.

Output example

One starter pack row from the default run (values recorded from the example pack; counts change over time):

{"type":"starterPack","uri":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.graph.starterpack/3mv3qhvnmkd2l","url":"https://bsky.app/starter-pack/did:plc:z72i7hdynmk6r22z27h6tvur/3mv3qhvnmkd2l","name":"Apple Experts","description":"Bloggers, pomologists, orchardists, cider makers, and more!","createdAt":"2026-09-09T14:24:24.080Z","creator":{"type":"profile","uri":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.actor.profile/self","url":"https://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur","did":"did:plc:z72i7hdynmk6r22z27h6tvur","handle":"bsky.app"},"memberCount":20,"joinedAllTimeCount":0,"joinedWeekCount":0,"listUri":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.graph.list/3mv3qhu4wq22k","membersIncluded":false}

Member rows follow, one per account, with type: "starterPackMember" and the pack's at-uri in starterPackUri.

Pricing

Pay per result:

  • $0.005 per actor start (one start event per GB of memory; the default 512 MB run is one start event).
  • $0.0005 per delivered dataset row (pack, member, profile or post).

Worked costs: the default 21-row run is about $0.016; 1,000 rows (for example a few large packs with all members) about $0.505. Only delivered rows are charged, and a run stops cleanly at your maximum charge per run.

Scheduling

There is no built-in "new only" mode. To watch a pack's membership or an account's posts, schedule the same input daily or weekly and compare runs on uri (posts and profiles) or uri + starterPackUri (members). For author posts, set since to the previous run's time to keep each run small.

FAQ

Do I need a Bluesky account? No. The Actor reads public content only and needs no login or app password.

How fresh is the data? Each run reads Bluesky live at run time; nothing is cached between runs.

Will I always get every member of a pack? Up to maxResults. A capped run returns the first members only; memberCount on the pack row is Bluesky's total when it supplies one. The same account in two packs is delivered once per pack; duplicate posts are delivered once.

Can I search posts by keyword? No. Bluesky requires login for post search, so it is not offered. Account search by keyword (actor-search) is supported.

What happens with a bad link or an unavailable account? The run keeps the rows it collected and names the failed targets in its status message. If no rows were collected because the targets were unavailable, the run fails with that message; a target that is simply empty ends as a successful empty run.

Which export formats are available? Everything Apify datasets support: JSON, CSV, Excel, XML, RSS or the Apify API.

Limits

  • Public content only: no DMs, private or deleted posts, and no follower or following list exports.
  • Threads include the selected post and its available replies to depth six; missing or blocked replies are left out.
  • Time filters apply to the post's creation date, including reposted posts.
  • Very large requests are bounded by maxResults and the run timeout (default 300 seconds); use smaller inputs for frequent monitoring.

Support

For support, open an issue on the Actor page and include the run ID.