/ writing / social

Bluesky is open — so scrape it without a login

2026-09-04 · cynix · 3 min read

Bluesky has passed 30 million users on a fully open protocol (AT Protocol), yet most store scrapers for it return thin data or trip on login walls. There's no wall to hit: the public endpoints serve profiles, posts, followers and following to anybody, with no cookies and no residential proxy.

The Bluesky Scraper wraps those endpoints into one flat schema across four modes.

// profile, posts (author feed), followers or following
{ "handles": ["bsky.app"], "dataType": "posts", "maxPostsPerHandle": 20 }

Whether you pull profiles or an author feed, the rows carry the same shape — handle, DID (the stable account ID), display name, and the engagement counts that matter:

{
  "data_type": "post",
  "handle": "bsky.app", "did": "did:plc:z72i7hdynmk6r22z27h6tvur",
  "display_name": "Bluesky",
  "text": "Thank you for giving us so much…",
  "created_at": "2026-09-02T17:27:04Z",
  "like_count": "68", "repost_count": "1", "reply_count": "1",
  "avatar": "https://cdn.bsky.app/img/avatar/plain/..."
}

Why this over the website or the API

You can't query 100 handles from the website, and the AT Protocol is cursor-paginated and fiddly. This actor does cursor pagination, rate-limit-friendly pacing, and DID resolution for you, and returns a consistent row you can load straight into a table or RAG corpus.

Use it for

Influencer / brand monitoring, competitor audience analysis, building a follower graph, feeding posts into sentiment or RAG pipelines. The DID in every row lets you join across all four modes without string-matching handles.

Try it: Bluesky Scraper on Apify — no login, no key.