Bluesky Scraper
Pricing
from $0.70 / 1,000 posts
Bluesky Scraper
Scrape Bluesky without a login: posts of any account, keyword and hashtag search, profiles with followers and bio contacts, followers and following, comments under a post, likers, reposters, quotes, custom feeds and starter packs. Export JSON, CSV or Excel, or call it by API.
Pricing
from $0.70 / 1,000 posts
Rating
5.0
(1)
Developer
BlueskyScraper
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
an hour ago
Last modified
Categories
Share
Bluesky Scraper turns Bluesky into clean rows without a login or an API key: posts of any account, keyword and hashtag search that goes back in time, profiles with follower counts and the e-mails and links written in the bio, followers and following, every comment under a post, likers, reposters and quote posts, custom feeds, lists and starter packs, and account search by keyword. Every post carries text, time, author, likes, reposts, replies, quotes, images, video, link card, hashtags, mentions and the reply context. No start fee, error rows are free — $1 per 1,000 posts.
Paste handles, keywords or bsky.app links, click Start, and download JSON, CSV or Excel — or pull the rows through the Apify API into Google Sheets, n8n, Make, Zapier, a database or an AI agent.
Tested head-to-head — 28 September 2026

The same requests went to this Actor and to the six most-used Bluesky scrapers on the Apify Store: 20 latest posts for coffee, 20 posts of @nytimes.com, 20 followers of @nytimes.com, and a 300-post deep search.
| This Actor | The six others | |
|---|---|---|
| Keyword search, 20 posts | 2.8 s | 3.3–28.9 s |
| 300 posts asked for one keyword | 300 | 50–300 (three tested) |
| Fields in a post row | 43 | 18–32 |
| Followers export with each person's follower count | yes, at no extra cost | 2 of 3 tested |
| Price per 1,000 followers | $0.50 | $1.25–3.00 |
| Price per 1,000 posts | $1.00 | $1.00–3.00 |
| Start fee per run | none | 3 of 6 charge $0.004–0.005 |
What is Bluesky Scraper?
Bluesky is built on the open AT Protocol, and its public data can be read by anyone. Reading it at scale still takes work: search refuses to page for visitors who are not logged in, big comment threads come back trimmed, follower lists come without counts, and every endpoint returns a different nested shape. This Actor does that work and hands back flat rows with the same field names in every mode.
It is a Bluesky API alternative for social listening and brand monitoring, audience and competitor research, lead lists from bios, trend and sentiment analysis, academic research, archiving, and AI agents asked "what are people on Bluesky saying about X". It needs no Bluesky account, no app password and no cookies, so no account of yours can ever be limited.
Twelve modes, one row shape per type:
| Mode | You give | You get |
|---|---|---|
| Posts | handles | the account's posts, own threads, replies or media posts, reposts marked, pinned post flagged |
| Search | keywords, #hashtags, phrases | public posts, Latest paged back in time or Top ranked; language, date, author, mention, domain and hashtag filters |
| Profiles | handles | followers, following, posts count, bio, e-mails, phones and links from the bio, blue check, latest post |
| Followers / Following | handles | everyone who follows the account, or whom it follows |
| Comments | post URLs | the post and every reply under it, with depth and parent, big threads opened branch by branch |
| Quotes | post URLs | posts that quote the post |
| Likers / Reposters | post URLs | people who liked or reposted it, with the time of the like |
| Account search | keywords | people and brands matching a keyword |
| Custom feed | feed URL | the posts a feed shows right now |
| List or starter pack | list or starter pack URL | its members |
What data does Bluesky Scraper extract?
Post rows
| Field | Example |
|---|---|
url, uri, id, cid | https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l · at://did:plc:…/app.bsky.feed.post/3l6oveex3ii2l |
text, language, languages | "👋 Bluesky is an open social network…" · en · ["en"] |
createdAt, indexedAt | 2024-10-17T07:06:51.491Z |
handle, did, displayName, avatar, authorVerified, authorProfileUrl | bsky.app · did:plc:z72i7hdynmk6r22z27h6tvur · Bluesky |
likeCount, repostCount, replyCount, quoteCount, engagement | 63700 · 9533 · 8596 · 708 · 82537 |
mediaType, images[], video, externalLink | image · [{url, thumbnail, alt, width, height}] · {playlistUrl, thumbnail} · {url, title, description} |
hashtags, mentions, links | ["coffee"] · [{handle, did}] · ["https://…"] |
isReply, replyToUrl, replyToHandle, replyToDid, rootUrl | the conversation a reply belongs to |
isQuote, quotedPost | {url, handle, text, createdAt, likeCount} |
isRepost, repostedBy, repostedAt, isPinned, labels | reposts and pins in an account's feed |
threadDepth, parentUri | Comments mode: 1 = direct reply, 2 = reply to a reply |
containsKeyword, query, source, sourceInput | which input produced the row |
Profile rows
handle, did, displayName, description, followersCount, followsCount, postsCount, emails, phones, links (written in the bio), verified, isTrustedVerifier, isLabeler, listsCount, feedsCount, starterPacksCount, acceptsDMs, avatar, banner, pinnedPostUrl, createdAt, latestPostAt, latestPostUrl, latestPostText.
Account rows (followers, following, likers, reposters, members, account search)
handle, did, displayName, description, emails, links, verified, avatar, createdAt, followersCount, followsCount, postsCount, relation (follower, following, liked, reposted, list member, search match), relatedTo, actionAt (when the like was given). Counts are included at the account price; switch on Full profiles for the complete profile row.
Every row has type and scrapedAt. An account, post or URL that cannot be read comes back as an error row with the reason — account not found, not found or deleted — never silently missing, and never on the bill.
How much does it cost to scrape Bluesky?
Pay per row, no subscription, no start fee, no charge for errors:
| Row | Price | For |
|---|---|---|
| Post | $0.001 — $1 per 1,000 | Posts, Search, Comments, Quotes, Custom feed |
| Profile | $0.002 | Profiles mode, the optional profile row, Full profiles for followers |
| Account | $0.0005 — $0.5 per 1,000 | Followers, Following, Likers, Reposters, list members, account search |
There is no browser and no proxy in this Actor, so platform usage stays close to zero. On the Apify free plan ($5 of credit a month) that is thousands of posts every month for free. Set Maximum rows per run and a run can never cost more than that number of rows.
How to scrape Bluesky
- Pick a mode — Posts, Search, Profiles, Followers, Comments and the rest.
- Paste inputs — handles (
bsky.app,@nytimes.com, a profile URL), keywords (coffee,#bookstodon), post URLs, or any bsky.app link in Bluesky URLs, which is routed to the right mode by itself. - Set the cap — Results per account, keyword or URL, and Maximum rows per run for the whole run.
- Add filters if you need them — date window, languages, minimum likes / reposts / replies, domain, mentions, hashtags.
- Start. Rows appear in the dataset as they are collected; download JSON, CSV, Excel or HTML, or read them by API.
⬇️ Input
The last 500 posts of two accounts, reposts left out, with their profiles:
{"mode": "posts","handles": ["nytimes.com", "theonion.com"],"maxResultsPerInput": 500,"includeReposts": false,"includeProfile": true}
Brand monitoring — English posts from the last week that mention a brand, with at least one like, new posts only on every scheduled run:
{"mode": "search","keywords": ["notion"],"languages": ["en"],"postedAfter": "2026-09-21","minLikes": 1,"strictKeywordMatch": true,"maxResultsPerInput": 1000,"monitoringStoreName": "notion-watch"}
Everyone who liked a post, with full profiles:
{"mode": "likers","postUrls": ["https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l"],"maxResultsPerInput": 2000,"includeProfileDetails": true}
⬆️ Output
{"type": "post","url": "https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l","text": "👋 Bluesky is an open social network that gives creators independence from platforms, developers the freedom to build, and users a choice in their experience…","createdAt": "2024-10-17T07:06:51.491Z","language": "en","handle": "bsky.app","displayName": "Bluesky","likeCount": 63700,"repostCount": 9533,"replyCount": 8596,"quoteCount": 708,"mediaType": "text","hashtags": [],"links": [],"isReply": false,"isPinned": true,"source": "posts","sourceInput": "bsky.app"}
Use cases
Social listening and brand monitoring
Search your brand, product or competitor by keyword, mention or linked domain, keep English posts with engagement, and schedule the run with Monitoring mode so every run delivers only new posts.
Lead generation and outreach lists
Export the followers of a competitor, the members of a starter pack in your niche, or everyone who liked a launch post — with bios, and the e-mails and websites people wrote in them.
Creator, audience and competitor research
Profiles with follower, following and post counts plus the date of the latest post show who is active and growing; the Posts mode gives the full publishing history and engagement.
Research, archiving and AI
Every conversation as a tree (threadDepth, parentUri), stable IDs (did, uri) that survive handle changes, and clean text for sentiment analysis, topic modelling and RAG pipelines.
Integrations
- API — start runs and read datasets from any language; Python and JavaScript clients from Apify.
- No-code — n8n, Make, Zapier, Google Sheets, Airtable, Slack, webhooks.
- Schedules — hourly or daily runs; with Monitoring mode each run returns only what is new.
- AI agents and MCP — call the Actor as a tool from Claude, ChatGPT or any MCP client through the Apify MCP server.
Troubleshooting
- Search Top stops at 100 posts — that is all Bluesky shows a visitor who is not logged in. Choose Latest: it pages back in time as far as you ask.
- A big post returns fewer replies than its counter — Bluesky sends large threads trimmed; the Actor opens every reply that has its own replies. Replies that were deleted, or hidden by the author, cannot be read.
- An account returns an error row — the handle does not exist, was renamed, or the account asked Bluesky not to be shown to logged-out visitors. Such accounts are respected and skipped.
❓ FAQ
Is it legal to scrape Bluesky?
This Actor reads only public data that Bluesky serves to anyone without a login, the same data its open AT Protocol publishes. It does not log in, does not bypass any access control, and skips accounts that asked not to be shown to logged-out visitors. Personal data such as names and e-mails may be protected by laws like the GDPR — make sure you have a lawful reason to process it, and consult a lawyer if unsure.
Do I need a Bluesky account or app password?
No. Nothing is logged in and nothing is asked of you except the inputs.
How far back can it go?
Posts mode pages through an account's whole history. Search in Latest order pages back by date as far as Bluesky's index goes.
Can I get only new posts every day?
Yes — give Monitoring mode a name and schedule the run; each run returns only posts not delivered before under that name.
Can I use it from Python, n8n or an AI agent?
Yes — every run is available through the Apify API, integrations and the MCP server.
Your feedback
Something missing, a field you need, a result that looks wrong? Open an issue on the Actor's Issues tab — it is read and answered.
You might also like
| Actor | What it does |
|---|---|
| Bluesky Posts Scraper | Keyword, hashtag and phrase search, account posts and custom feeds |
| Bluesky Profile Scraper | Profiles with follower counts, bio e-mails and links, latest post |
| Bluesky Followers Scraper | Followers, following, likers, reposters, list and starter pack members |
| Bluesky Comments Scraper | Every reply under a post as a tree, plus quote posts |