Bluesky Scraper — No Login, 7-in-1, Posts, Profiles & Followers avatar

Bluesky Scraper — No Login, 7-in-1, Posts, Profiles & Followers

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Bluesky Scraper — No Login, 7-in-1, Posts, Profiles & Followers

Bluesky Scraper — No Login, 7-in-1, Posts, Profiles & Followers

Scrape Bluesky without login: search posts by keyword or #hashtag, profile posts, profiles, followers/following, reply threads and user search. Engagement counts, media, links, language and date filters, plus 'only new posts' monitoring. $0.80 per 1,000 results.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Erwinbooze Ricardo

Erwinbooze Ricardo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Security

Limited permissions

Share

Bluesky Scraper collects public data from Bluesky (bsky.app) — posts by keyword or #hashtag, all posts of any profile, profile details, followers and following lists, full reply threads and account search — in one Actor, through Bluesky's official public AT Protocol API. No login, no Bluesky account, no cookies, no browser.

Every post comes as one clean row: text, author, date, language, likes, reposts, replies, quotes, hashtags, mentions, links, images, video and quoted post. Export to CSV, Excel, JSON or Google Sheets, schedule it, or call it from an AI agent.

Price: $0.80 per 1,000 results (plus a $0.00005 start event); failed sources are free.

Why this Bluesky scraper?

  • ✅ 7 modes in one Actor — search posts, profile posts, profiles, followers, following, replies, user search. No need to buy four different scrapers.
  • ✅ Low, transparent pricing — $0.0008 per result, a tiny $0.00005 start event, and nothing for failed handles or empty searches.
  • ✅ No login — uses only Bluesky's public, unauthenticated AppView API. Your account is never at risk.
  • ✅ Monitoring built in — turn on Only new posts and schedule the Actor: each run returns just the posts you have not seen yet (per search term / profile).
  • ✅ Filters that save money — date range, language, minimum likes, posts linking to a domain, posts by one author, media-only feeds. Filtered-out posts are not charged.
  • ✅ Analysis-ready output — flat fields, engagement total, bsky.app links for every post and profile, hashtags and links parsed from rich-text facets.
  • ✅ AI-agent ready — simple input, JSON output; works through the Apify MCP server in Claude, ChatGPT, Cursor and other agents.

Use cases

  • Brand & keyword monitoring — track mentions of your brand, product or competitors on Bluesky every hour or day.
  • Hashtag research — collect posts for a #hashtag or campaign with engagement numbers.
  • Influencer discovery — search users by topic, get follower counts, export followers of key accounts.
  • Audience analysis — download followers/following of a profile with bios and stats.
  • Social listening & sentiment datasets — feed posts into an LLM or sentiment model.
  • Academic research & journalism — archive a public conversation thread with all replies.
  • Link tracking — find who shares links to your domain (domain filter).

Modes and input

