Bluesky Scraper — Unlimited Posts | $1/1K avatar

Bluesky Scraper — Unlimited Posts | $1/1K

Pricing

$1.00 / 1,000 results

Go to Apify Store
Bluesky Scraper — Unlimited Posts | $1/1K

Bluesky Scraper — Unlimited Posts | $1/1K

Keyword search past the 100-post cap that stops other Bluesky scrapers. Posts, profiles, followers, threads, likes and reposts with engagement, hashtags and images. Follower counts the API omits are filled in. No login. For brand monitoring, social listening and research.

Pricing

$1.00 / 1,000 results

Rating

5.0

(1)

Developer

datawell

datawell

Maintained by Community

Actor stats

2

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Categories

Share

Bluesky Scraper — Posts, Profiles, Followers & Threads

Extract public data from Bluesky (bsky.app) without an account, an API key, or a login. Search posts by keyword, pull account timelines, collect follower lists, expand entire reply threads, and see exactly who liked or reposted a post.

One Actor covers twelve extraction modes. Results arrive as flat rows — ready for CSV, Excel, JSON, or straight into your own pipeline via the API.


Why this scraper

Keyword search actually paginates. Bluesky's public API returns HTTP 403 as soon as you paginate a post search with a cursor — a known, still-open bug. Scrapers built the obvious way stop dead at 100 results. This one walks a moving time window instead, so a search for 10,000 posts returns 10,000 posts.

Follower counts are filled in. Bluesky strips followersCount and postsCount out of account searches, follower lists, and like lists — the exact numbers you need to rank accounts by reach. This Actor fetches them back automatically.

No account, no tokens, no proxy setup. Everything runs against Bluesky's official public endpoints.


What you can extract

ModeWhat you get
Search posts by keywordEvery public post matching a query — filter by language, date range, author, hashtag, linked domain or URL
Posts from specific accountsAn account's timeline: posts only, with replies, media only, or author threads
Profile detailsFollower counts, bio, post totals, join date, verification status
Search for accountsFind accounts by name or handle, with follower counts attached
FollowersEveryone who follows an account
FollowingEvery account someone follows
Thread with all repliesA whole conversation, flattened, with a depth column per reply
LikesThe accounts that liked a specific post
RepostsThe accounts that reposted a specific post
Quote postsPosts quoting a specific post
Custom feedsPosts from any feed generator
ListsPosts from a curated list

Quick start

  1. Pick a mode from the What to scrape dropdown.
  2. Fill in the field it asks for — a search query, an account, or a post URL.
  3. Set Maximum results.
  4. Click Start.
  5. Download from the Dataset tab as CSV, Excel, JSON, or XML.

Example inputs

Track a topic over the last week

{
"mode": "searchPosts",
"searchQuery": "climate policy",
"lang": "en",
"since": "2026-08-01T00:00:00Z",
"sort": "latest",
"maxItems": 5000
}

Monitor brand mentions with links to your domain

{
"mode": "searchPosts",
"searchQuery": "acme",
"domain": "acme.com",
"maxItems": 1000
}

Audit an account's audience

{
"mode": "followers",
"actors": ["nbcnews.com"],
"maxItems": 10000
}

Pull several accounts' timelines at once

{
"mode": "authorFeed",
"actors": ["bsky.app", "nbcnews.com", "jay.bsky.team"],
"authorFeedFilter": "posts_no_replies",
"maxItems": 3000
}

Expand a full discussion

{
"mode": "postThread",
"postUris": ["https://bsky.app/profile/bsky.app/post/3mseeq5rllc2q"],
"threadDepth": 10,
"maxItems": 500
}

Find accounts posting about a niche

{
"mode": "searchActors",
"searchQuery": "climate journalist",
"maxItems": 500
}

Input reference

FieldApplies toNotes
What to scrapeallChooses the mode. Fields below apply selectively.
Search querypost search, account searchQuote a phrase for exact matching: "climate policy"
Accountstimelines, profiles, followers, followingHandle (alice.bsky.social), DID, or a profile URL
Post URLs or URIsthread, likes, reposts, quotesAccepts normal bsky.app links — no need to hunt for AT-URIs
Maximum resultsallSplit evenly when several accounts or posts are given
Sort orderpost searchlatest (newest first) or top (most engaged)
Language filterpost searchTwo-letter code: en, de, pt, ja
Posted after / beforepost searchISO format: 2026-08-01T00:00:00Z
Only from this accountpost searchRestrict a keyword search to one author
Mentioning this accountpost searchOnly posts mentioning that account
Hashtagspost searchWithout the # sign
Linking to domain / URLpost searchFind posts sharing a specific site or link
Which poststimelinesPosts only, with replies, media only, or author threads
Reply depththreadHow many levels of replies to follow
Add follower countsaccountsOn by default; one extra request per 25 accounts
Delay between requestsallRaise to 1–2 s for very large runs

Output examples

A post (from keyword search, timelines, quotes, or threads):

