Bluesky Scraper – Posts, Search, Profiles & Followers
Pricing
from $0.80 / 1,000 posts
Bluesky Scraper – Posts, Search, Profiles & Followers
Bluesky scraper without login: search posts, author feeds, profiles, followers and follows, custom feeds and lists, full reply threads and trending topics. Flat output with likes, reposts, replies, quotes, hashtags, mentions, links, images and video.
Pricing
from $0.80 / 1,000 posts
Rating
0.0
(0)
Developer
Enes Bulanık
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Bluesky scraper without login: search posts, author feeds, profiles, followers and follows, custom feeds and lists, full reply threads and trending topics. Flat output with likes, reposts, replies, quotes, hashtags, mentions, links, images and video.
Price: $0.80 per 1,000 posts, $1 per 1,000 profiles. No start fee, and inputs that fail are never charged.
What does Bluesky Scraper do?
It reads Bluesky's public AT Protocol API (the same open API the Bluesky app uses) – no account, no API key, no browser:
| Mode | What you get |
|---|---|
searchPosts | Posts matching a keyword, phrase, #hashtag, from:handle or domain: – sort by latest or top, filter by date and language |
authorFeed | All posts of one or more accounts (optionally replies, media-only or reposts) |
profiles | Profile details: followers, following, posts count, bio, avatar, verified badge, join date. Or search profiles by keyword |
followers / follows | The account (with counts) plus the list of its followers / followed accounts |
customFeed | Posts from any custom feed (e.g. "Discover", "What's Hot") or list feed |
postThread | A post and all its replies, flattened with threadDepth |
trending | Bluesky's current trending topics (rank, category, status, post count) – optionally with top posts per topic |
Why use this Bluesky scraper?
- All modes in one Actor – no need to combine three different scrapers. Trending topics, custom feeds and threads are included.
- No login needed – everything uses public data. An optional app password is only used if Bluesky ever blocks anonymous search.
- Search past the first page – "latest" search results are paged back through time, beyond the first page Bluesky serves to anonymous users.
- Flat output – one row per post, with engagement counts as integers and embeds unpacked into simple columns.
- Plain API calls – about 100 posts per request, so 1,000 posts take a few seconds and cost $0.80.
Use cases
- Social listening & brand monitoring – track mentions of your brand, product or hashtag.
- Trend research & journalism – collect what's trending and the posts behind it.
- Influencer & audience analysis – profile stats, follower lists, engagement per post.
- Academic research & NLP datasets – build corpora of public posts by keyword, language and date.
- Community & feed analytics – measure what a custom feed or list surfaces.
- AI agents – give an LLM a Bluesky search tool that returns current posts.
How to use it
- Choose What to scrape (mode).
- Fill in the matching field: Search query, Handles, Feed URLs or Post URLs (trending needs nothing).
- Set Max items per input and optional filters (sort, since/until, language).
- Click Start and download JSON, CSV or Excel, or use the API.
Input
| Field | Type | Used by | Description |
|---|---|---|---|
mode | string | all | searchPosts (default), authorFeed, profiles, followers, follows, customFeed, postThread, trending |
query | string | searchPosts, profiles | Search text. Supports "phrases", #tags, from:, mentions:, domain:. Default artificial intelligence. |
handles | array | authorFeed, profiles, followers, follows | jay.bsky.team, @jay.bsky.team, https://bsky.app/profile/... or a DID |
feedUrls | array | customFeed | https://bsky.app/profile/<handle>/feed/<name>, .../lists/<id> or at:// URIs |
postUrls | array | postThread | https://bsky.app/profile/<handle>/post/<id> |
maxItems | integer | all | Max results per query / handle / feed / thread. Default 50. |
sort | string | searchPosts | latest (default) or top |
since / until | string | searchPosts, authorFeed, customFeed | 2025-01-31 or relative 7 days |
lang | string | searchPosts | Language code, e.g. en |
authorFeedFilter | string | authorFeed | posts_and_author_threads (default), posts_no_replies, posts_with_replies, posts_with_media, posts_with_video |
includeReposts | boolean | authorFeed | Include reposts. Default false. |
postsPerTrend | integer | trending | Also fetch N posts per trending topic. Default 0. |
blueskyHandle / blueskyAppPassword | string | searchPosts | Optional login (app password, stored as a secret). Normally not needed. |
Example – search:
{"mode": "searchPosts","query": "#photography","sort": "latest","since": "7 days","lang": "en","maxItems": 500}
Example – followers of two accounts:
{"mode": "followers","handles": ["bsky.app", "https://bsky.app/profile/jay.bsky.team"],"maxItems": 1000}
Output
Every item has itemType: post, profile, trend, error or status. Real samples (shortened):
Post
{"itemType": "post","uri": "at://did:plc:kwxpje5qog6wwndagwbssatp/app.bsky.feed.post/3mviutosqmk2t","url": "https://bsky.app/profile/avclub.com/post/3mviutosqmk2t","authorHandle": "avclub.com","authorDisplayName": "The A.V. Club","authorDid": "did:plc:kwxpje5qog6wwndagwbssatp","text": "Less than 4 hours until the #Emmys kick off! You can keep up with all the commentary, winners, joy—and, let's face it, disappointment—via our Emmys Watch feed right here on @bsky.app. ...","createdAt": "2026-09-14T19:47:12.655Z","likeCount": 538,"repostCount": 39,"replyCount": 32,"quoteCount": 4,"bookmarkCount": 26,"langs": ["en"],"hashtags": ["Emmys"],"mentions": ["bsky.app"],"links": ["https://bsky.app/profile/avclub.com/feed/emmys-watch-r"],"embedType": "images","images": [{ "url": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:kwxpje5qog6wwndagwbssatp/bafkreicwxzp6...", "thumbnailUrl": "https://cdn.bsky.app/img/feed_thumbnail/plain/...", "alt": null }],"videoUrl": null,"externalUrl": null,"quotedPostUrl": null,"isReply": false,"isRepost": true,"repostedByHandle": "bsky.app","threadDepth": null,"labels": [],"source": "authorFeed","input": "bsky.app","scrapedAt": "2026-10-07T19:17:11.763Z"}
Profile
{"itemType": "profile","did": "did:plc:z72i7hdynmk6r22z27h6tvur","handle": "bsky.app","displayName": "Bluesky","description": "official Bluesky account (check username👆)\n\nBugs, feature requests, feedback: support@bsky.app","url": "https://bsky.app/profile/bsky.app","followersCount": 35180843,"followsCount": 15,"postsCount": 866,"createdAt": "2023-04-12T04:53:57.057Z","verified": false,"relation": "profile","relatedTo": null}
Trending topic
{"itemType": "trend","rank": 1,"topic": "Inktober 2026 day 7: panic","description": "Artists share ink drawings for the seventh prompt, wrapping up the challenge's first week.","category": "culture","status": "trending","postCount": 28356,"url": "https://bsky.app/profile/did:plc:qrz3lhbyuxbeilrc6nekdqme/feed/24cc588fc536","feedUri": "at://did:plc:qrz3lhbyuxbeilrc6nekdqme/app.bsky.feed.generator/24cc588fc536"}
Other post fields: videoUrl (HLS .m3u8), videoThumbnail, externalTitle/externalDescription (link card), quotedPostUri/quotedPostText/quotedAuthorHandle, replyParentUri, replyRootUri, isPinned, threadRootUri, trendTopic.
Followers / follows rows (relation: "follower" / "follow", relatedTo: <account>) contain handle, name, bio, avatar and join date. Bluesky does not return per-follower counts in lists – run the profiles mode on them if you need counts.
Errors are free: NOT_FOUND, INVALID_INPUT, UNAVAILABLE, FEED_UNAVAILABLE (personalized or offline feed), AUTH_REQUIRED, SCRAPE_FAILED, NO_RESULTS.
The dataset has views: Posts, Media & links, Profiles, Trending topics and Errors & status.
Pricing
Pay-per-event – you only pay for results.
| Event | Price | Charged for |
|---|---|---|
post | $0.0008 ($0.80 / 1,000) | Each post, and each trending-topic row |
profile | $0.001 ($1 / 1,000) | Each profile, follower or follow row |
| Errors / status rows | Free | Unknown handles, invalid URLs, offline feeds, empty results |
| Job | Cost |
|---|---|
| 1,000 search results | $0.80 |
| Profiles of 100 accounts | $0.10 |
| 10,000 followers of an account | $10.00 |
| 25 trending topics + 10 posts each | 275 × $0.0008 = $0.22 |
Set Max cost per run in the run options – the Actor stops exactly at your budget.
Use with AI agents (MCP)
Use this Actor as a tool in Claude, ChatGPT, Cursor or any MCP client via the Apify MCP server: https://mcp.apify.com?tools=openharvest/bluesky-scraper. Agents can also find it with search-actors ("Bluesky posts", "Bluesky trending").
Example call-actor input:
{"mode": "searchPosts","query": "from:nytimes.com climate","sort": "top","maxItems": 20}
Or ask for what's trending right now:
{ "mode": "trending", "maxItems": 10, "postsPerTrend": 3 }
FAQ
Do I need a Bluesky account? No. All modes use public, unauthenticated API endpoints. The optional app password is only a fallback for post search, in case Bluesky starts requiring login for it. Never enter your main password – create an app password in Bluesky Settings → Privacy and security → App passwords.
How many search results can I get?
With sort: latest, the Actor pages back through time until maxItems is reached or the results run out. With sort: top, Bluesky serves only the first ~100 results anonymously; add an app password to page further.
Why does a custom feed return FEED_UNAVAILABLE?
Some feeds are personalized ("Following", "Popular with Friends") and need a logged-in viewer, or the feed's own server is offline. Public feeds like "Discover"/"What's Hot" work.
Can I get emails or phone numbers? No. Bluesky profiles don't expose them and this Actor doesn't try to collect personal contact data.
Does it get deleted or private posts? No. Bluesky has no private posts; deleted posts and blocked/taken-down accounts are not returned.
Can I run it on a schedule?
Yes – e.g. searchPosts with since: "1 day" every day, or trending every hour.
Is it legal to scrape Bluesky?
This Actor only reads public data from Bluesky's open AT Protocol API, which Bluesky provides for third-party apps and research. It does not log in by default, does not access private data and does not collect contact details. Posts are still personal data and copyrighted content of their authors: comply with GDPR and similar laws, respect Bluesky's Terms of Service and developer guidelines, honour deletions, and never use the data for spam, harassment or unsolicited messaging. If unsure, consult a lawyer.
Related actors
- Telegram Channel Scraper – Posts, Messages & Views, No Login
- Hacker News Scraper – Stories, Comments & Who Is Hiring Jobs
- Substack Scraper – Newsletter Posts, Full Text & Comments
- Weibo Scraper – Hot Search, Trending Posts, Comments & Profiles
Support & feedback
Found a bug or need a field? Open an issue in the Issues tab – feature requests are welcome.