# Bluesky Profile Scraper — Profiles, Followers & Following (`cooki/bluesky-profile-scraper`) Actor

Scrape Bluesky user profiles with follower counts, bios, and full follower/following lists as clean JSON. Batch input, no login required. Built for influencer research, audience analysis, and lead lists.

- **URL**: https://apify.com/cooki/bluesky-profile-scraper.md
- **Developed by:** [Isaiah Duncan](https://apify.com/cooki) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 profile records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Bluesky Profile Scraper — Profiles, Followers & Following

Extract **Bluesky user profiles** in bulk: display name, bio, follower/following/post counts, avatar, and creation date, plus optional **full follower and following lists**, as clean JSON. No Bluesky login, no API keys. Paste handles (or profile URLs) and run.

Bluesky has 27M+ monthly active users and an open data protocol, making it the easiest major social network to analyze. Most audience-research tools don't cover it yet.

### What data does it return?

**Profile records:**

```json
{
    "type": "profile",
    "handle": "bsky.app",
    "displayName": "Bluesky",
    "description": "The official Bluesky account…",
    "followersCount": 33970246,
    "followsCount": 10,
    "postsCount": 800,
    "createdAt": "2023-04-12T04:53:57Z",
    "url": "https://bsky.app/profile/bsky.app"
}
```

**Follower / following records** (when enabled): the same fields for every account in the list, with `sourceProfile` telling you whose audience they belong to.

### Use cases

- **Influencer research**: audit creators' real follower counts, bios, and audiences before partnering.
- **Audience analysis**: export who follows a competitor and what they describe themselves as.
- **Lead lists**: mine bios of a niche account's followers for roles, keywords, and links.
- **Growth tracking**: schedule weekly runs and chart follower counts over time.
- **AI pipelines**: clean JSON ready for RAG, enrichment, or scoring; works as an MCP tool in AI agents.

### Quick start

1. Paste one or more **handles** (`brand.bsky.social`), DIDs, or profile URLs.
2. Optionally enable **followers** and/or **following** export and set a cap.
3. Run, then export the dataset as JSON or CSV, or fetch it via API.

Pairs well with the [Bluesky Mentions Scraper](https://apify.com/cooki/bluesky-mentions-scraper): find who talks about your brand, then profile those authors and their audiences.

### Works inside AI agents (MCP)

This Actor is available as an **MCP tool** through the [Apify MCP server](https://mcp.apify.com). Connect it to Claude, Cursor, or any MCP client and your agent can pull Bluesky profiles on demand.

### More tools by this developer

- [Bluesky Mentions Scraper](https://apify.com/cooki/bluesky-mentions-scraper): track brand & keyword mentions with sentiment and engagement data.
- [AI Brand Visibility Tracker](https://apify.com/cooki/ai-brand-visibility-tracker): check whether ChatGPT, Perplexity & Gemini mention your brand.

### FAQ

**Does it need my Bluesky account?** No. It reads public profiles through Bluesky's open AT Protocol API.

**How many profiles can I scrape?** Batches of thousands work fine; profiles are fetched 25 at a time and follower lists paginate 100 per page.

**Is this legal?** It collects only public profile data via Bluesky's public API. You're responsible for complying with applicable laws and Bluesky's terms when using the data.

# Actor input Schema

## `handles` (type: `array`):

Profiles to scrape, e.g. bsky.app or did:plc:… — one per line. Profile URLs (https://bsky.app/profile/…) work too.

## `includeFollowers` (type: `boolean`):

Also export who follows each profile (as separate 'follower' records).

## `includeFollowing` (type: `boolean`):

Also export who each profile follows (as separate 'following' records).

## `maxConnectionsPerProfile` (type: `integer`):

Cap on exported followers and following per profile (each list separately).

## Actor input object example

```json
{
  "handles": [
    "bsky.app"
  ],
  "includeFollowers": false,
  "includeFollowing": false,
  "maxConnectionsPerProfile": 200
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "handles": [
        "bsky.app"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cooki/bluesky-profile-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "handles": ["bsky.app"] }

# Run the Actor and wait for it to finish
run = client.actor("cooki/bluesky-profile-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "handles": [
    "bsky.app"
  ]
}' |
apify call cooki/bluesky-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=cooki/bluesky-profile-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6euFYpei0sqqT5mCV/builds/Wof9PTHLsoAsQRnyC/openapi.json
