Bluesky Scraper — Posts, Profiles, Search, Followers
Pricing
from $1.00 / 1,000 result items
Bluesky Scraper — Posts, Profiles, Search, Followers
Scrape Bluesky posts, profiles, followers, threads, and search results through the official AT Protocol API — fast, reliable, no blocks. Clean flat JSON for spreadsheets, dashboards, and AI pipelines. Pay only per result.
Pricing
from $1.00 / 1,000 result items
Rating
0.0
(0)
Developer
Andreas Lund Helstrøm
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Share
Extract data from Bluesky fast and reliably. This scraper talks to Bluesky's official AT Protocol API — no fragile browser automation, no blocks, no proxies needed — and returns clean, flat JSON you can plug straight into spreadsheets, dashboards, databases, or AI pipelines.
What it can do
| Operation | What you get | Login needed? |
|---|---|---|
user-posts | All posts (and optionally replies) from any user | No |
user-profiles | Profile info: bio, follower/post counts, dates | No |
followers | Who follows a user | No |
follows | Who a user follows | No |
search-users | Find users matching a keyword | No |
post-thread | A post plus its full reply tree | No |
search-posts | Full-text post search with sort and date range | App password |
Why this scraper
- Built on the official API — near-100% success rate, fast runs, and results that match what you see on bsky.app.
- Pay only for results — pricing is per returned item, capped by your
maxItemsPerInputsetting and your run's charge limit. - Clean output — flat fields (
text,author.handle,likeCount,url, …) instead of raw protocol blobs. - AI-agent ready — callable by AI agents and LLM workflows through Apify's MCP integration, like every actor on the platform.
Quick start
Scrape the latest 200 posts from a few accounts:
{"operation": "user-posts","handles": ["bsky.app", "https://bsky.app/profile/nytimes.com"],"maxItemsPerInput": 200}
Handles, DIDs, and profile URLs all work interchangeably.
Example output item (post)
{"type": "post","uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3kexample","url": "https://bsky.app/profile/bsky.app/post/3kexample","text": "Example post text","createdAt": "2026-07-01T12:34:56.000Z","author": { "did": "did:plc:z72i…", "handle": "bsky.app", "displayName": "Bluesky" },"replyCount": 12,"repostCount": 34,"likeCount": 567,"quoteCount": 8,"images": [],"externalLink": null,"isReply": false}
Profile items carry handle, displayName, description, followersCount, followsCount, postsCount, and createdAt.
Post search (the one operation that needs a login)
Bluesky restricted its post-search endpoint to logged-in sessions platform-wide. To use search-posts:
- In the Bluesky app, go to Settings → Privacy and Security → App Passwords and create one (takes a minute).
- Enter your handle in
bskyIdentifierand the app password inbskyAppPassword(stored encrypted by Apify).
Never enter your main account password. Every other operation works without any login.
{"operation": "search-posts","queries": ["\"climate tech\"", "solar panels"],"searchSort": "latest","since": "2026-06-01T00:00:00Z","maxItemsPerInput": 500,"bskyIdentifier": "you.bsky.social","bskyAppPassword": "xxxx-xxxx-xxxx-xxxx"}
Use cases
- Brand and topic monitoring — track mentions, threads, and sentiment sources as Bluesky keeps growing.
- Audience research — follower/following graphs, profile datasets, community mapping.
- Datasets for AI — feed clean public social data to LLM pipelines, agents, and research projects.
- Journalism and academia — collect public conversation around events, with date-ranged search.
Fair use, rate limits, and privacy
The scraper only accesses public data through Bluesky's official, documented API, paces its requests politely, and retries gently on rate limits. Nothing is cached server-side: deleted content simply stops being returned. Please respect Bluesky's terms and applicable laws (including data-protection rules) in how you use the output.
Troubleshooting
- "Post search requires a Bluesky login" — add
bskyIdentifier+bskyAppPassword(see above). - A handle returns nothing — check the account isn't suspended/deleted; try the profile URL form.
- Login failed — app passwords are per-account and revocable; generate a fresh one.
Found an issue or missing a feature? Open an issue on the actor page — it gets a fast response.