๐ฆ Bluesky Scraper โ Profiles, Posts, Followers & Search
Pricing
Pay per usage
๐ฆ Bluesky Scraper โ Profiles, Posts, Followers & Search
๐ฆ Scrape public Bluesky profiles, posts, followers, and search via the official AT Protocol โ no API key, no rate-limit pain. Get bios, engagement, and follower graphs. Ideal for researchers, growth marketers, and AI training datasets.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
kade
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Bluesky Scraper โ Profiles, Posts, Followers & Search
Bluesky Scraper extracts public data from Bluesky using the official AT Protocol public API. Give it a list of handles and it returns profiles, posts, follower lists, and following lists โ no authentication or API key required.
Works with any public Bluesky account. Data is delivered as clean, structured JSON ready for analysis, export to CSV/Excel, or integration with other tools via the Apify API.
Why use Bluesky Scraper?
- No auth or API key โ Bluesky's AT Protocol public API is open for unauthenticated access
- Full engagement data โ follower counts, post counts, reply/repost/like metrics
- Batch mode โ scrape hundreds of handles in one run, paginated automatically
- Search mode โ find accounts by keyword without knowing specific handles
- Scheduling โ run weekly to track follower growth and post activity over time
- Use cases: influencer research, competitor analysis, audience building, academic research, social media monitoring
How to use Bluesky Scraper
- Open the Input tab and enter Bluesky handles (e.g.
bsky.app,jay.bsky.team) - Choose what to include: posts, followers, following
- Set limits (max posts per profile, max followers) to control cost
- Click Start โ results appear in the Output tab as JSON, CSV, or Excel
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
handles | string[] | No | โ | Bluesky handles to scrape (@ optional) |
scrapeMode | string | No | profile | profile (by handle) or search (by keyword) |
searchQuery | string | No | โ | Keyword for profile search (used when scrapeMode is search) |
includePosts | boolean | No | false | Also fetch recent posts for each profile |
includeFollowers | boolean | No | false | Also fetch follower list |
includeFollowing | boolean | No | false | Also fetch following list |
maxPosts | integer | No | 50 | Max posts per profile |
maxFollowers | integer | No | 100 | Max followers per profile |
maxFollowing | integer | No | 100 | Max following per profile |
maxSearchResults | integer | No | 100 | Max profiles returned in search mode |
Example input
{"handles": ["bsky.app", "jay.bsky.team"],"includePosts": true,"maxPosts": 25}
Output
Each item pushed to the dataset is a profile object (with optional nested posts, followers, following arrays).
Profile example
{"profile": {"did": "did:plc:z72i7hdynmk6r22z27h6tvur","handle": "bsky.app","displayName": "Bluesky","description": "Official Bluesky account","avatar": "https://cdn.bsky.app/img/avatar/plain/...","followersCount": 33764197,"followsCount": 7,"postsCount": 780,"createdAt": "2023-04-12T04:53:57.057Z","url": "https://bsky.app/profile/bsky.app"}}
Post example (when includePosts: true)
{"uri": "at://did:plc:z72i7.../app.bsky.feed.post/3lc...","text": "Introducing Bluesky's new moderation tools...","createdAt": "2026-01-15T14:30:00.000Z","likeCount": 1842,"replyCount": 93,"repostCount": 342,"quoteCount": 55,"langs": ["en"],"hasImages": false,"hasLink": true,"isRepost": false}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Output data fields
| Field | Type | Description |
|---|---|---|
profile.handle | string | Bluesky handle (e.g. jay.bsky.team) |
profile.did | string | Decentralized identifier (stable unique ID) |
profile.displayName | string | Display name |
profile.description | string | Bio / profile description |
profile.followersCount | number | Follower count |
profile.followsCount | number | Following count |
profile.postsCount | number | Total post count |
profile.createdAt | string | Account creation date (ISO 8601) |
profile.url | string | Direct profile URL |
posts[].text | string | Post text content |
posts[].likeCount | number | Like count |
posts[].replyCount | number | Reply count |
posts[].repostCount | number | Repost count |
posts[].createdAt | string | Post timestamp (ISO 8601) |
Cost / performance
Bluesky uses an open public API โ no proxy required. Typical performance:
- 100 profiles: ~15 seconds, under $0.01 in platform credits
- 1,000 posts (10 accounts ร 100 posts): ~30 seconds, ~$0.01
- 5,000 followers: ~45 seconds, ~$0.02
Costs are very low because no browser or proxy is needed. Bluesky's API allows ~100 req/min without rate limiting.
Tips
- Use
@handleor barehandleโ both work - Use
scrapeMode: searchto discover accounts by topic without knowing handles - Set
maxPosts: 0is not supported โ use a large number like1000for "all posts" - Combine with scheduling to track follower growth week-over-week
FAQ
Is this legal? This Actor uses Bluesky's official public AT Protocol API, which is designed for open access. No authentication is bypassed. Always comply with applicable data protection laws (GDPR, CCPA, etc.) when processing personal data.
Does it work without a Bluesky account? Yes. The public API requires no login or API key.
How fresh is the data? Data is live from the Bluesky API at run time. There is no caching.
Found a bug or want a feature? Use the Issues tab to report it. Custom scraping solutions for specific Bluesky data needs are available on request.