Bluesky Scraper | Posts, Threads & Followers
Pricing
from $2.50 / 1,000 actor starteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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
threadDepthso 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:
app.bsky.feed.getAuthorFeedfor an account's own posts, newest-first, paginated with a cursor.app.bsky.feed.getPostThreadfor a post plus its nested replies.app.bsky.graph.getFollowers/getFollowsfor 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
| Field | Description |
|---|---|
mode | "posts" (default), "thread", "followers", or "following". |
actors | Handles, DIDs, or profile URLs — one per line. Used by posts/followers/following. |
postUrls | Full bsky.app post URLs or raw at:// URIs — one per line. Used by thread. |
incremental | posts mode only. Only return posts newer than your last run, per account. |
maxReplyDepth | thread mode only. How deep into nested replies to go. |
maxItems | Budget cap on billed rows for this run. |
firstRunSince | How far back the first incremental run looks (e.g. "30 days"). |
Billing (pay-per-event)
| Event | Price |
|---|---|
| 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.