Bluesky Scraper & API: Export Posts, Profiles & Search avatar

Bluesky Scraper & API: Export Posts, Profiles & Search

Pricing

from $0.59 / 1,000 posts

Go to Apify Store
Bluesky Scraper & API: Export Posts, Profiles & Search

Bluesky Scraper & API: Export Posts, Profiles & Search

Scrape Bluesky posts without login: search by keyword, hashtag, date, language, author, mention or domain, every post of any profile, custom feeds and lists. Likes, reposts, replies, quotes, author followers, media and links, only new posts since the last run, and a profiles table with contacts.

Pricing

from $0.59 / 1,000 posts

Rating

0.0

(0)

Developer

Superior Actors

Superior Actors

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape Bluesky posts to CSV, Excel or JSON: search by keyword or hashtag (latest or top, date range, language, author, mentions, linked domain), every post of any profile down to the first one, custom feeds (Discover and any other) and lists, or single posts by link. Each row has the text, likes, reposts, replies, quotes and saves, the author's follower count and engagement rate, the posting date, images, video, link card and quoted post, hashtags, mentions and links. Get only new posts since the last run for brand and keyword monitoring, and a free profiles table: followers, bio contacts, average likes and reposts, posts per week, top post.

{ "searchQueries": ["artificial intelligence"], "usernames": ["nytimes.com"], "maxPostsPerInput": 0 }

No Bluesky account, app password or login needed. Use it as a Bluesky search API and Bluesky posts API: one call returns clean JSON, 100 posts per request. 0 = all: every search result within your dates (up to 100,000 per query), every post of a profile (all 6,408 posts and threads of @pfrazee.com in 107 requests).

What you get

One row per post. Real example, October 2026 (the newest post of each input):

authorHandlemediaTypelikeCountrepostCountreplyCountquoteCountbookmarkCountauthorFollowerCountengagementRatecreatedAt
bsky.appquote6,5781,30720513813435,292,8730.0232026-10-17
theonion.comimage1,6501352310101,358,6490.1342026-10-17
nytimes.comvideo2464058291,352,1790.0222026-10-18
pfrazee.comimage761214623309,3760.0352026-10-17
FieldDescription
postUrl, text, createdAt, indexedAtLink to the post on bsky.app, full text, posting time and when Bluesky indexed it (UTC)
likeCount, repostCount, replyCount, quoteCount, bookmarkCountLikes, reposts, replies, quotes and saves
authorFollowerCount, engagementRateThe author's followers and (likes + reposts + replies + quotes) / followers, in % (Bluesky has no view counts)
authorHandle, authorName, authorUrl, authorVerified, authorAvatar, authorDidThe author; authorVerified = Bluesky's blue check
mediaType, imageUrl, images, imageCounttext, image, video, link or quote; every image in full size with its alt text and size
videoUrl, videoThumbnailThe video stream (HLS .m3u8) and its cover
externalUrl, externalTitle, externalDescriptionThe link card of the post
quotedPostUrl, quotedAuthor, quotedTextThe post this one quotes
hashtags, mentions, links, languages#hashtags, mentioned handles, links in the text (full addresses), the post's languages
postType, isReply, replyToPostUrl, threadRootUrlpost, reply or repost; for replies the post answered and the first post of the thread
isPinned, repostedBy, repostedAtFor profiles: the pinned post; for reposts the account and when it reposted (the row is the original post)
labels, uri, cidModeration labels and the AT Protocol identifiers of the post
input, inputType, profile, scrapedAtWhich query, profile, feed or link the row came from

