Bluesky Scraper - Search Posts, Profiles & Followers avatar

Bluesky Scraper - Search Posts, Profiles & Followers

Pricing

from $0.69 / 1,000 posts

Go to Apify Store
Bluesky Scraper - Search Posts, Profiles & Followers

Bluesky Scraper - Search Posts, Profiles & Followers

Search Bluesky posts far past the first page: 10,000 posts for one keyword in about 2 minutes. Filter by date, language, author, mention, website or hashtag. Export profiles, followers, following, likers, reposters, liked posts and full reply threads, every field readable.

Pricing

from $0.69 / 1,000 posts

Rating

0.0

(0)

Developer

ClearPath

ClearPath

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

10,000 posts. 12,000 followers. Under 2 minutes. Richest Bluesky output on Apify.

From Clearpath, creators of Reddit Search Scraper, Reddit Post Comments Scraper and Reddit Subreddit Posts Scraper. 190,000+ combined lifetime runs across these Reddit research scrapers.

Why choose this actor?

Detailed posts. Export text, engagement counts, images, video, linked pages, reply context and author follower counts. Filter searches by date, language, author or hashtag.

Detailed profiles. Get handles, counts and public bios. Profile details add verification, past handles, lists and starter packs to the accounts you enter or find through people search. Export followers, replies and other audiences with the options you select.

Ready to use. Combine searches and profiles in one run. Download JSON, CSV or Excel for research and monitoring.

The timings come from separate recorded runs: 10,000 posts for "news" in 113 seconds, and 12,000 followers of nytimes.com in 100 seconds. Run times vary; another run of the same search took about 10 minutes. The panel illustrates collected data.

Get Bluesky data

Quick input

Try a small post search and follower export:

{
"searchPosts": [
"news"
],
"profiles": [
"nytimes.com"
],
"includeFollowers": true,
"maxItemsPerList": 20,
"includeProfileDetails": false
}

Open actor input to change the search or profile. This trial returns up to 20 posts, 20 follower profiles and the entered profile. Each saved post or profile is billed separately. Set a spending limit before running. This small trial does not reproduce the bulk timings.

Clearpath social research  •  Posts, comments & audiences
  Bluesky
➤ You are here
  Reddit Search
Keyword monitoring
  Reddit Comments
Full threads & replies
  Reddit Subreddits
Bulk subreddit feeds

Copy to your AI assistant

clearpath/bluesky-scraper on Apify returns public Bluesky data as flat rows: type "profile" (handle, did, counts, bio, verification with who verified it and when, labels with their meaning, pinned post, settings) or type "post" (text, url, likes, reposts, replies, quotes, bookmarks, author with follower counts, images, video, link card, quoted post, hashtags, mentions, reply context), each with relation saying how it was reached. Inputs, mixable in one run: profiles (handles, profile links or DIDs), searchPeople (keywords), searchPosts (keywords or Bluesky search syntax, with optional sort latest|top, since/until as dates or periods such as "7 days", language, fromAuthor, mentions, domain, hashtags matching any), postUrls, feedUrls (custom feeds), listUrls (lists and starter packs; members come back as profiles). Post search continues far past the first page (a recorded run saved 10,000 posts for "news" in about 2 minutes). For an account's posts set includePosts=true (postFilter all|noReplies|media|authorThreads|video); for followers or following includeFollowers / includeFollowing=true; for posts an account liked includeLikedPosts=true (adds likedAt); for a post's audience includeLikers (adds likedAt), includeReposters, includeQuotes; for its whole reply thread includeReplies=true (adds threadDepth, isThreadRoot, threadTruncated). These apply to listed, searched and list-member profiles and to top-level posts, are off by default, and every row they return is billed. includeProfileDetails (default true, free) adds lists, starterPacks, feeds, similarAccounts and identity (hosting, past handles, ID creation) to listed, searched and list-member profiles; set it false for faster bulk profile runs. maxItemsPerList caps each list on its own (each keyword, each profile's posts or followers, each post's replies or likers), maxItems caps the whole run; both empty mean everything, so set them or a spending limit. Deleted posts, deactivated accounts and content Bluesky hides from logged-out visitors are not returned; unreadable inputs are named in the run log. Pricing: one Post charge per saved post, $0.99 per 1,000 on the Free plan down to $0.69 on Gold; one Profile charge per saved profile, $1.49 down to $1.09; plus $0.005 per run start per GB of memory (512 MB default, one start); profile details at no extra charge; Apify adds $0.01 per 1,000 rows saved. Every input and output field and current pricing: the Input, Output and Pricing tabs at https://apify.com/clearpath/bluesky-scraper. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.

