Bluesky Scraper avatar

Bluesky Scraper

Pricing

Pay per usage

Go to Apify Store
Bluesky Scraper

Bluesky Scraper

Scrape Bluesky social network posts, profiles, followers, and search results. Extract engagement metrics, hashtags, and user data via the open AT Protocol API.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

lulz bot

lulz bot

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Categories

Share

Scrape Bluesky social network posts, profiles, followers, and search results via the open AT Protocol API. No authentication required — Bluesky's public API is fully open.

Features

  • Search Posts — Find posts by keyword with date range filters, language filter, and sort order
  • Search Users — Find user accounts by keyword
  • User Profile — Fetch detailed profiles for one or more handles (batched, up to 25 at a time)
  • User Posts — Get all recent posts from a specific user
  • Post Thread — Fetch a full post thread including all replies
  • Followers — Get the followers list for a user
  • Following — Get the accounts a user follows

Input Parameters

ParameterTypeDescriptionDefault
modeselectScrape mode (see options below)searchPosts
querystringSearch keyword or phraseartificial intelligence
handlesstring[]Bluesky handles (e.g. jay.bsky.team)[]
postUristringAT Protocol URI for postThread mode""
sortselectlatest or top (searchPosts only)latest
sincestringStart date ISO 8601 (searchPosts only)""
untilstringEnd date ISO 8601 (searchPosts only)""
langstringLanguage code filter, e.g. en (searchPosts only)""
limitintegerMax results (1–10000)100
proxyConfigurationobjectOptional proxy (not required){"useApifyProxy": false}

Available Modes

ModeDescriptionRequired Fields
searchPostsSearch posts by keywordquery
searchUsersSearch user accounts by keywordquery
userProfileGet profile details for specific handle(s)handles
userPostsGet posts from a specific userhandles
postThreadGet a post and all its repliespostUri
followersGet followers of a userhandles
followingGet accounts a user followshandles

Output

Post Object

{
"type": "post",
"uri": "at://did:plc:abc123/app.bsky.feed.post/xyz456",
"cid": "bafyreid...",
"text": "Excited about the future of AI on Bluesky! #AI #tech",
"createdAt": "2024-03-15T10:30:00.000Z",
"author": {
"did": "did:plc:abc123",
"handle": "user.bsky.social",
"displayName": "Jane Doe",
"avatar": "https://cdn.bsky.app/img/avatar/...",
"followersCount": 1500
},
"handle": "user.bsky.social",
"displayName": "Jane Doe",
"avatar": "https://cdn.bsky.app/img/avatar/...",
"followersCount": 1500,
"likeCount": 42,
"replyCount": 7,
"repostCount": 15,
"quoteCount": 3,
"hashtags": ["AI", "tech"],
"mentions": ["did:plc:xyz789"],
"links": ["https://example.com/article"],
"embed": {
"type": "external",
"url": "https://example.com/article",
"title": "Article Title",
"description": "Article description"
},
"labels": [],
"scrapedAt": "2024-03-15T12:00:00.000Z"
}

Profile Object

{
"type": "profile",
"did": "did:plc:abc123",
"handle": "jay.bsky.team",
"displayName": "Jay Graber",
"description": "CEO of Bluesky. Building the AT Protocol.",
"avatar": "https://cdn.bsky.app/img/avatar/...",
"followersCount": 125000,
"followsCount": 500,
"postsCount": 3200,
"createdAt": "2023-04-24T00:00:00.000Z",
"labels": [],
"scrapedAt": "2024-03-15T12:00:00.000Z"
}

Usage Examples

Search recent AI posts in English

{
"mode": "searchPosts",
"query": "artificial intelligence",
"sort": "latest",
"lang": "en",
"limit": 500
}

Search posts from a specific date range

{
"mode": "searchPosts",
"query": "bluesky",
"since": "2024-01-01T00:00:00Z",
"until": "2024-03-01T00:00:00Z",
"sort": "top",
"limit": 200
}

Get profiles for multiple users

{
"mode": "userProfile",
"handles": ["jay.bsky.team", "atproto.com", "pfrazee.com"]
}

Get all posts from a user

{
"mode": "userPosts",
"handles": ["jay.bsky.team"],
"limit": 500
}

Fetch a full thread and all replies

{
"mode": "postThread",
"postUri": "at://did:plc:abc123/app.bsky.feed.post/xyz456"
}

Get followers of a user

{
"mode": "followers",
"handles": ["atproto.com"],
"limit": 1000
}

Technical Notes

  • No authentication required — Uses Bluesky's fully open public AT Protocol API
  • No anti-bot protection — Direct HTTP requests via got-scraping
  • Rate limits — 3,000 requests per 5 minutes per IP. The scraper automatically adds 100ms delays between requests and uses exponential backoff on 429 responses
  • Pagination — Cursor-based pagination is handled automatically up to the specified limit
  • Facets — Hashtags, mentions, and links are parsed from AT Protocol facets arrays in post records
  • Base URLhttps://public.api.bsky.app/xrpc/
  • Billing — Pay-per-result (PPE) at $0.005/result

Data Sources

All data comes directly from the official Bluesky AT Protocol public API:

  • app.bsky.feed.searchPosts — Post search
  • app.bsky.actor.searchActors — User search
  • app.bsky.actor.getProfiles — Batch profile fetch
  • app.bsky.feed.getAuthorFeed — User's posts
  • app.bsky.feed.getPostThread — Full thread with replies
  • app.bsky.graph.getFollowers — Follower list
  • app.bsky.graph.getFollows — Following list