# Bluesky Profile Details Scraper (`ecomscrape/bluesky-profile-details-scraper`) Actor

Bluesky Profile Details Scraper automates extraction of comprehensive user profile data from the decentralized social network. Efficiently collect follower counts, post metrics, profile descriptions, and account metadata for social media analysis, influencer research, and community mapping.

- **URL**: https://apify.com/ecomscrape/bluesky-profile-details-scraper.md
- **Developed by:** [ecomscrape](https://apify.com/ecomscrape) (community)
- **Categories:** Automation, Developer tools, Social media
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Contact

If you encounter any issues or need to exchange information, please feel free to contact us through the following link:
[My profile](https://apify.com/ecomscrape)

## Bluesky Profile Details Scraper: Extract Decentralized Social Media Data


### Introduction

Bluesky (bsky.app) is a rapidly growing decentralized social media platform built on the AT Protocol, positioning itself as an open alternative to traditional centralized social networks. As a Twitter/X alternative that emphasizes user control and federation, Bluesky has attracted millions of users including journalists, content creators, politicians, organizations, and early adopters of decentralized technologies.

For social media analysts, marketers, researchers, and brands, accessing structured profile data from Bluesky is essential for understanding this emerging platform's ecosystem. The Bluesky Profile Details Scraper automates extraction of comprehensive user profile information, enabling systematic analysis that manual data collection cannot achieve at scale.

### Scraper Overview

The Bluesky Profile Details Scraper systematically extracts detailed user profile information from bsky.app, including account metadata, engagement metrics, profile descriptions, and visual assets. It's valuable for social media marketers analyzing influencer profiles, researchers studying decentralized social networks, brands monitoring competitive presence, and data analysts mapping Bluesky's growing community.


### Input Configuration

Example url 1: https://bsky.app/profile/theliamnissan.bsky.social

Example url 2: https://bsky.app/profile/nbcnews.com/

Example url 3: https://bsky.app/profile/politico.com
    
Example Screenshot of product information page:
    
![](https://i.ibb.co/v4sNFjBm/Screenshot-from-2026-04-08-17-16-38.png)

#### Input Format
```json
{
  "urls": [
    "https://bsky.app/profile/politico.com"
  ],
  "ignore_url_failures": true
}
````

**The `urls` parameter**: Add profile URLs from bsky.app. You can paste URLs individually or use bulk edit for prepared lists. URLs should be direct links to user profiles (e.g., `https://bsky.app/profile/username.bsky.social` or `https://bsky.app/profile/customdomain.com`).

**The `ignore_url_failures` parameter**: If `true`, the scraper continues even if some URLs fail to load. Essential for large-scale profile extraction where individual profiles may be deleted, suspended, or temporarily unavailable.

#### Output Format

```json
[
  {
  "did": "did:plc:yf6hctt2ug3qyfty4in64yob",
  "handle": "politico.com",
  "display_name": "Politico",
  "avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:yf6hctt2ug3qyfty4in64yob/bafkreid3rrarj36xsctgqpt7wlr2iv7yuzo3vixvtgxk4ryzx2pdnunfwu",
  "associated": {
    "lists": 1,
    "feedgens": 0,
    "starter_packs": 1,
    "labeler": false,
    "activity_subscription": {
      "allow_subscriptions": "followers"
    }
  },
  "labels": [],
  "created_at": "2023-04-28T22:40:12.228Z",
  "description": "Nobody knows politics and policy like we do.\nwww.politico.com",
  "indexed_at": "2026-04-07T16:02:29.147Z",
  "banner": "https://cdn.bsky.app/img/banner/plain/did:plc:yf6hctt2ug3qyfty4in64yob/bafkreiadl2hgmojpvqgwycuhpmkz6uwt4uqmb5bkkus52kuwdml7z47qi4",
  "followers_count": 473071,
  "follows_count": 88,
  "posts_count": 8875,
  "pinned_post": {
    "cid": "bafyreiffgi77pzfm4lcmblh3jitqh7g47yln4a3kdtyjxwo7i5tpgqw5fq",
    "uri": "at://did:plc:yf6hctt2ug3qyfty4in64yob/app.bsky.feed.post/3miw5obhbxc2i"
  }
}
]
```

- **DID**: Decentralized Identifier - unique permanent account ID in AT Protocol. *Critical for tracking accounts across handle changes and building persistent user databases.*

- **Handle**: User's current handle (username). *Primary identifier for user discovery and @mentions. Note: handles can change, use DID for permanent tracking.*

- **Display Name**: User's chosen display name. *Shows how users represent themselves, useful for brand analysis and identity research.*

- **Avatar**: Profile picture URL. *Enables visual identification, brand consistency analysis, and profile quality assessment.*

- **Associated**: Associated account information and verification data. *Indicates verified domains or linked accounts, important for authenticity verification.*

- **Labels**: Content labels and moderation tags. *Shows content warnings, age restrictions, or community-applied labels relevant for content analysis.*

- **Created At**: Account creation timestamp. *Essential for analyzing account age, identifying early adopters, and detecting bot patterns.*

- **Description**: User bio/profile description. *Provides self-description, interests, affiliations, and contact information for audience analysis.*

- **Indexed At**: Last indexing timestamp. *Tracks data freshness and profile update activity.*

- **Banner**: Profile banner image URL. *Provides additional branding context and profile customization analysis.*

- **Followers Count**: Number of followers. *Key influence metric for identifying reach and audience size.*

- **Follows Count**: Number of accounts followed. *Indicates engagement patterns and network behavior.*

- **Posts Count**: Total posts published. *Shows account activity level and content production volume.*

- **Pinned Post**: Pinned post content if available. *Reveals what users prioritize highlighting, useful for messaging analysis.*

### Usage Guide

#### Profile URL Collection

Navigate to Bluesky profiles you want to analyze. Copy complete profile URLs like:

- Organization profiles: `https://bsky.app/profile/politico.com`
- Individual accounts: `https://bsky.app/profile/username.bsky.social`
- Custom domain handles: `https://bsky.app/profile/yourdomain.com`

#### Configuration

**URL Management:**

- Organize URLs by category (influencers, competitors, journalists)
- Verify profiles are public before scraping
- Enable `ignore_url_failures` for bulk operations

**Best Practices:**

- Test with small batches first
- Handle deleted/suspended accounts gracefully
- Track profiles using DID rather than handles (handles can change)
- Monitor created\_at dates for account authenticity

#### Use Cases

**Influencer Identification:** Find accounts with high follower counts and engagement metrics for partnership opportunities.

**Community Mapping:** Analyze early adopter profiles by creation dates, identify key community members and network structures.

**Competitive Analysis:** Monitor competitor brand presence, follower growth, and messaging strategies on Bluesky.

**Media Monitoring:** Track journalist and news organization profiles for industry presence and adoption patterns.

**Research Applications:** Study decentralized social network adoption, analyze profile description trends, and map community formation.

### Benefits and Applications

**Social Media Intelligence:** Build databases of Bluesky influencers and thought leaders, track platform adoption by demographics and industries, identify emerging voices before mainstream attention.

**Brand Strategy:** Monitor competitor Bluesky presence and growth, identify partnership opportunities with growing accounts, understand early adopter messaging and positioning.

**Research & Analysis:** Study decentralized social media adoption patterns, analyze community formation and network effects, track migration from centralized platforms.

**Advantages:**

- DID-based tracking survives handle changes
- Access to emerging platform before mainstream saturation
- Capture early adopter profiles and network relationships
- Domain verification data for authenticity checks
- Engagement metrics for influence assessment

### Conclusion

The Bluesky Profile Details Scraper enables systematic analysis of the growing decentralized social network. Extract comprehensive profile data to inform influencer strategies, competitive intelligence, and social media research on this emerging platform.

## Your feedback

We are always working to improve Actors' performance. So, if you have any technical feedback about Bluesky Profile Details Scraper or simply found a bug, please create an issue on the Actor's Issues tab in Apify Console.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Specific Profile Urls you want to scrape. You can paste Urls one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

Ignore URLs that fail to load

## Actor input object example

```json
{
  "urls": [
    "https://bsky.app/profile/theliamnissan.bsky.social"
  ],
  "ignore_url_failures": true
}
```

# 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 = {
    "urls": [
        "https://bsky.app/profile/theliamnissan.bsky.social"
    ],
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("ecomscrape/bluesky-profile-details-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 = {
    "urls": ["https://bsky.app/profile/theliamnissan.bsky.social"],
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("ecomscrape/bluesky-profile-details-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 '{
  "urls": [
    "https://bsky.app/profile/theliamnissan.bsky.social"
  ],
  "ignore_url_failures": true
}' |
apify call ecomscrape/bluesky-profile-details-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bluesky Profile Details Scraper",
        "description": "Bluesky Profile Details Scraper automates extraction of comprehensive user profile data from the decentralized social network. Efficiently collect follower counts, post metrics, profile descriptions, and account metadata for social media analysis, influencer research, and community mapping.",
        "version": "0.0",
        "x-build-id": "y7h1a7nwIbD1KYw8d"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ecomscrape~bluesky-profile-details-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ecomscrape-bluesky-profile-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ecomscrape~bluesky-profile-details-scraper/runs": {
            "post": {
                "operationId": "runs-sync-ecomscrape-bluesky-profile-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ecomscrape~bluesky-profile-details-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-ecomscrape-bluesky-profile-details-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs list of the Specific Profile to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Specific Profile Urls you want to scrape. You can paste Urls one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Ignore URLs that fail to load",
                        "type": "boolean",
                        "description": "Ignore URLs that fail to load"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