How to scrape Bluesky

Enter any mix of profiles, searches and links, one per line. Each profile and each post becomes one result row.

What you enterExampleWhat you get
Profilesjay.bsky.team, @nytimes.com, https://bsky.app/profile/bsky.app, did:plc:z72i7hdynmk6r22z27h6tvurOne full profile per entry. A bare name like alice is read as alice.bsky.social
Search peoplejournalist, climate scientistEvery account the people search returns for the keyword
Search postsweb scraping, "open source", #art, from:nytimes.comEvery matching post, newest first, as far back as the search reaches
Post linkshttps://bsky.app/profile/bsky.app/post/3l6oveex3ii2lThe post itself, plus its replies, likers, reposters or quotes when turned on
Custom feedshttps://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur/feed/whats-hotThe posts the feed shows, in feed order
Lists and starter packshttps://bsky.app/profile/nytimes.com/lists/3lbl2hyzmfy2u, https://bsky.app/starter-pack/nytimes.com/3lbugqemf5427Every member as a full profile

Up to 5,000 entries per run. An entry that cannot be read is named in the run log and skipped; the rest of the run continues.

Options

OptionDefaultWhat it does
maxItemsPerListempty (everything)Caps each list on its own: each search keyword, each profile's posts, followers, following and liked posts, each post's replies, likers, reposters and quotes, each feed, list or starter pack
maxItemsempty (no limit)Stops the whole run after this many profiles and posts together
sortlatestlatest returns newest posts first; top starts with the posts Bluesky ranks most relevant and continues with the most relevant older posts
since, untilemptyDate range for post search: 2026-09-01, a full date and time, or a period back from now such as 7 days
languageemptyPosts in one language, for example en, de, ja
fromAuthor, mentionsemptyPosts by one account, or posts that mention one account (brand monitoring)
domain, hashtagsemptyPosts linking to a website, or carrying any of the listed hashtags
includeProfileDetailstrueAdds lists, starter packs, custom feeds, similar accounts and identity history to profiles you list, find by people search, or get from a list or starter pack. No extra charge
includePostsfalseAlso returns each profile's posts, reposts and pinned post. postFilter picks everything (default), posts without replies, posts with media, posts with video, or the author's own threads
includeFollowers, includeFollowingfalseAlso returns every follower or followed account of each profile, as full profiles with counts
includeLikedPostsfalseAlso returns the posts each profile liked, newest like first, with likedAt
includeRepliesfalseAlso returns the full reply thread under each post, every level deep, with each reply's depth
includeLikers, includeReposters, includeQuotesfalseAlso returns the accounts that liked (with likedAt) or reposted each post, or the posts that quote it

Search filters apply to post search only. Every option that returns more rows is off by default, and each row it returns is charged like any other row.

More examples

Posts by one account about a topic in the last 30 days:

{
"searchPosts": [
"climate"
],
"fromAuthor": "nytimes.com",
"since": "30 days"
}

Brand monitoring: every post mentioning an account in the last 7 days, in English:

{
"searchPosts": [
"*"
],
"mentions": "bsky.app",
"language": "en",
"since": "7 days"
}

A profile with up to 1,000 of its posts and 1,000 of its followers:

{
"profiles": [
"nytimes.com"
],
"includePosts": true,
"includeFollowers": true,
"maxItemsPerList": 1000
}

One post with its whole reply thread and everyone who liked it:

{
"postUrls": [
"https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l"
],
"includeReplies": true,
"includeLikers": true
}

Every member of a starter pack, as full profiles:

