Bluesky Scraper — Posts, Profiles & Search avatar

Bluesky Scraper — Posts, Profiles & Search

Pricing

$4.99/month + usage

Go to Apify Store
Bluesky Scraper — Posts, Profiles & Search

Bluesky Scraper — Posts, Profiles & Search

Bluesky scraper 2026 — extract posts, profiles and trending content from Bluesky social network without API key. Pay-per-result pricing. Returns structured JSON. Perfect for decentralized social media monitoring and research.

Pricing

$4.99/month + usage

Rating

0.0

(0)

Developer

Web Data Labs

Web Data Labs

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

7

Monthly active users

a day ago

Last modified

Categories

Share

Bluesky Scraper

Found this useful? Leave a review — it helps other developers find this actor and motivates continued improvement.

Free to try — if this actor saves you time, please leave a quick review. It takes 30 seconds, helps other developers find it, and keeps us motivated to maintain it.



Extract posts, profiles, and social graphs from Bluesky (bsky.app) at scale. Built on the AT Protocol — no login required for public data. Handles pagination, URI resolution, and rate limiting automatically.

Why Bluesky Data?

Bluesky is the fastest-growing decentralized social network, with millions of active users posting public content indexed by the AT Protocol. Unlike X/Twitter, Bluesky's protocol-level openness makes it ideal for:

  • Trend monitoring — track topics, hashtags, and sentiment across the network
  • Influencer research — map follower graphs and engagement patterns
  • Content aggregation — feed posts into LLM pipelines or dashboards
  • Brand monitoring — detect mentions and measure reach

Input Parameters

ParameterTypeRequiredDefaultDescriptionExample
modestringYes"profile"Scrape mode: profile, search, feed, followers, following"search"
handlesarrayFor profile/followers/followingBluesky handles to scrape["bsky.app", "pfrazee.com"]
maxPostsintegerNo100Maximum posts to return per handle500
includeRepliesbooleanNofalseInclude reply posts in resultstrue
searchQuerystringFor searchKeyword or hashtag to search"AI agents"
feedUristringFor feedAT Protocol feed URI"at://did:plc:.../app.bsky.feed.generator/..."

Output Fields

Posts

FieldTypeDescriptionExample
uristringAT Protocol URI"at://did:plc:abc123/app.bsky.feed.post/xyz789"
cidstringContent identifier"bafyreid..."
handlestringAuthor handle"pfrazee.com"
displayNamestringAuthor display name"Paul Frazee"
textstringPost content"shipping a new feature..."
createdAtstringISO 8601 timestamp"2024-11-12T10:05:33.000Z"
indexedAtstringAT Protocol index time"2024-11-12T10:05:40.000Z"
likeCountintegerNumber of likes342
repostCountintegerNumber of reposts58
replyCountintegerNumber of replies29
langstringDetected language"en"
isReplybooleanWhether post is a replyfalse
hasMediabooleanContains images/videofalse
mediaCountintegerNumber of media items0
mediaUrlsarrayURLs of attached media[]
authorFollowersCountintegerAuthor's follower count28400
engagementScorenumberNormalized engagement metric0.87

Social Graph (followers/following mode)

FieldTypeDescription
didstringDecentralized identifier
handlestringUser handle
displayNamestringDisplay name
descriptionstringBio text

Example Input

{
"mode": "search",
"searchQuery": "AI agents",
"maxPosts": 50,
"includeReplies": false
}

Example Output

{
"uri": "at://did:plc:abc123/app.bsky.feed.post/xyz789",
"cid": "bafyreid...",
"handle": "pfrazee.com",
"displayName": "Paul Frazee",
"text": "shipping a new feature for the AT Protocol today",
"createdAt": "2024-11-12T10:05:33.000Z",
"indexedAt": "2024-11-12T10:05:40.000Z",
"likeCount": 342,
"repostCount": 58,
"replyCount": 29,
"lang": "en",
"isReply": false,
"hasMedia": false,
"mediaCount": 0,
"authorFollowersCount": 28400,
"engagementScore": 0.87
}

Using with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("cryptosignals/bluesky-scraper").call(run_input={
"mode": "profile",
"handles": ["bsky.app"],
"maxPosts": 100,
"includeReplies": False,
})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"@{post['handle']}: {post['text'][:80]}...")
print(f" Likes: {post['likeCount']} | Reposts: {post['repostCount']} | Replies: {post['replyCount']}")

Using with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('cryptosignals/bluesky-scraper').call({
mode: 'search',
searchQuery: 'AI agents',
maxPosts: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(post => {
console.log(`@${post.handle}: ${post.text.slice(0, 80)}...`);
console.log(` Engagement: ${post.engagementScore}`);
});

Proxy

Even with Bluesky's open AT Protocol, high-volume requests from a single IP get throttled. Residential proxies distribute the load and prevent temporary soft-bans during large-scale data collection.

ThorData offers residential proxies in 195+ countries that work well with this actor for reliable, uninterrupted scraping.

Integrations

Connect this actor to Google Sheets, Airtable, BigQuery, Slack, Zapier, Make, or use the Apify API for programmatic access and webhook notifications.


Built by cryptosignals

⭐ Support This Actor

If this actor saved you time, please leave a quick review — it takes 30 seconds and helps others discover it. Thank you!

⭐ Leave a Review

If this actor saved you time, please take 30 seconds to leave a review: 👉 https://apify.com/cryptosignals/bluesky-scraper/reviews

Reviews are the #1 way to help this actor reach more developers and ensure we keep it maintained, free-tier friendly, and updated.