Bluesky Scraper — Posts, Profiles, Feeds & Interactions
Extract Bluesky posts, profiles, followers, feeds, threads, likers, and reposters via the AT Protocol — plus authenticated search and hashtag results with an app password. Clean, normalized JSON.
Key Features
Eleven modes — search, profile, posts, followers, following, feed, thread, likers, reposters, actorLikes, and hashtag
No-credential public API for profiles, posts, followers, following, feeds, threads, likers, and reposters
Authenticated app-password modes — search, hashtag, and your own account likes
Post-engagement export — full likers and reposters lists per post
Thread flattening — walks a reply tree to a configurable depth
Automatic cursor pagination on every list endpoint until your item cap
Normalized JSON shape for posts and profiles across all modes
Resilient HTTP — request throttling, exponential back-off, and retry on 429/5xx
Use Cases
- Brand and keyword monitoring via authenticated search
- Hashtag and trend tracking across the network
- Audience export — a creator's or brand's followers and following lists
- Engagement analysis — exactly who liked or reposted a given post
- Dataset building for BI, analytics, or RAG pipelines from clean, normalized JSON
- Conversation and thread archiving under a post
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
mode | string | No | What to scrape: posts, profile, followers, following, feed, thread, likers, reposters, actorLikes, search, or hashtag (default: posts). |
handles | array | No | Bluesky handles for profile/posts/followers/following/actorLikes modes, e.g. bsky.app. |
query | string | No | Search text (search mode) or hashtag (hashtag mode — auto-prefixed with #). |
postUri | string | No | AT URI of a post — used by thread, likers, and reposters modes. |
feedUri | string | No | AT URI of a custom feed — used by feed mode. |
identifier | string | No | Bluesky login handle/email for authenticated modes (search, hashtag, actorLikes). |
appPassword | string | No | Bluesky app password (not your main account password) for authenticated modes. |
maxItems | number | No | Max posts/profiles saved; each is one billed event (default: 100). |
Output Example
1{
2 "itemType": "post",
3 "mode": "posts",
4 "uri": "at://did:plc:.../app.bsky.feed.post/...",
5 "author": {
6 "did": "did:plc:...",
7 "handle": "bsky.app",
8 "displayName": "Bluesky",
9 "followersCount": 1234567
10 },
11 "text": "Example post text",
12 "createdAt": "2026-06-11T00:00:00Z",
13 "replyCount": 10,
14 "repostCount": 20,
15 "likeCount": 100,
16 "langs": ["en"],
17 "url": "https://bsky.app/profile/bsky.app/post/..."
18}
Pricing
Pay-per-event: $0.001 per item (post or profile) saved. A 1,000-item export is ~$1.00, and maxItems caps both volume and cost.
Tips
- Start with public modes. Profiles, posts, followers, and engagement (likers/reposters) need no login — reserve app-password auth for search and hashtag runs.
- Export engagement, not just posts. The likers and reposters modes surface exactly who amplified a post — a signal most Bluesky scrapers skip.
- Cap
maxItemson follower/following pulls for large accounts to keep runs fast and costs predictable.
Frequently Asked Questions
Do I need Bluesky credentials?
Can I export the likes of any account?
How do I find a post or feed URI?
Is it safe to use my app password?
Related Tools
YouTube Subtitle & Transcript Scraper — JSON, SRT, VTT, LLM
YouTube transcripts as JSON, SRT, VTT, or LLM-ready text.
Learn more