{
"listUrls": [
"https://bsky.app/starter-pack/nytimes.com/3lbugqemf5427"
]
}

The third example caps each list at 1,000, so it returns at most 1,000 posts and 1,000 followers. Leave maxItemsPerList empty for everything, and set a spending limit for the run.

What data can you extract from Bluesky?

Every row has type (profile or post) and relation, which says how it was reached: input, search, follower, following, liker, reposter, listMember, starterPackMember, authorPost, postUrl, feed, likedBy, quote or reply. input, searchQuery, sourceHandle and sourcePostUrl tie each row back to what you entered.

  • Profiles: handle, permanent account ID, display name, bio, avatar, banner, follower, following and post counts, account creation date, pronouns, website, verification (who verified the account and when, and whether it can verify others), labels with their meaning, pinned post, live status, chat and notification settings with readable labels, the starter pack the account joined through, and the number of lists, feeds and starter packs it created.
  • Profile details (on by default, for profiles you name, search, or get from a list or starter pack): the account's lists, starter packs and custom feeds (up to 100 of each; listsCount, starterPacksCount and feedsCount give the totals, and a list link returns any list in full), accounts similar to it, and its identity history: where the account is hosted, whether Bluesky hosts it, when its ID was created and every handle it has used.
  • Posts: text, link, creation and indexing time, languages, likes, reposts, replies, quotes, bookmarks, the author with follower, following and post counts, images and videos with alt text and dimensions, link card, quoted post, hashtags, mentions with handles, links, labels with their meaning, who can reply, reply context, repost and pin markers.

A profile row (nytimes.com, profile details on). similarAccounts held 50 entries; two are shown:

