Bluesky Posts Scraper - Author Feed, Likes & Reposts
Pricing
$1.00 / 1,000 posts scrapeds
Bluesky Posts Scraper - Author Feed, Likes & Reposts
Scrape any public Bluesky account: post text, ISO dates, likes, reposts, replies, quotes and a combined engagement total, one row per post. Pages past the API's 100 ceiling, bulk accounts, no login. $0.001 per post.
Pricing
$1.00 / 1,000 posts scrapeds
Rating
0.0
(0)
Developer
Broke to Built
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Bluesky Posts Scraper — Author Feed, Likes & Reposts
Scrape any public Bluesky account and get one row per post: text, ISO date, likes, reposts,
replies, quotes, a combined engagement total, and a clickable bsky.app link.
No login, no app password, no API key. $0.001 per post — an account that returns nothing is recorded and not charged.
Input
{ "handle": "bsky.app", "maxPosts": 100 }
Bulk, including replies:
{"handles": ["bsky.app", "@pfrazee.com", "https://bsky.app/profile/jay.bsky.team"],"maxPosts": 250,"filter": "posts_with_replies"}
| Field | Type | Notes |
|---|---|---|
handle | string | A handle, @handle, a DID, or a bsky.app/profile/... URL. |
handles | string[] | Up to 10 accounts per run. |
maxPosts | integer | 1–500 per account. You are charged per post returned. |
filter | enum | posts_no_replies, posts_with_replies, posts_with_media. |
includeReposts | boolean | See below. Default false. |
Output
{"ok": true,"authorHandle": "bsky.app","authorFollowers": 34855310,"url": "https://bsky.app/profile/bsky.app/post/3mv3zcjaijk22","text": "Welcome to the ONLY event about Apple happening today…","createdAt": "2026-09-09T17:02:28.502Z","likeCount": 1712,"repostCount": 163,"replyCount": 360,"quoteCount": 51,"engagementTotal": 2286,"languages": ["en"],"isReply": false,"isRepost": false,"hasMedia": true}
What it gets right
- ⭐ Reposts are excluded by default. Bluesky's author feed also returns posts the account
reposted, written by other people — even under
posts_no_replies. Someone buying "this account's posts" does not mean that, and billing per reposted row is worse than useless. SetincludeReposts: trueif you want them; every row carries anisRepostflag either way. - It pages past the API's 100-per-request ceiling, and asks for a full page each time — because filtering reposts shrinks each page's yield, so requesting only the shortfall converges too slowly and quietly returns fewer posts than you asked for.
- There is a clickable link. The API returns only an
at://URI; the publicbsky.appURL is built from its record key. Without that you have no link to open. engagementTotalequals its own parts — likes + reposts + replies + quotes, so you can sort by reach without a spreadsheet formula.- Real error messages. The AT Protocol reports "Profile not found" in the body; you get that
instead of
HTTP 400. - It cannot spin. Paging stops when the cursor stops advancing, and is bounded by a page budget.
Pricing
$0.001 per post returned. No start fee. A missing account, or one with no posts under the
chosen filter, produces an ok: false record and is not charged.
Limits
- Public data only — what a logged-out visitor can see. No followers lists, no DMs, no blocked or private content.
- Search is not offered.
searchPostsreturns 403 without authentication, so this reads author feeds. Point it at accounts, not keywords. - 10 accounts per run, up to 500 posts each.
- Engagement counts are a snapshot at read time and keep moving.
FAQ
Do I need a Bluesky account or app password? No.
Can I search Bluesky by keyword? Not here — the public search endpoint requires auth.
Why do I see fewer posts than maxPosts? The account may not have that many under the chosen
filter, or many of its recent entries were reposts, which are excluded by default.
Changelog
- 0.1 (2026-09-10) — first release. One row per post, reposts excluded by default, cursor paging past 100, engagement totals, bulk accounts.