Bluesky Scraper avatar

Bluesky Scraper

Pricing

Pay per event

Go to Apify Store
Bluesky Scraper

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

Stas Persiianenko

Maintained by Community

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

FieldExample
handlejay.bsky.team
displayNameJay 🦋
bioCEO of Bluesky, steward of AT Protocol
followersCount595,761
followsCount3,907
postsCount3,966
isVerifiedtrue
joinedAt2022-11-17

Post data

FieldExample
textThis was stunning
likeCount764
repostCount77
replyCount48
quoteCount12
bookmarkCount45
hashtags["ai", "bluesky"]
mediaUrls[image URLs]

💰 Pricing

Bluesky Scraper uses pay-per-event pricing:

EventPrice
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

  1. Go to the Bluesky Scraper page on Apify
  2. Select your scraping mode (profiles, posts, followers, following, or search)
  3. Enter Bluesky handles (e.g., jay.bsky.team, bsky.app)
  4. Set the maximum number of results per handle
  5. Click "Start" and wait for results
  6. Download data as JSON, CSV, Excel, or connect via API

📥 Input parameters

ParameterTypeDescription
modestringScraping mode: profiles, posts, followers, following, or search-people
handlesstring[]Bluesky handles (without @). For search mode, enter search queries
maxResultsnumberMaximum 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 ApifyClient
client = 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().items
print(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.

🔹 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