{
"type": "profile",
"relation": "input",
"input": "https://bsky.app/profile/nytimes.com",
"searchQuery": null,
"sourceHandle": null,
"sourcePostUrl": null,
"likedAt": null,
"did": "did:plc:eclio37ymobqex2ncko63h4r",
"handle": "nytimes.com",
"displayName": "The New York Times",
"description": "We seek the truth and help people understand the world. Not a subscriber? Your first month is now free in our app. https://nytimes.onelink.me/Xpht/zbx4nci9",
"url": "https://bsky.app/profile/nytimes.com",
"avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:eclio37ymobqex2ncko63h4r/bafkreidvvqj5jymmpaeklwkpq6gi532el447mjy2yultuukypzqm5ohfju",
"banner": "https://cdn.bsky.app/img/banner/plain/did:plc:eclio37ymobqex2ncko63h4r/bafkreidlzzmt7sy2n6imz5mg7siygb3cy4e526nvbjucczeu5cutqro5ni",
"followersCount": 1350895,
"followsCount": 123,
"postsCount": 44066,
"createdAt": "2023-06-05T18:50:31.498Z",
"indexedAt": "2026-08-03T12:35:56.360Z",
"pronouns": null,
"website": null,
"isVerified": true,
"verification": {
"status": "valid",
"statusLabel": "Verified",
"isTrustedVerifier": true,
"verifiedBy": [
{
"did": "did:plc:z72i7hdynmk6r22z27h6tvur",
"handle": "bsky.app",
"displayName": "Bluesky",
"createdAt": "2025-04-21T10:46:44.369Z",
"isValid": true,
"recordUri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.graph.verification/3lndptszmee2u"
}
]
},
"labels": [],
"listsCount": 2,
"feedsCount": 0,
"starterPacksCount": 1,
"isLabeler": false,
"chatAllowIncoming": "none",
"chatAllowIncomingLabel": "No one",
"chatAllowGroupInvites": "none",
"chatAllowGroupInvitesLabel": "No one",
"activitySubscriptions": "followers",
"activitySubscriptionsLabel": "Followers",
"germMessaging": null,
"pinnedPost": null,
"joinedViaStarterPack": null,
"liveStatus": null,
"identity": {
"didMethod": "plc",
"didMethodLabel": "Bluesky's public account directory",
"pdsHost": "enoki.us-east.host.bsky.network",
"hostedByBluesky": true,
"didCreatedAt": "2023-06-05T18:50:31.498Z",
"handleHistory": [
{
"handle": "tempnyt.bsky.social",
"since": "2023-06-05T18:50:31.498Z"
},
{
"handle": "nytimes.com",
"since": "2023-06-05T19:24:25.280Z"
}
]
},
"lists": [
{
"uri": "at://did:plc:eclio37ymobqex2ncko63h4r/app.bsky.graph.list/3lbl2hyzmfy2u",
"url": "https://bsky.app/profile/nytimes.com/lists/3lbl2hyzmfy2u",
"name": "NYT on Bluesky",
"description": "Our reporters, editors and photographers on Bluesky.",
"purpose": "curatelist",
"purposeLabel": "Curated list of accounts",
"memberCount": 246,
"avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:eclio37ymobqex2ncko63h4r/bafkreigj2g54lvb2i4kid75m2i5z3qw33nn7yjm77ywvdx2ho3fp7bwxsi",
"creatorHandle": "nytimes.com",
"indexedAt": "2024-12-06T14:53:18.862Z",
"labels": []
}
],
"starterPacks": [
{
"uri": "at://did:plc:eclio37ymobqex2ncko63h4r/app.bsky.graph.starterpack/3lbugqemf5427",
"url": "https://bsky.app/starter-pack/nytimes.com/3lbugqemf5427",
"name": "NYT on Bluesky",
"description": "Our reporters, editors and photographers on Bluesky.",
"memberCount": 152,
"joinedThisWeek": 0,
"joinedAllTime": 2,
"createdAt": "2024-11-26T16:16:40.993Z",
"creatorHandle": "nytimes.com",
"indexedAt": "2025-06-04T21:13:37.148Z"
}
],
"feeds": [],
"similarAccounts": [
{
"did": "did:plc:i3fhjvvkbmirhyu4aeihhrnv",
"handle": "wsj.com",
"displayName": "The Wall Street Journal",
"description": "Since 1889 🗞️\n\nSign up for our newsletters and alerts: http://wsj.com/newsletters\nGot a tip? http://wsj.com/tips\nFollow our staff: https://go.bsky.app/2ppWqxF",
"avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:i3fhjvvkbmirhyu4aeihhrnv/bafkreia4sbyxnecbgloskaa5ziul6sry6jj5ruujno67a27z6ssjhferni",
"url": "https://bsky.app/profile/wsj.com",
"isVerified": true
},
{
"did": "did:plc:4llrhdclvdlmmynkwsmg5tdc",
"handle": "atrupar.com",
"displayName": "Aaron Rupar",
"description": "Independent journalist, SnapStream brand ambassador, and publisher of the Public Notice newsletter https://www.publicnotice.co/subscribe",
"avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:4llrhdclvdlmmynkwsmg5tdc/bafkreibmhm3h6ar52pogvolisrzjdhwa2myras5vkxzj67twxn2l6pogwu",
"url": "https://bsky.app/profile/atrupar.com",
"isVerified": true
}
],
"scrapedAt": "2026-10-09T07:16:21.341Z"
}

A post row from a search for "news":

