Bluesky Scraper avatar

Bluesky Scraper

Pricing

from $0.70 / 1,000 posts

Go to Apify Store
Bluesky Scraper

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

BlueskyScraper

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

an hour ago

Last modified

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

Bluesky scrapers tested head-to-head: this Actor returns search results in 2.8 s, 300 of 300 posts, 43 fields per post, follower counts included, $1 per 1,000 posts and $0.50 per 1,000 followers

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 ActorThe six others
Keyword search, 20 posts2.8 s3.3–28.9 s
300 posts asked for one keyword30050–300 (three tested)
Fields in a post row4318–32
Followers export with each person's follower countyes, at no extra cost2 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 runnone3 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:

ModeYou giveYou get
Postshandlesthe account's posts, own threads, replies or media posts, reposts marked, pinned post flagged
Searchkeywords, #hashtags, phrasespublic posts, Latest paged back in time or Top ranked; language, date, author, mention, domain and hashtag filters
Profileshandlesfollowers, following, posts count, bio, e-mails, phones and links from the bio, blue check, latest post
Followers / Followinghandleseveryone who follows the account, or whom it follows
Commentspost URLsthe post and every reply under it, with depth and parent, big threads opened branch by branch
Quotespost URLsposts that quote the post
Likers / Reposterspost URLspeople who liked or reposted it, with the time of the like
Account searchkeywordspeople and brands matching a keyword
Custom feedfeed URLthe posts a feed shows right now
List or starter packlist or starter pack URLits members

What data does Bluesky Scraper extract?

Post rows

FieldExample
url, uri, id, cidhttps://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, indexedAt2024-10-17T07:06:51.491Z
handle, did, displayName, avatar, authorVerified, authorProfileUrlbsky.app · did:plc:z72i7hdynmk6r22z27h6tvur · Bluesky
likeCount, repostCount, replyCount, quoteCount, engagement63700 · 9533 · 8596 · 708 · 82537
mediaType, images[], video, externalLinkimage · [{url, thumbnail, alt, width, height}] · {playlistUrl, thumbnail} · {url, title, description}
hashtags, mentions, links["coffee"] · [{handle, did}] · ["https://…"]
isReply, replyToUrl, replyToHandle, replyToDid, rootUrlthe conversation a reply belongs to
isQuote, quotedPost{url, handle, text, createdAt, likeCount}
isRepost, repostedBy, repostedAt, isPinned, labelsreposts and pins in an account's feed
threadDepth, parentUriComments mode: 1 = direct reply, 2 = reply to a reply
containsKeyword, query, source, sourceInputwhich 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.

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:

RowPriceFor
Post$0.001 — $1 per 1,000Posts, Search, Comments, Quotes, Custom feed
Profile$0.002Profiles mode, the optional profile row, Full profiles for followers
Account$0.0005 — $0.5 per 1,000Followers, 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

  1. Pick a mode — Posts, Search, Profiles, Followers, Comments and the rest.
  2. 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.
  3. Set the cap — Results per account, keyword or URL, and Maximum rows per run for the whole run.
  4. Add filters if you need them — date window, languages, minimum likes / reposts / replies, domain, mentions, hashtags.
  5. 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

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

ActorWhat it does
Bluesky Posts ScraperKeyword, hashtag and phrase search, account posts and custom feeds
Bluesky Profile ScraperProfiles with follower counts, bio e-mails and links, latest post
Bluesky Followers ScraperFollowers, following, likers, reposters, list and starter pack members
Bluesky Comments ScraperEvery reply under a post as a tree, plus quote posts