Mode (mode)UsesReturns
searchPostsqueries (keywords, "phrases", #hashtags, from:handle, lang:en)posts
profilePostshandlesthe profile's posts (optionally replies, reposts, media-only)
profileshandlesprofile details with followers / following / posts counts
followers / followinghandlesaccounts (add enrichProfiles for their counts)
postRepliespostUrlsthe post and its whole reply tree with depth
searchUsersqueriesmatching accounts

Handles can be jay.bsky.team, @jay.bsky.team, a DID or a https://bsky.app/profile/... URL.

OptionWhat it doesDefault
maxItemsMax results per search term / profile / post50
maxTotalItemsHard cap for the whole run1000
sortlatest or top (post search)latest
since / untilDate range: 2026-10-01, ISO timestamp, or days ago (7)—
languagee.g. en, de, ja—
minLikesSkip posts with fewer likes0
author, domainPost search: only one author / only posts linking to a domain—
feedFilterProfile posts: no replies, with replies, media, video, self-threadsno replies
includeRepostsProfile posts: include repostsfalse
replyDepthReply levels in postReplies6
onlyNewPostsSkip posts returned in earlier runs (monitoring)false
{
"mode": "searchPosts",
"queries": ["web scraping", "#buildinpublic"],
"sort": "latest",
"since": "7",
"language": "en",
"maxItems": 100
}

Output

Post example (real data, shortened):

{
"type": "post",
"url": "https://bsky.app/profile/bsky.app/post/3myx7vphq3s2j",
"text": "getting our Halloween decorations set up",
"createdAt": "2026-10-28T16:58:02.827Z",
"indexedAt": "2026-10-28T16:58:05.900Z",
"languages": [
"en"
],
"authorHandle": "bsky.app",
"authorName": "Bluesky",
"authorDid": "did:plc:z72i7hdynmk6r22z27h6tvur",
"authorAvatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreihwihm6kpd6zuwhhlro75p5qks5qtrcu55jp3gddbfjsieiv7wuka",
"authorProfileUrl": "https://bsky.app/profile/bsky.app",
"authorVerified": false,
"likeCount": 3637,
"repostCount": 387,
"replyCount": 225,
"quoteCount": 126,
"bookmarkCount": 207,
"engagement": 4375,
"hashtags": [],
"mentionedDids": [],
"links": [],
"images": [
{
"url": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreienhu3nspbm2f2v5q74arjtlvltdlgruzjvo6ndlggksp6l6zlf5a",
"thumbnail": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreienhu3nspbm2f2v5q74arjtlvltdlgruzjvo6ndlggksp6l6zlf5a",
"alt": "Gravestone reading:\n\nHere lies StumbleUpon\n2001 - 2018\n\"Remember websites?\""
},
{
"url": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreifpa3vyizusbzwgmnpr4wgm4nhsztxolgvjr4gmzspmpwysltrnre",
"thumbnail": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreifpa3vyizusbzwgmnpr4wgm4nhsztxolgvjr4gmzspmpwysltrnre",
"alt": "Gravestone reading:\n\nHere lies Vine\n2013 - 2017\n\"Look at all those chickens\""
},
{
"url": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreienq5z3pmk3h6yiqyfmuf7lvux6mknnfol4akfrn4fh5l7qngkwo4",
"thumbnail": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreienq5z3pmk3h6yiqyfmuf7lvux6mknnfol4akfrn4fh5l7qngkwo4",
"alt": "Gravestone reading:\n\nHere lies AIM\n1997 - 2017\n\"BRB LOL\""
},
{
"url": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreicfsv73pv6l5az2ktk4ltxi5izmnuuakhhiufmr2hrj4yjp2htuyq",
"thumbnail": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreicfsv73pv6l5az2ktk4ltxi5izmnuuakhhiufmr2hrj4yjp2htuyq",
"alt": "Gravestone reading:\n\nHere lies Myspace\n2003 - ?\n\"Please add me to your top 8\""
}
],
"videos": [],
"externalLink": null,
"quotedPost": null,
"isReply": false,
"replyToUrl": null,
"threadRootUrl": null,
"labels": [],
"uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3myx7vphq3s2j",
"cid": "bafyreibaaieigry2etw7p6k74hvdz53i5x6myssdqhlcaoyd3edalgiuzm",
"profile": "bsky.app",
"isRepost": false,
"repostedAt": null,
"scrapedAt": "2026-10-30T16:05:42.019Z"
}

Profile example:

{
"type": "profile",
"handle": "bsky.app",
"displayName": "Bluesky",
"did": "did:plc:z72i7hdynmk6r22z27h6tvur",
"profileUrl": "https://bsky.app/profile/bsky.app",
"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",
"banner": "https://cdn.bsky.app/img/banner/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreichzyovokfzmymz36p5jibbjrhsur6n7hjnzxrpbt5jaydp2szvna",
"followersCount": 35453171,
"followsCount": 32,
"postsCount": 901,
"listsCount": 18,
"feedsCount": 7,
"starterPacksCount": 15,
"isLabeler": false,
"verified": false,
"trustedVerifier": true,
"pinnedPostUrl": "https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l",
"accountCreatedAt": "2023-04-12T04:53:57.057Z",
"labels": [],
"scrapedAt": "2026-10-30T16:05:43.911Z"
}

A RUN_SUMMARY record in the key-value store lists results per source and any failed handles/URLs with the reason.

Pricing

Pay per result: $0.0008 per dataset item ($0.80 per 1,000) plus $0.00005 per run start. Free Apify plan credits are enough for thousands of posts. Posts skipped by filters, duplicates and failed sources are not charged. Set Max results in total or a maximum charge per run to control cost.

Limits — please read

  • Post search without login returns at most 100 posts per search term per run. Bluesky's public API blocks paging of search results for anonymous clients. To get more: split by date range (since/until), use several narrower terms, or schedule the Actor with Only new posts to collect continuously. Profile posts, followers, following, replies and user search have no such limit.
  • Only public data is available. Posts or profiles hidden by their owner for logged-out viewers, deleted posts and blocked content are not returned.
  • Counts (likes, reposts…) are a snapshot at scrape time.

This Actor reads only public data through Bluesky's official public API (public.api.bsky.app / api.bsky.app), which Bluesky provides for anyone to use without authentication, and it never logs in, posts, likes or follows. Bluesky's developer guidelines prohibit spam and automated interactions — this Actor does neither. Results can contain personal data (names, bios); you are responsible for using them lawfully (e.g. GDPR) and in line with Bluesky's Terms. If unsure, ask a lawyer.

FAQ

Do I need a Bluesky account or API key? No.

Why did my search stop at 100 posts? See Limits above — that is Bluesky's limit for anonymous search; use date ranges or monitoring.

Can I monitor a hashtag and get only new posts? Yes: searchPosts + onlyNewPosts: true, then create a Schedule (e.g. every hour). Use a different stateStoreName per monitor.

Can I get all followers of a big account? Yes, followers/following are paged without limit; use maxItems to cap cost (e.g. 100,000 followers ≈ $80).

Found a bug or need a field? Open an issue on the Actor's Issues tab — fixes are usually quick.