Pricing
Pay per event
Bluesky Scraper
Fast, low-cost scraper for Bluesky (AT Protocol). Extract posts, profiles, followers, and search results. HTTP-only, no browser needed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Fast, low-cost scraper for Bluesky social network using the AT Protocol public API. Extracts posts, profiles, followers, follows, and search results. HTTP-only โ no browser or headless rendering needed.
Why this scraper is cheap
Bluesky's AT Protocol exposes a fully public, unauthenticated API with generous rate limits (~3000 requests per 5 minutes). No proxy is required, no login needed, no anti-bot measures to bypass. This means:
- $0 proxy cost โ direct HTTP requests
- 256 MB memory โ no browser overhead
- ~1000 results per $0.01 of compute
Supported Actions
getProfiles
Fetch detailed profiles for a list of handles or DIDs.
Input:
{"action":"getProfiles","handles":["jay.bsky.team","bsky.app"]}
searchPosts
Search for posts matching a query.
Input:
{"action":"searchPosts","searchQuery":"artificial intelligence","sort":"top","maxResults":500}
getAuthorFeed
Get posts from specific authors.
Input:
{"action":"getAuthorFeed","handles":["jay.bsky.team"],"filter":"posts_no_replies","maxResults":1000}
searchActors
Search for users/profiles.
Input:
{"action":"searchActors","searchQuery":"data scientist","maxResults":200}
getFollowers
Get the followers of specified accounts.
Input:
{"action":"getFollowers","handles":["jay.bsky.team"],"maxResults":5000}
getFollows
Get accounts that the specified users follow.
Input:
{"action":"getFollows","handles":["jay.bsky.team"],"maxResults":5000}
getPostThread
Get a post and its replies (full thread).
Input:
{"action":"getPostThread","postUrls":["https://bsky.app/profile/jay.bsky.team/post/3abc123","at://did:plc:abc123/app.bsky.feed.post/3xyz789"]}
Output Format
Profile output
{"type":"profile","did":"did:plc:...","handle":"jay.bsky.team","displayName":"Jay","description":"Building Bluesky","avatar":"https://...","followersCount":150000,"followsCount":500,"postsCount":3200,"url":"https://bsky.app/profile/jay.bsky.team"}
Post output
{"type":"post","uri":"at://did:plc:.../app.bsky.feed.post/...","authorHandle":"jay.bsky.team","authorDisplayName":"Jay","text":"Hello world!","createdAt":"2024-01-15T10:30:00.000Z","likeCount":42,"repostCount":5,"replyCount":3,"quoteCount":1,"images":[],"hasMedia":false,"url":"https://bsky.app/profile/jay.bsky.team/post/3abc123"}
Input Configuration
| Field | Type | Description | Default |
|---|---|---|---|
action | enum | What to scrape (required) | โ |
handles | string[] | Bluesky handles or DIDs | โ |
searchQuery | string | Search term | โ |
postUrls | string[] | Post URLs (bsky.app or at:// URIs) | โ |
maxResults | integer | Max results per handle/query | 100 |
sort | enum | Sort order for searchPosts | "latest" |
filter | enum | Feed filter for getAuthorFeed | "posts_no_replies" |
proxy | object | Proxy config (not needed!) | No proxy |
Rate Limits
The AT Protocol public API allows ~3000 requests per 5 minutes. The scraper automatically:
- Adds a 50ms baseline delay between requests
- Handles 429 (Too Many Requests) with exponential backoff
- Retries on server errors (5xx)
Cost Estimation
| Action | 1000 items | Estimated cost |
|---|---|---|
| getProfiles | 1000 requests | ~$0.01 |
| searchPosts | 10 paginated requests | ~$0.001 |
| getAuthorFeed | 10 paginated requests | ~$0.001 |
| getFollowers | 10 paginated requests | ~$0.001 |
No proxy cost. No browser cost. Just HTTP requests to a public API.
Pay-per-event pricing
This actor uses Apify pay-per-event pricing with a small Actor start charge and per-result events. Current event prices:
| Event | Price |
|---|---|
apify-actor-start | $0.00005 |
profile | $0.00003 |
search-post | $0.00002 |
author-feed-post | $0.00002 |
search-actor | $0.00003 |
follower | $0.00003 |
follow | $0.00003 |
thread-post | $0.00002 |