{
"type": "post",
"relation": "search",
"input": "news",
"searchQuery": "news",
"sourceHandle": null,
"sourcePostUrl": null,
"uri": "at://did:plc:njdpt3vjbjbifq5fxofeet2x/app.bsky.feed.post/3mxged67zik2t",
"cid": "bafyreigix4abz6voxlip3uqob5tmmoewd3yn3vkex2mggn4pnpba3mcel4",
"id": "3mxged67zik2t",
"url": "https://bsky.app/profile/sightmagazine.bsky.social/post/3mxged67zik2t",
"text": "Keeping global temperature gain in check is a matter of survival, COP31 president says @sightmagazine.bsky.social #COP31 #MuratKurum #Fiji #Turkey #climatechange \n\nsightmagazine.com.au/news/keeping...",
"createdAt": "2026-10-09T06:36:42.306Z",
"indexedAt": "2026-10-09T06:36:46.060Z",
"sortAt": "2026-10-09T06:36:42.306Z",
"lang": "en",
"langs": [
"en"
],
"likeCount": 0,
"repostCount": 0,
"replyCount": 0,
"quoteCount": 0,
"bookmarkCount": 0,
"engagementTotal": 0,
"authorDid": "did:plc:njdpt3vjbjbifq5fxofeet2x",
"authorHandle": "sightmagazine.bsky.social",
"authorDisplayName": "Sight Magazine",
"authorAvatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:njdpt3vjbjbifq5fxofeet2x/bafkreiemzxsio3itmknmldivdxhk2h64etisxb3i7weowb7iwglngylvgq",
"authorIsVerified": false,
"authorCreatedAt": "2024-11-20T03:45:28.071Z",
"authorLabels": [],
"authorFollowersCount": 234,
"authorFollowsCount": 3,
"authorPostsCount": 10702,
"isReply": false,
"replyParentUri": null,
"replyRootUri": null,
"replyParentUrl": null,
"replyRootUrl": null,
"authorThreadIndex": null,
"authorThreadCount": null,
"isRepost": false,
"repostedBy": null,
"repostedAt": null,
"isPinned": false,
"isQuote": false,
"quotedPost": null,
"embeddedRecord": null,
"hasEmbed": true,
"hasMedia": false,
"mediaCount": 0,
"mediaUrls": [],
"images": [],
"videos": [],
"externalLink": {
"url": "https://sightmagazine.com.au/news/keeping-global-temperature-gain-in-check-is-a-matter-of-survival-cop31-president-says/",
"title": "Keeping global temperature gain in check is a matter of survival, COP31 president says - Sight Magazine",
"description": "Restricting global warming is a matter of survival and too many countries are shirking their responsibility to cut emissions, Murat Kurum said",
"thumb": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:njdpt3vjbjbifq5fxofeet2x/bafkreickbludlx5sixjhwvdfnpugbr45jiihywxgddsmulcaqai6dk3k5m"
},
"hashtags": [
"COP31",
"MuratKurum",
"Fiji",
"Turkey",
"climatechange"
],
"mentions": [
{
"did": "did:plc:njdpt3vjbjbifq5fxofeet2x",
"handle": "sightmagazine.bsky.social"
}
],
"links": [
"https://sightmagazine.com.au/news/keeping-global-temperature-gain-in-check-is-a-matter-of-survival-cop31-president-says/"
],
"labels": [],
"whoCanReply": null,
"hiddenReplies": [],
"likedAt": null,
"threadDepth": null,
"isThreadRoot": null,
"threadTruncated": null,
"scrapedAt": "2026-10-09T07:19:31.961Z"
}

Fields that appear only on some rows, with real values:

FieldFilled onExample
isRepost, repostedBy, repostedAtReposts in a profile's posts or a feed"repostedBy": {"did": "did:plc:z72i7hdynmk6r22z27h6tvur", "handle": "bsky.app", "displayName": "Bluesky", "repostUri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.repost/3mxfsi72lu72j", "repostCid": "bafyreicf3gg36ipogxrckj2irx2ncmokgnnstba334ql33szs3anl2y34q"}
isPinnedThe pinned post in a profile's poststrue
threadDepth, isThreadRoot, threadTruncatedPosts with Replies on, and their replies"threadDepth": 2 on a reply two levels down; threadTruncated is true when the run's limits leave replies out
likedAtLiked posts, and likers (when they liked the post)"likedAt": "2026-10-06T19:08:39.867Z"
authorThreadIndex, authorThreadCountProfile and feed posts that belong to their author's own thread"authorThreadIndex": 1, "authorThreadCount": 4
hiddenRepliesPosts whose author hid replies[{"uri": "at://did:plc:osg2vzhifd2tjfsvfwua7scy/app.bsky.feed.post/3mx5jquevnk2n", "url": "https://bsky.app/profile/did:plc:osg2vzhifd2tjfsvfwua7scy/post/3mx5jquevnk2n"}]
quotedPostQuote poststhe quoted post's text, author, counts, media, hashtags and labels
whoCanReplyPosts whose author limits replies[{"rule": "mentionRule", "label": "Mentioned users"}, {"rule": "followingRule", "label": "People they follow"}, {"rule": "followerRule", "label": "Their followers"}]
embeddedRecordPosts that embed a feed, list or starter pack"kind": "starterPack", with its name, link and counts

