Bluesky Scraper: Profiles, Posts, Followers & Threads avatar

Bluesky Scraper: Profiles, Posts, Followers & Threads

Pricing

from $2.00 / 1,000 posts

Go to Apify Store
Bluesky Scraper: Profiles, Posts, Followers & Threads

Bluesky Scraper: Profiles, Posts, Followers & Threads

Scrape Bluesky profiles, author feeds, followers, follows, threads, likes, custom feeds and account search through the official AT Protocol API. No login needed for anything except post search.

Pricing

from $2.00 / 1,000 posts

Rating

0.0

(0)

Developer

Alex Burton

Alex Burton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Categories

Share

Collect Bluesky data through the official AT Protocol API — not by scraping web pages. No API key, and no login for eight of the nine jobs.

ModeWhat you get
ProfilesHandle, display name, bio, follower and following counts, post count, join date, verification status
Account's postsEvery post with full text, like/repost/reply/quote counts, images, links and quoted posts
FollowersThe full follower list of an account, as profile rows
FollowingEveryone an account follows
Account searchAccounts matching a query
Thread with repliesA root post plus its reply tree, flattened with a depth number on every row
Who liked a postEvery account that liked a given post
Custom feedAny feed generator's output by its at:// URI
Post searchFull-text post search — the one mode Bluesky requires a login for

Why use this one

  • Official API, so it does not silently break. Bluesky publishes the AT Protocol XRPC endpoints and keeps them stable. Scrapers that parse bsky.app HTML break whenever the site is restyled.
  • No login for almost everything. Profiles, feeds, followers, threads, likes and account search need no credentials at all.
  • Nine jobs in one Actor. One subscription, one output format, instead of stitching together several single-purpose tools.
  • Real pagination. Follower lists and busy feeds are walked with the API's own cursor until your limit is reached, so you get 10,000 followers if you ask for them.
  • Flat output. One row per post, profile or like — ready for Excel, a database or an AI pipeline, with no nested JSON to unpick.

How to use it

  1. Choose What to scrape.
  2. Fill in the matching field: Accounts, Posts, Search terms or Custom feeds.
  3. Set your per-account or per-search limit.
  4. Click Start, then download results as JSON, CSV, Excel or HTML, or fetch them through the Apify API.

Accounts are accepted in any of these forms:

alice.bsky.social
@alice.bsky.social
did:plc:z72i7hdynmk6r22z27h6tvur
https://bsky.app/profile/alice.bsky.social

Posts are accepted as either:

https://bsky.app/profile/alice.bsky.social/post/3mxuhaky3rc23
at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3mxuhaky3rc23

Example input: an account's recent posts

{
"mode": "authorFeed",
"actors": ["bsky.app"],
"feedFilter": "posts_no_replies",
"maxItemsPerAccount": 500
}

Example input: a full follower list

{
"mode": "followers",
"actors": ["alice.bsky.social"],
"maxItemsPerAccount": 10000
}

Output

Each item carries a type field: post, profile or like. The dataset ships with Posts, Profiles and Likes table views.

Post

{
"type": "post",
"uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3mxuhaky3rc23",
"url": "https://bsky.app/profile/bsky.app/post/3mxuhaky3rc23",
"text": "A new version of the app is rolling out today.",
"createdAt": "2026-10-16T20:09:31Z",
"likeCount": 441,
"repostCount": 61,
"replyCount": 68,
"quoteCount": 52,
"authorHandle": "bsky.app",
"authorDisplayName": "Bluesky",
"isReply": false,
"languages": ["en"],
"imageUrls": []
}

Profile

{
"type": "profile",
"did": "did:plc:z72i7hdynmk6r22z27h6tvur",
"handle": "bsky.app",
"displayName": "Bluesky",
"description": "Official account.",
"followersCount": 1234567,
"followsCount": 42,
"postsCount": 980,
"createdAt": "2023-04-12T04:53:57Z",
"url": "https://bsky.app/profile/bsky.app"
}

Pricing

Pay only for results:

ResultPrice
Post$2.00 per 1,000
Profile (incl. followers and following)$4.00 per 1,000
Like$1.00 per 1,000

Set a maximum spend per run in the run options and the Actor stops cleanly when it's reached.

Limits to know about

  • Post search needs a login. Bluesky answers app.bsky.feed.searchPosts with 403 for anonymous callers, so that mode asks for your handle and an app password. Create one at Settings → Privacy and security → App passwords — never use your real account password. An app password can be revoked at any time and cannot change your account settings. Every other mode ignores these fields.
  • Only public data. The API returns what a logged-out visitor can see. Posts from accounts that have opted out of public visibility, and anything behind a block, are not returned.
  • Threads are capped at 2,000 posts per root post to keep runs predictable. Very large reply trees are truncated.
  • Follower order is Bluesky's own and is not strictly chronological.
  • Follower, following, like and account-search rows are Bluesky's short profile: handle, display name, bio, avatar and join date. Bluesky's list endpoints leave out follower and post counts, so those fields are null there; run Profiles on the accounts you care about to get them.
  • The public AppView rate-limits heavy use. If the log shows repeated retries, lower Max parallel requests.

FAQ

Do I need a Bluesky account? Not for profiles, feeds, followers, threads, likes or account search. Only post search does.

Is the app password safe to give? Apify stores secret inputs encrypted, and the Actor only uses it to mint a short-lived session token for the search request. It is never written to the dataset or the log. You can revoke it in Bluesky's settings whenever you like.

Can I monitor an account daily? Yes. Use Account's posts, set a schedule in Apify Console, and connect the dataset to Slack, Google Sheets, Zapier or Make.

Why did a custom feed return nothing? The feed at:// URI was wrong or the generator is offline. Open the feed on bsky.app and copy its URI again.

Is this allowed? The Actor uses Bluesky's documented public API and reads only public data. Profiles and posts contain personal data, so handle the output in line with GDPR and any other law that applies to you.

Feedback

Found a bug or need a field that's missing? Open an issue on the Actor's Issues tab.