{
"url": "https://bsky.app/profile/dorothealange.mastodon.ozioso.online.ap.brid.gy/post/3msgbcrssfew2",
"text": "Sanitary facilities for migratory workers. Ditch bank camp. Squatters near Arvin, Kern County, California\n\n#Arvin #KernCounty #California #photography\n\nhttps://www.loc.gov/pictures/item/2017763258/",
"createdAt": "2026-08-06T14:36:31.000Z",
"authorHandle": "dorothealange.mastodon.ozioso.online.ap.brid.gy",
"authorDisplayName": "Dorothea Lange",
"likeCount": 1,
"repostCount": 2,
"replyCount": 0,
"quoteCount": 0,
"langs": ["en"],
"hashtags": ["arvin", "kerncounty", "california", "photography"],
"links": ["https://www.loc.gov/pictures/item/2017763258/"],
"imageUrls": ["https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:ls2ap.../bafkrei..."],
"imageAlts": ["The image shows a solitary wooden structure in an expansive field..."],
"isReply": false,
"uri": "at://did:plc:ls2ap3pxsotp3pgwjf7o633l/app.bsky.feed.post/3msgbcrssfew2"
}

An account (from profiles, account search, followers, likes, reposts):

{
"handle": "nbcnews.com",
"url": "https://bsky.app/profile/nbcnews.com",
"displayName": "NBC News",
"description": "News updates from around the 🌎, all day, every day.",
"followersCount": 258510,
"followsCount": 149,
"postsCount": 22704,
"createdAt": "2023-05-31T01:09:28.017Z",
"verifiedStatus": "valid",
"avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:wmho.../bafkrei...",
"did": "did:plc:wmho6q2uiyktkam3jsvrms3s"
}

Field reference

Post fields

FieldTypeDescription
urlstringClickable bsky.app link to the post
textstringFull post text
createdAtstringWhen the author posted it (ISO 8601)
indexedAtstringWhen Bluesky indexed it
langsarrayLanguage codes declared by the author
authorHandlestringAuthor's handle
authorDisplayNamestringAuthor's display name
authorDidstringAuthor's permanent identifier
authorAvatarstringAuthor's avatar image URL
likeCountnumberLikes at scrape time
repostCountnumberReposts at scrape time
replyCountnumberReplies at scrape time
quoteCountnumberQuote posts at scrape time
bookmarkCountnumberBookmarks at scrape time
hashtagsarrayHashtags, without the #
linksarrayExternal URLs in the post
mentionDidsarrayIdentifiers of mentioned accounts
imageUrlsarrayFull-size image URLs
imageAltsarrayAlt text for each image
externalUristringLink preview target
externalTitlestringLink preview title
quotedPostUristringThe post being quoted, if any
quotedPostTextstringText of the quoted post
quotedPostAuthorstringHandle of the quoted author
isReplybooleanWhether the post replies to another
replyParentUristringThe post it replies to
replyRootUristringRoot of the conversation
isRepostbooleanTimelines only — repost rather than original
repostedBystringWho reposted it
threadDepthnumberThread mode only — 0 is the root post
labelsarrayModeration labels
uri, cidstringPermanent record identifiers

Account fields

FieldTypeDescription
handlestringAccount handle
urlstringClickable profile link
displayNamestringDisplay name
descriptionstringBio text
followersCountnumberFollowers
followsCountnumberAccounts followed
postsCountnumberTotal posts
createdAtstringAccount creation date
verifiedStatusstringVerification state
avatar, bannerstringImage URLs
isLabelerbooleanWhether it runs a moderation service
listsCount, feedgensCount, starterPacksCountnumberThings the account publishes
pinnedPostUristringPinned post, if any
subjectHandlestringFollower modes — whose list this row came from
likedPostUri, likedAtstringLikes mode — which post, and when
repostedPostUristringReposts mode — which post
didstringPermanent account identifier

Performance

Measured on Apify with 512 MB:

RunResultsTime
Keyword search1,000 posts~24 s
Keyword search150 posts~1 s
Follower list300 accounts~5 s

Large historical searches scale roughly linearly — the time window steps backwards one page at a time.


Scheduling

Use Apify Schedules to run this on a cron and build a time series: daily brand mentions, weekly follower growth, hourly monitoring of a hashtag. Combine with Webhooks to push new results straight into Slack, a database, or your own endpoint whenever a run finishes.


Limitations

  • Public data only. Private accounts, direct messages, and blocked content are out of reach.
  • Keyword search reaches back in time windows. Very large historical pulls take proportionally longer than recent ones.
  • Counts are snapshots. Likes and reposts reflect the moment of scraping.
  • Bluesky throttles heavy use. If a large run slows down, raise Delay between requests to 1–2 seconds.
  • Deleted and moderated posts may appear as gaps in threads.

FAQ

Do I need a Bluesky account? No. Everything runs against public endpoints.

Can I get more than 100 posts from a keyword search? Yes. That limit is what stops most Bluesky scrapers — this one paginates by time window and keeps going.

Why are follower counts zero in some other scrapers? Bluesky omits them from account searches and follower lists. This Actor fetches them separately and fills them in.

Can I paste a normal Bluesky link? Yes, for both accounts and posts. AT-URIs work too.

What formats can I export? CSV, Excel, JSON, XML, or straight from the Apify API.

Can I scrape several accounts in one run? Yes. The result budget is divided evenly between them.

How far back can I search? As far as Bluesky's search index goes. Use Posted after / before to target a specific period.


This Actor reads publicly available data through Bluesky's official public API. It does not bypass authentication, access private content, or evade technical restrictions.

You remain responsible for how you use the results. If your data concerns people in the EU, GDPR obligations apply to you as the controller — including lawful basis, purpose limitation, and the rights of the people whose posts you collect. Personal data should not be republished or resold without a proper legal basis.