Profiles table (run's Output tab → Profiles (CSV), also as JSON: key-value store records profiles.csv and PROFILES), one row per profile you entered, free. Real example, October 2026, over the 20 latest posts:

handlefollowersCountpostsCountemailwebsiteaverageLikesmedianLikesaverageRepostspostsPerWeek
bsky.app35,292,873880support@bsky.app8,536.92,7981,237.52.41
theonion.com1,358,6498,802theonion.com/newsletters807.9733.578114.12
nytimes.com1,352,17944,457nytimes.onelink.me77.25421.8394.47
ColumnDescription
handle, displayName, did, profileUrl, description, avatar, banner, createdAt, isVerifiedThe account and its bio
followersCount, followsCount, postsCountFollowers, following and posts, exact
feedsCount, listsCount, starterPacksCount, isLabeler, pinnedPostUrlCustom feeds, lists and starter packs the account made
email, emails, website, handleDomain, linkInBio, instagram, youtube, x, facebook, linkedin, telegram, twitchContacts written in the bio; handleDomain = the custom domain of the handle (nytimes.com)
postsScraped, repliesScraped, repostsScraped, newestPostAt, oldestPostAt, postsPerWeek, averageLikes, medianLikes, averageReposts, averageReplies, averageQuotes, averageEngagementRate, topPostUrl, topPostLikes, topPostRepostsOver the account's own posts of the run (your limit and dates)
errorWhy a profile failed (not found)

How it works

  1. Add search queries, profiles, feed or list links and/or post links (any mix)
  2. Set Max posts per query, profile or feed (0 = all), the order and optional filters
  3. Run, then download the dataset as CSV, Excel, JSON or HTML
InputWhat it does
Search postsWords, a #hashtag or a "quoted phrase"; Bluesky operators like from:, mentions:, domain:, lang: work too
Profilesname.bsky.social, a custom-domain handle (nytimes.com), @handle, a bsky.app link or a DID
Custom feeds and listsbsky.app/profile/<handle>/feed/<name> (Discover, What's Hot, any custom feed) or .../lists/<id>
Post linksSingle posts with all stats
Max postsPer query, profile and feed, default 100, 0 = all
Search orderLatest = every match, newest first. Top = most popular: 100 per query, or 100 for each day with Posted after
Language, From this account, Mentioning this account, Linking to this website, With these hashtagsSearch filters, applied by Bluesky itself
Replies / Reposts of the profilesAdd the replies a profile wrote to others and the posts it reposted
Posted after / Posted beforeA date (2026-01-01) or a period (24 hours, 7 days, 6 months)
Minimum likesOnly posts with at least this many likes
Author follower countsOn by default: followers and engagement rate for search and feed results
Only new posts since the previous runFor schedules: only what was posted since the last check

A missing profile, feed or post is reported in the run status and not charged. Posts left out by a filter are not charged. Posts of accounts that asked apps not to show their content to logged-out people (Bluesky's !no-unauthenticated setting) are left out and not charged; the run status says how many.

Why this Actor

🔍 Search with no 100-post wallWithout login Bluesky gives one page of search results; this Actor walks back in time and returns every match, newest first
📈 Top posts per dayTop order with a date range gives the 100 most popular posts of every day: trend and campaign reports in one run
📜 Every post of a profileDown to the account's first post, with its own threads, and optionally replies and reposts
👥 Author reach in every rowFollower count and engagement rate of the author, also for search and feed results
🔔 Brand and keyword alertsSchedule it hourly: each run returns only new mentions, a run with nothing new costs only the start
📇 Profiles table, freeFollowers, contacts from the bio, average and median likes, posts per week, top post
💰 $0.91 per 1,000 postsSearch filters, follower counts, the profiles table and monitoring included, no add-on fees

Monitor brand mentions and keywords: only new posts

  1. Add your brand, product or competitor names as search queries (or use Mentioning this account), and the profiles you follow
  2. Turn on Only new posts since the previous run, save as a task and add a schedule, e.g. every hour
  3. First run returns the latest posts and remembers the newest one per query, profile and feed. Every later run returns only posts published since then

The newest post seen is kept in your account (key-value store bluesky-scraper-state) and is shared by all your runs and tasks with the same query and filters. Connect Google Sheets, Slack or email with an integration to be notified.

Pricing

Pay per result, no subscription needed. Apify Scale and Business plans pay less:

EventFree and Starter plansScale planBusiness plan
Run start$0.001$0.001$0.001
Post in the results (post, reply or repost)$0.00091$0.00077$0.00059
TaskCost
All 6,408 posts and threads of @pfrazee.com~$5.83
Latest 20 posts of 100 accounts (2,000 posts)~$1.82
10,000 posts for a keyword~$9.10
Hourly brand-mention alert for a month~$0.72 + $0.00091 per new post

Profiles, feeds and posts that are not found, posts left out by filters and the profiles table are not charged.

Ready-made tasks

Open it, change the query, and run:

TaskWhat you get
Search Bluesky Posts by Keyword and DateEvery post with a keyword in a date range, with likes and the author's followers

FAQ

Can it search more than 100 posts? Yes. Without login Bluesky returns only the first page of a search; the Actor asks again for posts older than the last one and goes on until your limit, your Posted after date or the end of the results.

Does it get all posts of a profile? Yes, every post Bluesky lists on the profile, newest first, down to the account's first one, including its own threads. Turn on Replies of the profiles for its replies to others and Reposts of the profiles for reposts.

Why are some posts missing? Some accounts turn on Bluesky's setting that asks apps not to show their posts to logged-out people. The Actor respects it and leaves those posts out, free; the run status shows how many.

Do I need a Bluesky account or an app password? No. The Actor reads the public Bluesky API, the same data the bsky.app website shows to any visitor.

Are there view counts? No: Bluesky does not count or show views. The engagement rate uses the author's followers instead.

Can I download the videos? videoUrl is Bluesky's HLS stream (playlist.m3u8); tools like ffmpeg or yt-dlp save it as MP4. Images come in full size.

Where do the emails come from? From what the account wrote in its bio. The Actor does not guess emails.

Use with the API and AI agents

Run it via the Apify API from Python, Node.js or any HTTP client, or connect it to Claude, ChatGPT and other AI agents through the Apify MCP server: "What did people on Bluesky say about our launch this week, and which posts got the most reposts?"

Other Bluesky tools

ToolWhat it does
Threads ScraperAll posts, views and profiles of Threads accounts
TikTok Profile ScraperAll videos and stats of TikTok profiles
Google Sheets Import & ExportSend the posts to a Google Sheet

The Actor collects only public posts, profiles and stats that Bluesky shows to any visitor, without logging in, and leaves out accounts that asked not to be shown to logged-out people. Posts are their authors' content: respect copyright when you reuse texts and images, and use personal data such as handles and emails in line with GDPR and other privacy laws.