social

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.

TypeScript AT Protocol Global

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

ParameterTypeRequiredDescription
modestringNoWhat to scrape: posts, profile, followers, following, feed, thread, likers, reposters, actorLikes, search, or hashtag (default: posts).
handlesarrayNoBluesky handles for profile/posts/followers/following/actorLikes modes, e.g. bsky.app.
querystringNoSearch text (search mode) or hashtag (hashtag mode — auto-prefixed with #).
postUristringNoAT URI of a post — used by thread, likers, and reposters modes.
feedUristringNoAT URI of a custom feed — used by feed mode.
identifierstringNoBluesky login handle/email for authenticated modes (search, hashtag, actorLikes).
appPasswordstringNoBluesky app password (not your main account password) for authenticated modes.
maxItemsnumberNoMax 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 maxItems on follower/following pulls for large accounts to keep runs fast and costs predictable.

Frequently Asked Questions

Do I need Bluesky credentials?
Only for search, hashtag, and actorLikes modes — generate an app password in Bluesky settings and pass it as appPassword. Profile, posts, followers, following, feed, thread, likers, and reposters modes all work without credentials via the public AT Protocol API.
Can I export the likes of any account?
No. Bluesky's API only exposes actorLikes for the authenticated account itself, so the handle and login identifier must reference the same account.
How do I find a post or feed URI?
AT URIs look like at://did:plc:.../app.bsky.feed.post/... — copy them from Bluesky's API output or developer tooling. Feed URIs use the app.bsky.feed.generator collection.
Is it safe to use my app password?
Yes — use a Bluesky app password (created under Settings → App Passwords), never your main password. It's scoped, revocable, and passed as a secret input.

Related Tools

Ready to Extract Data?

Start using Bluesky Scraper — Posts, Profiles, Feeds & Interactions on Apify, or hire me for a custom solution.