Bluesky Scraper
Pricing
Pay per event
Bluesky Scraper
Extract Bluesky social network data — profiles, posts with engagement metrics, follower/following lists, and people search. Uses the open AT Protocol API, no login needed. Fast, cheap, reliable.
Pricing
Pay per event
Rating
0.0
(0)
Developer

Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape Bluesky profiles, posts, followers, and following lists using the AT Protocol public API. No login or API key required.
🦋 What does Bluesky Scraper do?
Bluesky Scraper extracts public data from the Bluesky social network via the AT Protocol API. It supports five scraping modes:
🔹 Profiles — Get full profile details: display name, bio, follower/following counts, verification status, avatar, banner, and join date 🔹 Posts — Extract a user's post feed with engagement metrics: likes, reposts, replies, quotes, bookmarks, media, links, hashtags, and mentions 🔹 Followers — Get a user's complete follower list with profile metadata 🔹 Following — Get the full list of accounts a user follows 🔹 Search people — Find Bluesky users by keyword
❓ Why use Bluesky Scraper?
🔹 No login needed — Uses Bluesky's public AT Protocol API, no credentials required 🔹 Fast and cheap — Pure HTTP API calls, no browser or proxy needed 🔹 Rich data — 15+ fields per profile, 25+ fields per post including all engagement metrics 🔹 Network mapping — Extract follower/following graphs for social network analysis 🔹 Pagination built-in — Automatically handles cursor-based pagination for large datasets
💡 Use cases
🔹 Social media monitoring — Track mentions, engagement trends, and brand sentiment on Bluesky 🔹 Influencer discovery — Find relevant Bluesky accounts by follower count and engagement 🔹 Audience analysis — Map follower networks to understand community structure 🔹 Content research — Analyze posting patterns, popular topics, and viral content 🔹 Migration tracking — Monitor audience growth as users move from X/Twitter to Bluesky 🔹 Academic research — Study online discourse, information spread, and network dynamics
📊 Sample output
Profile data
| Field | Example |
|---|---|
| handle | jay.bsky.team |
| displayName | Jay 🦋 |
| bio | CEO of Bluesky, steward of AT Protocol |
| followersCount | 595,761 |
| followsCount | 3,907 |
| postsCount | 3,966 |
| isVerified | true |
| joinedAt | 2022-11-17 |
Post data
| Field | Example |
|---|---|
| text | This was stunning |
| likeCount | 764 |
| repostCount | 77 |
| replyCount | 48 |
| quoteCount | 12 |
| bookmarkCount | 45 |
| hashtags | ["ai", "bluesky"] |
| mediaUrls | [image URLs] |
💰 Pricing
Bluesky Scraper uses pay-per-event pricing:
| Event | Price |
|---|---|
| Start (per run) | $0.005 |
| Profile scraped | $0.002 |
| Post scraped | $0.001 |
| Follower/following scraped | $0.001 |
Free plan estimate: ~50 profiles or ~200 posts per month on the Apify Free plan ($5/month platform credit).
🔢 How to scrape Bluesky
- Go to the Bluesky Scraper page on Apify
- Select your scraping mode (profiles, posts, followers, following, or search)
- Enter Bluesky handles (e.g.,
jay.bsky.team,bsky.app) - Set the maximum number of results per handle
- Click "Start" and wait for results
- Download data as JSON, CSV, Excel, or connect via API
📥 Input parameters
| Parameter | Type | Description |
|---|---|---|
| mode | string | Scraping mode: profiles, posts, followers, following, or search-people |
| handles | string[] | Bluesky handles (without @). For search mode, enter search queries |
| maxResults | number | Maximum results per handle (default: 50, max: 10,000) |
📤 Output fields
Profile output
type, did, handle, displayName, url, bio, avatar, banner, followersCount, followsCount, postsCount, isVerified, joinedAt, indexedAt, scrapedAt
Post output
type, uri, cid, url, text, createdAt, lang, likeCount, repostCount, replyCount, quoteCount, bookmarkCount, isReply, isRepost, hasMedia, mediaUrls, embedUrl, embedTitle, authorHandle, authorName, authorDid, authorAvatar, hashtags, mentions, links, scrapedAt
Follower/Following output
type, did, handle, displayName, url, avatar, bio, followersCount, followsCount, postsCount, isVerified, joinedAt, sourceHandle, scrapedAt
💡 Tips
🔹 Custom domains as handles — Some Bluesky users use custom domains (e.g., jay.bsky.team instead of username.bsky.social). Both formats work.
🔹 Skip reposts — Posts mode automatically filters out reposts to return only original content.
🔹 Large follower lists — For accounts with millions of followers, set maxResults to limit output and control costs.
🔹 Rate limits — The AT Protocol has generous rate limits. The scraper includes automatic retry with backoff for 429 responses.
🔗 Integrations
Export Bluesky data to Google Sheets, Slack, Zapier, Make, or any webhook. Connect via the Apify API for automated workflows.
💻 API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('automation-lab/bluesky-scraper').call({mode: 'profiles',handles: ['jay.bsky.team', 'bsky.app'],maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('automation-lab/bluesky-scraper').call(run_input={'mode': 'posts','handles': ['jay.bsky.team'],'maxResults': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/automation-lab~bluesky-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_TOKEN" \-d '{"mode": "followers", "handles": ["jay.bsky.team"], "maxResults": 1000}'
⚖️ Legality
Bluesky Scraper only accesses publicly available data through the official AT Protocol public API. The AT Protocol is designed as an open, decentralized protocol where public data is explicitly meant to be accessible. Always comply with applicable laws and Bluesky's terms of service when using scraped data.
❓ FAQ
Q: Do I need a Bluesky account? A: No. The AT Protocol public API allows unauthenticated access to all public profiles, posts, and social graphs.
Q: Can I search for posts by keyword?
A: Post search (app.bsky.feed.searchPosts) requires authentication on the public API. Currently only people search is supported without auth. Post search may be added in a future update.
Q: How many followers can I extract? A: Up to 10,000 per handle. For accounts with millions of followers, this provides a representative sample.
Q: Is there rate limiting? A: The AT Protocol has generous but unspecified rate limits. The scraper handles 429 responses with automatic retry and exponential backoff.
🔗 Related scrapers
🔹 Twitter/X Scraper — Scrape tweets, profiles, and search results 🔹 Threads Scraper — Scrape Meta Threads posts and profiles 🔹 Instagram Scraper — Scrape Instagram posts, reels, and profiles