Bluesky Scraper | Posts, Threads & Followers avatar

Bluesky Scraper | Posts, Threads & Followers

Pricing

from $2.50 / 1,000 actor starteds

Go to Apify Store
Bluesky Scraper | Posts, Threads & Followers

Bluesky Scraper | Posts, Threads & Followers

Bluesky posts, reply threads, and follower/following lists via Bluesky official public API - no login, no browser. Incremental mode returns only new posts since your last run. $0.60 per 1,000 posts scraped, plus a small one-time start fee.

Pricing

from $2.50 / 1,000 actor starteds

Rating

0.0

(0)

Developer

Hriday Rungta

Hriday Rungta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Extracts posts, full reply threads, and follower/following lists from Bluesky using Bluesky's own official public API — the same one that renders bsky.app for logged-out visitors. No login, no API key, no browser, no proxy.

What you get

  • Posts: author (handle, DID, display name), full text, language, created/indexed timestamps, reply/repost/like/quote/bookmark counts, embed summary (images, video, external link, or quoted post), a ready-to-click bsky.app URL.
  • Threads: a post plus every reply beneath it, flattened with a threadDepth so you can rebuild the tree, down to the depth you choose.
  • Followers / Following: DID, handle, display name, bio, avatar, account creation date, for either direction.
  • Incremental mode: track one or many accounts over time. Each run after the first returns only posts published since the last run — no re-scraping, no re-paying for old data.

How this works (honestly)

Bluesky's AT Protocol ships a genuinely official, documented, versioned public API at public.api.bsky.app/xrpc/... — Bluesky's own AppView, the exact backend bsky.app itself calls for anyone browsing without an account. This is not a reverse-engineered trick like some competing scrapers rely on:

  1. app.bsky.feed.getAuthorFeed for an account's own posts, newest-first, paginated with a cursor.
  2. app.bsky.feed.getPostThread for a post plus its nested replies.
  3. app.bsky.graph.getFollowers / getFollows for connections.

No headless browser, no residential proxy, no Cloudflare fight — because there isn't one. That also means it's fast and cheap, and the savings are passed on to you.

Why there's no keyword search: app.bsky.feed.searchPosts is blocked with an HTTP 403 (a WAF-style block) for anonymous callers — confirmed both from a local test and from a live run on Apify's own infrastructure. Rather than ship a fragile mode that silently fails for everyone, this Actor doesn't offer search. Feed it specific accounts or post URLs instead.

Incremental mode

Set incremental: true (mode "posts" only). On the first run per account, it seeds from firstRunSince (default 30 days). Every run after that resumes exactly where the last one left off, tracked per account in a key-value store. A run that's cut short by your maxItems budget still advances the mark safely — you'll never get duplicate rows on the next run, and you'll never silently skip a post either.

Input at a glance

FieldDescription
mode"posts" (default), "thread", "followers", or "following".
actorsHandles, DIDs, or profile URLs — one per line. Used by posts/followers/following.
postUrlsFull bsky.app post URLs or raw at:// URIs — one per line. Used by thread.
incrementalposts mode only. Only return posts newer than your last run, per account.
maxReplyDepththread mode only. How deep into nested replies to go.
maxItemsBudget cap on billed rows for this run.
firstRunSinceHow far back the first incremental run looks (e.g. "30 days").

Billing (pay-per-event)

EventPrice
Actor started$0.0025 — charged once per run, regardless of results
Post scraped$0.0006 ($0.60 / 1,000)
Reply scraped$0.0003 ($0.30 / 1,000)
Profile scraped (follower/following row)$0.0003 ($0.30 / 1,000)

No hidden per-GB proxy costs, no flat $0.004+ start fee inflating small runs like some competitors — the whole point of using Bluesky's own official API is that it's cheap to run, so it's cheap to use.