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

(6)

Developer

BlueskyScraper

BlueskyScraper

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

12

Monthly active users

5 days 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 β€” 9 October 2026

Bluesky scrapers tested head-to-head on 9 October 2026: this Actor returns 20 search posts in 2.8 s with 46 fields including author follower counts, $1 per 1,000 posts and $0.50 per 1,000 followers, no start fee, replies under search results

The same requests went to this Actor and to the six most-used Bluesky scrapers on the Apify Store (A–F by monthly users): 20 latest posts for coffee, 20 posts and 20 followers of @nytimes.com, 20 replies of one thread and 5 profiles. Prices are per 1,000 rows at the free tier, worked out from what each 20-row run was billed, start fee included.

This ActorThe six others
Keyword search, 20 posts2.8 s2.7–15.4 s
Fields in a post row46, author follower counts included13–31
Followers export with each person's follower countyes, at no extra cost2 of the 4 tested
Price per 1,000 posts$1.00$1.25–3.00
Price per 1,000 followers$0.50$1.25–3.00
Price per 1,000 profiles$1.50$1.49–4.00
Fields in a profile row2910–17
Start fee per runnone4 of 6 charge $0.00005–0.005
Replies under every search resultyes, one option1 of 6
Comment tree of one post, 20 replies20 + the post, 2.9 s1 of 6 (5.9 s); one more failed
Failed runs, last 30 days00–5.7%

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.

Thirteen 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; Reply depth caps the tree
Quotespost URLsposts that quote the post
Posts by URLpost URLsjust those posts, 25 per request
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
authorFollowersCount, authorFollowsCount, authorPostsCounthow big each author is β€” on by default, free
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
sentiment, sentimentScorepositive / neutral / negative and a βˆ’1…1 score from a built-in word and emoji list β€” free option Add sentiment to posts, tuned for English
threadDepth, parentUriComments and Replies under each post: 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, Posts by URL, replies under each post
Profile$0.0015Profiles 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"
}

Top posts for a keyword with up to 10 direct replies under each, original posts only:

{
"mode": "search",
"keywords": ["coffee"],
"sort": "top",
"includeReplies": false,
"repliesPerPost": 10,
"maxReplyDepth": 1,
"maxResultsPerInput": 100
}

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