Bluesky Scraper
Pricing
from $0.005 / actor start
Bluesky Scraper
Pricing
from $0.005 / actor start
Rating
0.0
(0)
Developer
Eonix Pvt Ltd
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Bluesky Scraper β Posts, Profiles, Followers & Search API
Bluesky has 30M+ users and almost no good scrapers. This one gives you clean, ready-to-use data on Bluesky posts, hashtags, profiles, followers and full reply threads. There's no login, no browser and no waiting: most runs finish in seconds.
Export to JSON, CSV, Excel or HTML, or pull the results straight into your app, spreadsheet, AI agent or automation.
What can it scrape?
| Mode | You give it | You get |
|---|---|---|
| Search posts | Keywords or hashtags (#ai, climate change, from:bsky.app) | Matching posts, newest or most popular first |
| Profile details | Handles (bsky.app) or profile links | Bio, website, follower / following / post counts, avatar, banner, join date |
| Author feed | Handles | Everything a user posted, optionally with replies and reposts |
| Followers | Handles | Everyone who follows the account, with full profile details |
| Follows | Handles | Everyone the account follows, with full profile details |
| Thread replies | Post links | The post plus every reply in the conversation, with reply depth |
Every post includes its text, link, author, date, likes, reposts, replies, quotes, languages, hashtags, mentions, links, images (full size + alt text), video, link previews and quoted posts.
Use cases
- Social listening & brand monitoring. Track mentions of your brand, product or competitors, and schedule the Actor to run hourly for a live feed.
- Lead generation & influencer discovery. Pull the followers of a niche account, sort by follower count, and read their bios and websites.
- Market & academic research. Build datasets of conversations around a topic, event or hashtag, with full reply threads for discourse analysis.
- AI agents & RAG. Feed fresh, structured Bluesky content to LLMs, vector databases and agents via the API or MCP.
- Content & trend monitoring. See which posts get traction, which links get shared, and what hashtags are rising.
Why this scraper?
- No login required. Uses Bluesky's official public API, so there's no account and no cookies to break.
- Fast and cheap. No browser; runs usually return in seconds.
- Clean, flat data. Consistent field names, ISO-8601 dates, real numbers,
nullinstead of empty strings, and no duplicates. - Respects privacy choices. Accounts that asked Bluesky to hide their content from logged-out visitors are skipped automatically.
- Budget-safe. The run stops cleanly at your maximum cost, and you're never charged for items you didn't get.
Sample output
Here are the first 3 results from a real run with the default input (search #ai), trimmed to the most useful fields. The full output also includes cid, authorDid, authorAvatar, indexedAt, mentionDids, video, quotedPost, reply/repost/thread fields, labels, source and scrapedAt.
[{"url": "https://bsky.app/profile/nextlogic-ai.bsky.social/post/3mwgtfe5cge2z","uri": "at://did:plc:37qq64lnbpp5rswmszg67qgq/app.bsky.feed.post/3mwgtfe5cge2z","authorHandle": "nextlogic-ai.bsky.social","authorDisplayName": "NextLogic-AI","text": "π¨ New Post: Revolutionizing Cancer Detection: How Liquid Biopsies Could Transform Healthcare Careers\n#ai #biotechnology #cancer #TechNews ...\n\nπ View Full Illustration:\nhttps://nextlogic-ai.achlabo.com/en/revolutionizing-cancer-detection-how-liquid-biopsies-could-transform-healthcare-careers/","createdAt": "2026-09-26T17:41:07.000Z","likeCount": 0,"repostCount": 0,"replyCount": 0,"quoteCount": 0,"langs": [],"hashtags": ["ai", "biotechnology", "cancer", "TechNews"],"links": ["https://nextlogic-ai.achlabo.com/en/revolutionizing-cancer-detection-how-liquid-biopsies-could-transform-healthcare-careers/"],"embedType": "images","images": [{"fullsize": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:37qq64lnbpp5rswmszg67qgq/bafkreiduoimzny45u3qgjxzvmqiaixxfsgeuqgwg7logobwoda5h4i26wy","alt": "Revolutionizing Cancer Detection: How Liquid Biopsies Could Transform Healthcare Careers"}],"externalLink": null,"isReply": false},{"url": "https://bsky.app/profile/autoflow.bsky.social/post/3mwgteoy4my2p","uri": "at://did:plc:ait3ewyppkd4ubgkldb6pvn3/app.bsky.feed.post/3mwgteoy4my2p","authorHandle": "autoflow.bsky.social","authorDisplayName": "Automation","text": "Stop hardcoding your AI agentβs logic. Switch to \"State-Driven\" workflows using tools like LangGraph. By keeping the conversation state external, you can make your agents pause, human-in-the-loop, and recover from errors easily. #AI #Automation","createdAt": "2026-09-26T17:40:47.737Z","likeCount": 0,"repostCount": 0,"replyCount": 0,"quoteCount": 0,"langs": ["en"],"hashtags": ["AI", "Automation"],"links": [],"embedType": null,"images": [],"externalLink": null,"isReply": false},{"url": "https://bsky.app/profile/schoenenberger.bsky.social/post/3mwgtdubmys2e","uri": "at://did:plc:bz6mqlgvztm3otrubyvmniyb/app.bsky.feed.post/3mwgtdubmys2e","authorHandle": "schoenenberger.bsky.social","authorDisplayName": "Henning Schoenenberger","text": "Can visual AI help us understand cities without reducing urban life to what cameras can capture? #MIT researchers examine both the promise and peril.\n\nnews.mit.edu/2026/studyin...\n\n#Sociology #UrbanStudies #AI","createdAt": "2026-09-26T17:40:19.927Z","likeCount": 0,"repostCount": 0,"replyCount": 0,"quoteCount": 0,"langs": ["de"],"hashtags": ["MIT", "Sociology", "UrbanStudies", "AI"],"links": ["https://news.mit.edu/2026/studying-cities-using-visual-ai-fabio-duarte-martina-mazzarello-carlo-ratti-fan-zhang-book-0924"],"embedType": "external","images": [],"externalLink": {"url": "https://news.mit.edu/2026/studying-cities-using-visual-ai-fabio-duarte-martina-mazzarello-carlo-ratti-fan-zhang-book-0924","title": "The promise and peril of using visual AI to study cities"},"isReply": false}]
A profile result (profile, followers and follows modes) looks like this:
{"type": "profile","did": "did:plc:z72i7hdynmk6r22z27h6tvur","handle": "bsky.app","url": "https://bsky.app/profile/bsky.app","displayName": "Bluesky","description": "official Bluesky account (check usernameπ)\n\nBugs, feature requests, feedback: support@bsky.app","avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreihwihm6kpd6zuwhhlro75p5qks5qtrcu55jp3gddbfjsieiv7wuka","followersCount": 35049457,"followsCount": 15,"postsCount": 864,"createdAt": "2023-04-12T04:53:57.057Z","website": null,"pinnedPostUri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","relation": null,"relationSubjectHandle": null}
In followers / follows mode, relation is "follower" or "follows", and relationSubjectHandle tells you whose list the profile came from. website is the first web address found in the bio.
Pricing
You pay only for results. There's no monthly fee.
| Event | Price | When |
|---|---|---|
| Actor start | $0.005 | Once per run |
| Post scraped | $0.0005 | Each post saved (search, author feed, thread) |
| Profile scraped | $0.002 | Each profile saved (profile, followers, follows) |
Worked examples:
- 10,000 posts β $5: 10,000 Γ $0.0005 = $5.00, plus $0.005 to start.
- 1,000 posts β $0.51: $0.50 for the posts, plus $0.005.
- 1,000 followers with full profiles β $2.01: 1,000 Γ $0.002 = $2.00, plus $0.005.
Set Maximum cost per run in Apify Console and the Actor stops cleanly when it gets there. You're never charged for posts you didn't receive, and duplicates are never charged.
Input
| Field | What it does | Default |
|---|---|---|
mode | search, profile, authorFeed, followers, follows or thread | search |
queries | Search terms or hashtags (Search mode) | ["#ai"] |
handles | Handles, DIDs or profile links (Profile, Author feed, Followers, Follows) | ["bsky.app"] |
postUrls | Post links or at:// URIs (Thread mode) | a sample post |
maxItems | Max results per search term / handle / thread (in Profile mode: max handles) | 200 |
since | Only posts created on or after this date (UTC), e.g. 2025-01-31 | β |
until | Only posts created before this date (UTC) | β |
includeReplies | Include replies in Search and Author feed | false |
includeReposts | Include reposts in Author feed | false |
expandEmbeds | Add full quoted posts and link-preview details | true |
searchSort | latest or top | latest |
blueskyHandle | Optional. Your handle, to unlock deep search (see FAQ) | β |
blueskyAppPassword | Optional. An app password (never your main password) | β |
blueskyServiceUrl | Where to log in; change only for self-hosted accounts | https://bsky.social |
proxyConfiguration | Proxy settings | Apify Proxy |
Example input:
{"mode": "authorFeed","handles": ["bsky.app", "nytimes.com"],"maxItems": 500,"since": "2025-01-01","includeReposts": false}
How to use it
Apify API (cURL)
curl -X POST "https://api.apify.com/v2/acts/yasaslive~bluesky-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"search","queries":["#ai"],"maxItems":100}'
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("yasaslive/bluesky-scraper").call(run_input={"mode": "followers","handles": ["bsky.app"],"maxItems": 1000,})for profile in client.dataset(run["defaultDatasetId"]).iterate_items():print(profile["handle"], profile["followersCount"], profile["website"])
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('yasaslive/bluesky-scraper').call({mode: 'thread',postUrls: ['https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, 'posts in the thread');
Make, n8n and Zapier
- Make: add the Apify β Run an Actor module, choose
yasaslive/bluesky-scraper, paste your input JSON, then add Apify β Get Dataset Items. - n8n: use the Apify node (Run Actor + Get dataset items), or an HTTP Request node that POSTs your input to the
run-sync-get-dataset-itemsURL above. - Zapier: use the Apify app with the Run Actor action.
AI agents (MCP)
Connect Claude, Cursor or any MCP client to the Apify MCP server and it can call this Actor as a tool:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=yasaslive/bluesky-scraper","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Then ask something like "Find the latest Bluesky posts about #climate and summarize the main arguments."
FAQ
Do I need a Bluesky account? No, every mode works without one. The only exception is deep search (below).
Why does Search return at most ~100 posts per term? Bluesky's public API gives logged-out visitors only the first page of search results, and blocks date filters. This Actor respects that limit. You have three options:
- Add more search terms, since each term gets its own ~100 results.
- Use Author feed, Followers or Thread modes, which have no such limit.
- For deep search, fill in
blueskyHandleandblueskyAppPassword. The Actor then logs in with your account and pages through all results, with server-side date filters.
Create an app password at bsky.app/settings/app-passwords. App passwords can be revoked at any time and can't change your account password. The login is used for search only. The password is stored encrypted by Apify and never logged.
Why are some posts or profiles missing?
Some Bluesky users ask not to be shown to logged-out visitors. Bluesky's own website hides them, and so does this Actor. The run's STATS record shows how many were skipped (optOutSkipped). Deleted, blocked or suspended content is also unavailable.
Are follower counts included in Followers / Follows mode? Yes. Each profile is enriched with its full details, including follower, following and post counts.
How fresh is the data? Live. Every run reads directly from Bluesky.
Can I schedule it? Yes. Use Apify Schedules to run it hourly or daily, and connect a webhook or integration to receive new results.
Where can I see what happened in a run? Open the run's Storage β Key-value store β STATS. It shows request counts, errors by type (blocked, rate-limited, proxy, network, parse, not found), items per input, charges, and whether the budget was reached.
Limitations
- Logged-out search returns up to ~100 posts per search term (see FAQ). Other modes page through everything the API offers.
- Very large threads are returned as far as Bluesky's thread API goes, up to 1,000 levels deep.
since/untilapply to post modes. In Author feed mode the Actor stops paging once it passessince.- Videos are returned as streaming playlist (
.m3u8) and thumbnail URLs, not as downloaded files. websiteis best-effort, parsed from the bio text.
Legal and responsible use
This Actor only reads public data from Bluesky's official public API. It doesn't log in unless you choose to, it doesn't bypass any access restriction, and it honours users' request not to be shown to logged-out visitors.
Scraped data can still contain personal data. You're responsible for how you use it: comply with the Bluesky Terms of Service, the Bluesky developer guidelines, and data-protection laws such as the GDPR and CCPA. Have a legitimate purpose, keep only what you need, and don't use the data for spam, harassment or profiling of individuals. If you're unsure, consult a lawyer.
Support
Found a bug or need a field that's missing? Open an issue on the Actor's Issues tab and include your run ID.