๐Ÿฆ‹ Bluesky Scraper โ€” Profiles, Posts, Followers & Search avatar

๐Ÿฆ‹ Bluesky Scraper โ€” Profiles, Posts, Followers & Search

Pricing

Pay per usage

Go to Apify Store
๐Ÿฆ‹ Bluesky Scraper โ€” Profiles, Posts, Followers & Search

๐Ÿฆ‹ 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

kade

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

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

  1. Open the Input tab and enter Bluesky handles (e.g. bsky.app, jay.bsky.team)
  2. Choose what to include: posts, followers, following
  3. Set limits (max posts per profile, max followers) to control cost
  4. Click Start โ€” results appear in the Output tab as JSON, CSV, or Excel

Input parameters

ParameterTypeRequiredDefaultDescription
handlesstring[]Noโ€”Bluesky handles to scrape (@ optional)
scrapeModestringNoprofileprofile (by handle) or search (by keyword)
searchQuerystringNoโ€”Keyword for profile search (used when scrapeMode is search)
includePostsbooleanNofalseAlso fetch recent posts for each profile
includeFollowersbooleanNofalseAlso fetch follower list
includeFollowingbooleanNofalseAlso fetch following list
maxPostsintegerNo50Max posts per profile
maxFollowersintegerNo100Max followers per profile
maxFollowingintegerNo100Max following per profile
maxSearchResultsintegerNo100Max 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

FieldTypeDescription
profile.handlestringBluesky handle (e.g. jay.bsky.team)
profile.didstringDecentralized identifier (stable unique ID)
profile.displayNamestringDisplay name
profile.descriptionstringBio / profile description
profile.followersCountnumberFollower count
profile.followsCountnumberFollowing count
profile.postsCountnumberTotal post count
profile.createdAtstringAccount creation date (ISO 8601)
profile.urlstringDirect profile URL
posts[].textstringPost text content
posts[].likeCountnumberLike count
posts[].replyCountnumberReply count
posts[].repostCountnumberRepost count
posts[].createdAtstringPost 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 @handle or bare handle โ€” both work
  • Use scrapeMode: search to discover accounts by topic without knowing handles
  • Set maxPosts: 0 is not supported โ€” use a large number like 1000 for "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.