Bluesky Scraper - Posts, Search, Profiles, Followers & Replies
Pricing
$1.50 / 1,000 results
Bluesky Scraper - Posts, Search, Profiles, Followers & Replies
Scrape Bluesky posts by keyword or profile, profiles, followers, follows, replies, reposts and quotes: text, author, likes, reposts, replies, quotes, images, links, hashtags and mentions. Official public API, no login.
Pricing
$1.50 / 1,000 results
Rating
0.0
(0)
Developer
Cobi Hilliard
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Bluesky Scraper: posts, search, profiles, followers, replies and quotes
Scrape Bluesky posts by keyword search or profile, plus profile details, followers, follows, replies, reposts and quote posts. For every post you get the text, author, date, like, repost, reply and quote counts, languages, images, video, link cards, quoted posts, hashtags and mentions. It uses Bluesky's official public API, so no login, no API key and no browser.
What data you get
Posts (search, profile posts, replies, quotes)
- Post URI, CID, post ID and web link (
https://bsky.app/profile/<handle>/post/<id>) - Full text, created and indexed dates (ISO 8601), languages
- Author handle, display name, DID, avatar and profile link
- Likes, reposts, replies, quotes and bookmarks
- Hashtags, mentions (handle and DID) and all links in the post
- Images (full size, thumbnail, alt text, size), video (HLS playlist, thumbnail), link card (URL, title, description)
- Quoted post with its text, author and counts
- Reply info:
isReply, parent and thread root URIs; in replies mode alsoreplyDepth - Reposts in profile feeds are flagged with
isRepost,repostedBy,repostedAt
Profiles (profile details, followers, follows, reposted by)
- DID, handle, profile link, display name, bio, avatar, banner, account creation date
- Followers, follows and post counts, number of lists, feeds and starter packs, pinned post, verification
- For followers, follows and reposters:
relation(follower,follow,reposter) andrelationTo
Sample result
{"uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3mxu3hsnebc2v","url": "https://bsky.app/profile/bsky.app/post/3mxu3hsnebc2v","postId": "3mxu3hsnebc2v","text": "saw some cool clouds today","createdAt": "2026-10-14T17:35:30.592Z","authorHandle": "bsky.app","authorDisplayName": "Bluesky","authorDid": "did:plc:z72i7hdynmk6r22z27h6tvur","likeCount": 7671,"repostCount": 414,"replyCount": 236,"quoteCount": 44,"langs": ["en"],"hashtags": [],"mentions": [],"links": [],"images": [{"url": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreidvywlo2nyrizqs7vy7rl7e4m5hedt75lxq2xcpb4rlljvtyqhck4","alt": "Photo taken from a hill showing a cloud inversion in the valley below…","width": 1200, "height": 1600}],"video": null,"externalLink": null,"quotedPost": null,"isReply": false,"isRepost": false,"source": "profilePosts:bsky.app"}
How to use
Pick a mode, then fill the matching input.
| Mode | Uses | Returns |
|---|---|---|
searchPosts | searchQueries + filters | Posts matching keywords |
profilePosts | profiles | Posts from each profile's feed |
profiles | profiles | Profile details with follower counts |
followers / follows | profiles | Accounts following / followed by each profile |
postReplies | postUrls | All replies in each post's thread |
repostedBy | postUrls | Accounts that reposted each post |
quotes | postUrls | Posts that quote each post |
| Field | What it does |
|---|---|
searchQueries | Keywords or Bluesky search syntax, e.g. climate, "open source", #bookstodon |
sort | latest or top |
since, until | Date range (YYYY-MM-DD or ISO 8601). In profile posts mode since stops at older posts |
lang, author, mentions, domain, tags | Search filters: language, posted by, mentioning, linking to a domain, hashtags |
profiles | Handles, DIDs or profile URLs, e.g. bsky.app, @jay.bsky.team |
authorFeedFilter | Profile posts: no replies, with replies, media only, video only, or posts and own threads |
includeReposts | Profile posts: also return reposts |
postUrls | https://bsky.app/profile/<handle>/post/<id> links or at:// URIs |
replyDepth | Replies mode: how deep to follow nested replies (default 10) |
enrichProfiles | Followers, follows, reposted by: add follower, follows and post counts |
maxItems | Stop after this many results in total (default 50) |
Example inputs:
{ "mode": "searchPosts", "searchQueries": ["artificial intelligence"], "sort": "latest", "lang": "en", "maxItems": 200 }
{ "mode": "profilePosts", "profiles": ["bsky.app", "https://bsky.app/profile/jay.bsky.team"], "authorFeedFilter": "posts_with_replies", "maxItems": 500 }
{ "mode": "postReplies", "postUrls": ["https://bsky.app/profile/bsky.app/post/3mxu3hsnebc2v"], "maxItems": 300 }
About search volume: Bluesky's public search returns at most 100 posts per search to logged-out clients (the next page needs an account). To collect more, use several queries or narrower filters (date range, language, author, domain, hashtags). Profile posts, followers, follows, reposts and quotes page through everything with no such cap.
Pricing
$1.50 per 1,000 results, charged only for results saved to your dataset. 2,000 posts cost about $3.00.
Use cases
- Brand and keyword monitoring: track mentions of your company, product or competitors
- Social listening and sentiment analysis on topics, hashtags and news domains
- Influencer research: find accounts in a niche and compare follower counts and engagement
- Audience analysis: export followers or follows of any public account
- Collect reply threads and quote posts to measure how a post was received
- Datasets for research, AI training and RAG pipelines
FAQ
Is it legal? The scraper only reads public data through Bluesky's official, open AppView API, the same data anyone can see on bsky.app without logging in. It does not log in or bypass any limits. Accounts that asked Bluesky to hide their content from logged-out visitors are skipped. You are responsible for how you use the data, including personal data under GDPR and similar laws.
Why are some posts or accounts missing? Deleted, blocked or moderation-hidden content is not returned, and accounts that opted out of logged-out visibility are skipped (the run log says how many).
Why can't I get the list of people who liked a post? Bluesky's public API does not serve likes to logged-out clients. Reposts and quotes are available.
Can I run it on a schedule? Yes. Use Apify Schedules to run a search daily (sort latest, since = yesterday)
and send new posts to Google Sheets, Slack, Make, Zapier or a webhook with Apify integrations.
API
Call it from any language with the Apify API or client libraries (apify-client for JavaScript and Python), or
connect it to an AI agent through the Apify MCP server.