Values the source does not have are null, never invented: some accounts hosted outside Bluesky have no creation date, and a reply whose earlier post was deleted has no known depth. JSON keeps every nested field; CSV and Excel flatten nested objects into columns.

How much does it cost to scrape Bluesky?

You pay per row saved, plus a small fee when the run starts. Profile details add no charge.

EventWhen chargedPrice
PostOnce for each post saved (post links, search results, profile posts, feed posts, liked posts, quotes and replies)$0.99 per 1,000
ProfileOnce for each profile saved (profiles you list, people search results, followers, following, likers, reposters, list and starter pack members)$1.49 per 1,000
Actor startOnce per run, per GB of memory (default 512 MB: one start)$0.005

Discounts by Apify plan, per 1,000: posts $0.99 on Free, $0.89 on Bronze, $0.79 on Silver, $0.69 on Gold and above; profiles $1.49, $1.39, $1.29 and $1.09. Apify also charges $0.01 per 1,000 rows saved (dataset item fee).

Typical runs on the Free plan: 100 search posts, about $0.11 with the start fee; 10,000 search posts, about $10.01; one profile with 1,000 followers, about $1.51. Set maxItems, maxItemsPerList or a spending limit to cap any run. A run that reaches its spending limit stops and keeps every row it saved.

FAQ

Do I need a Bluesky account, app password or developer key? No. Enter profiles, keywords or links and run. Nothing to log in to, no cookie, no key.

Can I search Bluesky posts without an account? Yes. Bluesky's own website asks you to sign in to search; this actor searches without one. Filter by date, language, author, mentioned account, linked website or hashtags, and use Bluesky's search syntax such as from:nytimes.com or #art.

How many posts can one search return? Every match the search reaches, newest first, far past the first page. A recorded run saved 10,000 unique posts for "news" in about 2 minutes. Searching * with only filters (for example mentions) works too; for one account's full post history, use Profiles with Profile posts.

Can I export all followers or following of an account? Yes, every one the source lists, with full profiles and counts. There is no 10,000 cap. A recorded run saved 12,000 followers of nytimes.com in about 2 minutes. The default one-hour run limit covers roughly 300,000 followers at that rate; the run stops just before its limit and keeps every row, so for larger accounts set a per-list limit or raise the run timeout.

Can I get who liked, reposted or quoted a post, and the full reply thread? Yes. Turn on Likers, Reposters, Quote posts or Replies. Replies cover the whole thread, every level deep, with each reply's depth and parent. A recorded run returned 6,647 replies under a single post.

Can I see which posts an account liked? Yes, with Liked posts on. Each liked post comes with likedAt.

How do I track follower growth or brand mentions over time? Schedule the actor (daily or hourly) with relative dates such as since: "1 day". Every run adds a dated snapshot of counts or new mentions to its own dataset.

Is this the firehose? No. It collects on demand: each run fetches what you ask for. Schedule it for monitoring.

Why are some accounts or posts missing? Deleted posts, suspended or deactivated accounts and content Bluesky does not show to logged-out visitors are not returned. Names that cannot be found are listed in the run log with suggestions.

How do I use it from my own code or an AI agent? Run it from the Apify Console, on a schedule, from n8n, Make or Zapier, with the Apify client for Python or JavaScript, or through Apify's MCP server, then read the dataset when the run finishes.

More Clearpath scrapers for Reddit

Also from the same studio (name, then account/slug for the URL https://apify.com/account/slug):

  • Reddit Answers API (clearpath/reddit-answers-api)
  • Reddit to LLM (clearpath/reddit-to-llm-api)

Full directory: Clearpath on Apify

Support

Found a bug or need a field? Open an issue in the Issues tab, or email max@mapa.slmail.me.

This actor is independent and not affiliated with Bluesky. It collects data Bluesky makes publicly available; you are responsible for how you use it.