DEV Community

Алексей Спинов
Алексей Спинов

Posted on

How to Scrape Bluesky with the AT Protocol — Free, No API Key

Bluesky is the fastest-growing social network — from 10M to 41M users in one year (+302%). And its AT Protocol makes it the easiest platform to build data tools for.

Why Bluesky for Developers?

  1. Fully public API at public.api.bsky.app
  2. No API key needed for reading profiles and feeds
  3. No rate limits on public reads
  4. Rich data — posts, likes, reposts, replies, hashtags, mentions

Quick Start: Get Any Profile

const did = await fetch(
  "https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle?handle=bsky.app"
).then(r => r.json()).then(d => d.did);

const profile = await fetch(
  `https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=${did}`
).then(r => r.json());

console.log(profile.displayName);    // "Bluesky"
console.log(profile.followersCount); // 32,420,172
Enter fullscreen mode Exit fullscreen mode

Get Posts with Engagement

const feed = await fetch(
  `https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=${did}&limit=50`
).then(r => r.json());

for (const item of feed.feed) {
  console.log({
    text: item.post.record.text,
    likes: item.post.likeCount,
    reposts: item.post.repostCount
  });
}
Enter fullscreen mode Exit fullscreen mode

The One Caveat

Search (app.bsky.feed.searchPosts) now requires authentication. Create a free App Password in Bluesky Settings.

Profile and feed scraping works without any auth.

Ready-Made Tools

I built 3 Bluesky tools on Apify Store:

  • Bluesky Scraper — profiles and posts
  • Bluesky Feed Monitor — engagement analytics
  • Bluesky Hashtag Tracker — trend tracking

All free. Search "knotless_cadence" on Apify.

What would you build on AT Protocol?

Top comments (0)