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

1

Bookmarked

7

Total users

4

Monthly active users

a day ago

Last modified

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

Marketing and brand teams

  • Social media monitoring — Track mentions, engagement trends, and brand sentiment on Bluesky
  • Migration tracking — Monitor audience growth as users move from X/Twitter to Bluesky
  • Content research — Analyze posting patterns, popular topics, and viral content

Agencies and research firms

  • Influencer discovery — Find relevant Bluesky accounts by follower count and engagement
  • Audience analysis — Map follower networks to understand community structure and overlaps
  • Competitive intelligence — Track competitor presence and engagement on the Bluesky platform

Research and data teams

  • Academic research — Study online discourse, information spread, and network dynamics on a decentralized platform
  • Network analysis — Export follower/following graphs for social network analysis and visualization
  • Dataset building — Create structured Bluesky datasets for ML training or analytics

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]

How much does it cost to scrape Bluesky?

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

Connect Bluesky Scraper to your workflow using Apify integrations:

  • Google Sheets — Export profiles and posts to a spreadsheet for tracking engagement trends over time
  • Slack / Discord — Get notifications when scraping finishes or when posts match specific criteria
  • Zapier / Make — Automate workflows, e.g., track new followers of a Bluesky account or save high-engagement posts
  • Webhooks — Send results to your own API endpoint for custom processing
  • Scheduled runs — Set up daily or weekly scrapes to monitor accounts or follower growth
  • Data warehouses — Pipe data to BigQuery, Snowflake, or PostgreSQL for large-scale social network analysis

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}'

Use with AI agents via MCP

Bluesky Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP). This lets you use natural language to scrape data — just ask your AI assistant and it will configure and run the scraper for you.

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/bluesky-scraper"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/bluesky-scraper"
}
}
}

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

Example prompts

Once connected, try asking your AI assistant:

  • "Get recent posts from this Bluesky profile"
  • "Search Bluesky for posts about 'web scraping'"

Learn more in the Apify MCP documentation.

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.

Q: I'm getting empty results for a handle that exists — what's wrong? A: Double-check the handle format. Bluesky handles can be either username.bsky.social or custom domains like jay.bsky.team. The scraper accepts both formats. If the handle is correct, the account may have been suspended or deleted.

Q: The follower count in the profile doesn't match the number of followers extracted — why? A: The maxResults parameter limits how many followers are returned (default: 50, max: 10,000). Set a higher maxResults to get more followers. For accounts with millions of followers, 10,000 is the maximum sample.

How is Bluesky different from Twitter/X for data scraping?

Bluesky is built on the AT Protocol, an open and federated standard that explicitly allows public data access without authentication. Unlike Twitter/X, which shut down free API access in 2023 and now charges $100/month minimum for basic API use, Bluesky's public API is free, has generous rate limits, and is designed for interoperability. This means you can extract profiles, posts, followers, and following lists with no API key, no OAuth setup, and no monthly fee. For researchers and developers who relied on Twitter data before the API changes, Bluesky is the most accessible alternative with a growing, engaged user base.

How do I track follower growth on Bluesky over time?

Set up a scheduled run using Apify Schedules with mode: "profiles" and a list of handles you want to monitor. Run daily or weekly and export the results to Google Sheets. Each run captures the current followersCount, followsCount, and postsCount for each account. By appending results over time (using the Sheets integration's append mode), you build a longitudinal dataset that shows follower trajectory — useful for tracking influencer growth, brand account momentum, or audience migration from other platforms.

Can I use Bluesky Scraper to find influencers in a niche?

Yes. Use mode: "search-people" with topic-related keywords to discover relevant Bluesky users, then switch to mode: "profiles" to fetch full follower counts and engagement metrics for those accounts. Sort the results by followersCount to rank by audience size. Combine with mode: "posts" to measure engagement rates (likes + reposts divided by followers) on recent content — this gives you a more accurate picture of influence than follower count alone. For niche communities, follower graphs via mode: "followers" let you map who follows whom and identify central nodes in a topic cluster.

What data can I extract from a Bluesky profile?

Each scraped profile includes 15 fields: handle, displayName, bio, followersCount, followsCount, postsCount, isVerified, joinedAt, indexedAt, did (the decentralized identifier), url, avatar, banner, and scrapedAt. Posts add 25+ fields including full engagement metrics: likeCount, repostCount, replyCount, quoteCount, bookmarkCount, detected hashtags, mentions, and links. This structured data is immediately usable for analytics without any parsing — the scraper handles all the AT Protocol cursor-based pagination automatically.

Is Bluesky growing fast enough to be worth scraping?

Bluesky saw explosive growth in late 2024 and early 2025 following Twitter/X policy changes, gaining tens of millions of users in months. As of 2026 it hosts over 30 million accounts and continues to grow, particularly among journalists, academics, and tech communities. For social media research, the platform offers a rare combination of open data access, a high-signal user base, and a decentralized architecture that makes data collection straightforward. Brands and researchers who established a data collection baseline early have a significant advantage as the platform's audience matures.

Other social media scrapers