Bluesky Posts Scraper avatar

Bluesky Posts Scraper

Pricing

from $0.93 / 1,000 post rows

Go to Apify Store
Bluesky Posts Scraper

Bluesky Posts Scraper

Search Bluesky posts by keyword, read an account's posts, or read a post and its replies. Exact like, reply, repost, and quote counts, with dates, hashtags, links, and images. No login and no key. You pay per row.

Pricing

from $0.93 / 1,000 post rows

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Security

Limited permissions

Share

Give keywords, Bluesky accounts, or post addresses. The actor returns one row per post or reply, with exact like, reply, repost, and quote counts, dates, hashtags, links, and images. You pay per row returned. Mamba Labs pays the platform costs of the run.

Features

  • Keyword search, sorted by latest or top, with date and language filters.
  • An account's own posts, newest first, with or without its replies and reposts.
  • A post and its replies, from a post address.
  • Replies under every post a search or account read finds, as a charged option.
  • One free status row per source, which says how many rows it returned, whether the list was complete, or why it stopped.
  • A post found by two sources is returned and charged once.

How the data is read

The actor reads Bluesky's public AT Protocol API at api.bsky.app on the Apify proxy default pool, with no login, no key, and no other developer's actor. An HTTP 429 waits and rereads once, as Bluesky's robots.txt asks, and then returns a free row.

Input

FieldTypeDefaultWhat it does
queriesarrayKeywords to search, up to 20. Without your own app password each search returns one page, about 100 posts. Text from Clay splits on new lines, so a query can hold a comma.
authorsarrayBluesky handles, profile addresses, or DIDs, up to 20. Returns each account's own posts, newest first.
post_urlsarrayAddresses of Bluesky posts to read, up to 100.
sortstringlatestlatest or top. Default latest. Used for queries.
since_datestringOnly posts from this date, such as 2026-10-01.
until_datestringOnly posts before this date, such as 2026-11-01.
languagestringLanguage code such as en or de. Used for queries. Reads the language the post's author set.
max_posts_per_sourcestring100Per query or account, up to 2000. Default 100. A search with no app password stops at about 100.
include_repliesstringnoyes or no. Default no. Reads the replies under each post found. Each reply is a charged row.
max_replies_per_poststring20Up to 200. Default 20.
include_account_repliesstringnoyes or no. Default no. Used for accounts.
include_repostsstringnoyes or no. Default no. Used for accounts. A repost row shows the original author.
bluesky_handlestringOptional, with the app password. Used only to page a search past its first page.
bluesky_app_passwordstringOptional. Create an app password in Bluesky settings; never use your main password. Sent only to Bluesky. Without it a search returns one page, about 100 posts. Accounts and post addresses need no password.
max_charge_usdstringOptional. The run stops before a charge that would pass this amount. Summary rows are always returned.

Output

FieldTypeWhat it holds
row_typestringOne of: post, reply, source_status, run_summary. run_summary is the one free row written when the input is refused.
row_keystringUnique key for this row: the post's AT URI.
source_typestringquery, author, post, or login: the kind of input this row came from.
querystringThe search query that found this row.
accountstringThe account input that found this row.
input_urlstringThe post address input that found this row.
query_in_textbooleanSearch post rows: whether the post text holds the query. Bluesky also matches on things a row does not show, such as a link target, so false is not always wrong.
post_uristringThe post's AT URI.
urlstringThe post on bsky.app.
textstringThe post text.
author_handlestringThe author's handle.
author_namestringThe author's display name, where set.
author_didstringThe author's stable ID.
author_urlstringThe author's profile on bsky.app.
created_atstringWhen the post was written, as its author's client states it, UTC.
indexed_atstringWhen Bluesky indexed the post, UTC.
likesintegerExact like count.
repliesintegerExact reply count.
repostsintegerExact repost count.
quotesintegerExact quote count.
languagesarrayLanguage codes the post's author set.
hashtagsarrayTags in the post.
mentionsarrayDIDs of accounts mentioned.
linksarrayLink targets in the post and its link card.
image_urlsarrayFull size images on the post.
is_replybooleanWhether the post answers another post.
parent_uristringThe post this one answers.
root_uristringThe first post of this thread.
posts_returnedintegersource_status rows: posts this source returned.
replies_returnedintegersource_status rows: replies this source returned.
list_completebooleansource_status rows: true when Bluesky offered no further page, false when the run stopped first.
row_statusstringok, or why this row carries no data: no_results, no_change, partial, blocked, or error.
error_reasonstringWhy the row is not ok. A refused input reads input_invalid: followed by what to fix.
billable_events_jsonstringWhat this row was billed as, for example {"post-row":1}. {} means free.
scraped_atstringWhen the row was written, UTC.

Pricing

Pay per event. Summary rows and a refused input are free.

EventFree planBronzeSilverGold
post-row, one post or reply$0.0011$0.001045$0.00099$0.000935
apify-actor-start, once per run (one per GB of memory; the default 256 MB is one)$0.0065$0.0065$0.0065$0.0065

Per 1,000 rows of post-row: $1.10 on the free plan, $0.94 on Gold.

Free plan cap: 1.50 USD of evaluation a month, about 1364 rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your max_charge_usd input.

Mamba Labs pays the platform costs of your run, Apify proxy traffic included.

Usage examples

Clay. Number and on or off inputs are text fields, which is what Clay sends. A list input takes a JSON list, so put the column inside a one item list.

MCP. The Mamba Labs MCP server @mambalabsdev/mcp-bluesky-posts-scraper exposes this actor to Claude and other MCP clients.

Error handling

CaseWhat you get
Missing or unreadable inputOne free row, row_type run_summary, error_reason starting input_invalid: with what to fix. The run ends successfully and charges nothing but the run start
A source refuses, finds nothing, or does not existOne free source_status row with row_status blocked, partial, or no_results, and the next source still runs
The run is close to its timeoutThe actor stops starting new work 90 seconds before the timeout and delivers what it has

Limitations

  • A search with no account returns one page, about 100 posts per query. Bluesky answers any later search page with HTTP 403 "forbidden by administrative rules" from every exit tested. The status row reads partial and says so. The actor does not slice dates to get past this. To page further, give your own bluesky_handle and bluesky_app_password.
  • The app password route has not run on a real account. Fixtures and the refused password path are the test, and the first buyer's password is the live test. Use an app password, never your main password. It is sent only to Bluesky, stays out of rows and logs, and is used only for search.
  • A login session lasts about 2 hours by Bluesky's own setting, and a longer search then ends as partial.
  • Accounts page with no account of your own: 2,000 unique posts from one account in one test run, 303 seconds. 2,000 per source is the actor's maximum.
  • Bluesky decides what a search matches, and it also matches things a row does not show, such as a link target. query_in_text reads false on those rows. In one test, 13 of 99 read false, and these rows are charged.
  • Replies come from the first 6 levels of a thread. Blocked and deleted replies are skipped.
  • If the first 5 sources return nothing, the run stops with a free row, so a list of dead entries does not run on. After any row is returned, every source runs.
  • A repost row shows the original author and post, not who reposted it.
  • An author who asks Bluesky not to show them to logged out viewers is skipped, free, on every route, including when you give an app password. On one search page, 10 of 100 posts were skipped this way, so a search can return fewer rows than the maximum. An account or post input like this reads no_results and says why.

Mamba Labs actor suite

ActorActor ID
Account Hiring WatchgRAZA5WBi1r6L0gy7
Agent Accessibility AuditoranxbRv0lKrpQ1pnua
Agent to Brokerage ResolverePRRGLxOGyaVHO4dI
AI Answer Visibility TrackerRJZvzKniYK4nswcMg
AI List Extractor for Any WebsiteD5hOdIez45M0NX5jD
AI Tooling DetectorEwkHhmqiuJgRoVEbE
Amazon Product, Price, and Stock TrackerMtJPZoyjJ3IeqTFyo
API Deprecation and Breaking Change MonitorpHsbS3xXUK8Jqutz5
App Store and Google Play Review MonitorMaCMEhGrbchxQZ92G
B2B Reddit Conversation MonitorSoDryzzsjmY3SsiyG
Bluesky Brand Presence MappereLpxzP4IuXznlFVND
Bluesky Posts ScraperKldSjS7wjoeZ7vQGm
Brand Sponsor FinderPPgK6xrgOmvL7Nrys
Bulk WHOIS and RDAP Domain Age LookupMTrkG5FLU6SjqLdJY
Career Change Signal EnginevX2Yga1a6wGaXaP14
Company Careers Page Jobs, 17 ATS BoardsizP0rfIgf5YaRZfIh
Company Change Event FeedoX44rS0fkEJ3rXLWe
Company Discovery List Builderjch0HdaZnpbMqlcGS
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Funding RecordOFS4Mt1gyYNtGfUbE
Company Headcount EstimatoraHC4GROnNt6kfZe5r
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Role Email, Phone and Address Finder4mMncKaJykiq94grz
Company Social Presence Mapper4k6CCemkgBDz18m2h
Competitor Price, Stock, and Changelog MonitoryxdgCbUQ4PYQWwRNU
Contact Classifier0lGSeYJmniXhGANnO
Contractor License Search, CA, TX, WA, OR, LAWBYK3CPI2kdeq4bP1
CRM Contact Job Change CheckerL8UbEmMJC1XYPSZOb
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
Ecommerce Platform Profiler5G2NeYjBbQTjaTn9L
Ecommerce Store DiscoveryPeHu4sLyFvQHXUUrX
Email List Verifier, Bring Your Own KeyCzVJ4NlaCKk80xpgE
Event Presence IndexWLhMy8fMDgsxdYxv5
Expert Witness Finder, US and AustraliaLIpwlgfE3LaQBaXd4
Facebook Posts ScraperT6jxIeq4ua0SLXnqG
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6
GDPR Cookie Banner and Consent CheckerTrKyOS0KBoGC35nbr
GitHub Followers and Following ExportSGNxDmFb9v3tRDaFI
GitHub Organization Signal ScannerahF8RRpv5mzPao5CN
Google Ads Transparency Center Scraper by Domain1eOwxhBVxzvOXAm4s
Google Maps Places ScraperSuvHCNJ7pIuw6gn54
Google Trends ScraperOeDzaACKmBYJXzHZk
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
Healthcare Provider NPI EnricherMrgbHzcpDq3mOv9Df
ICP Fit ScorerW161DT8W4kW55dMFh
Influencer Change Monitord2VVgahNL6UmcLkhg
Influencer Lead List BuilderKnmByszcv135yM30G
Influencer Profile ScraperEqEnklDVMIcB1V499
Influencer Search Across TikTok, Instagram and YouTubetpkedmloIIWtXx6sg
Influencer Talent Agency LookupzCuX4Mgyg6JvXgGzd
Instagram Facebook Brand Presence MapperHXh65I0JBjPsunbY8
Integration and Marketplace Presence MapperV0guNuvM85Q61f2gj
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Job Posting MonitorQCfICD9kOPiOdj5iI
Journalist and Media List BuildermAfizsZC8qRoR0ecS
Launch Directory List BuildercRq3bmvEZxZtioQ7U
Lead File Import CheckerRwlGVXTf46LqZdUgt
Legal Entity ResolverKHFyPCDIx7CyqULYm
Link in Bio Scraper and Newsletter DetectorOorucdheTIgu7RFzK
LinkedIn Company Page MapperzOPm6A9JEhUGcIdFW
LinkedIn Jobs FeedSH6N0d8cz46BhCC8B
LinkedIn Post TrackeroiGLNPuaf5BRaz9K5
Local Business Lead BuilderqMN97aoHhsAS5bznV
Local Rank and Map Pack Trackergv0kyHGDIg8XscclB
Lookalike Companies from Seed Domainse2O426WBAbLLQL4Z2
Manufacturer and Supplier FinderQcsdmd0lUfPzVkonh
MCP Server Change and Health MonitorIeqjWF9U0BdDQFY08
Media URL TranscriberSyfr7Ya3EsHgWfrB6
Meta Ad Library Ads by Company, Graph APIJ1GWlSXfSGU3u8Wng
Mobile Phone Waterfall6OOgPktf7RIa5XCOP
New Hire FindercKuc38p4nYHNF3IW8
Newly Registered Companies, UK, Norway, Finland, Franceg2WfZhWvCtc57g2Jo
News and Media Mention Monitorgol1PPUKrsIk4QLBd
Newsletter Sponsor TrackerqSwpqxD1TiPZpLQHv
Open Tender and RFP FinderkPTGz6t6TFoUUyfaO
Outbound Stack Detectorv43UJC8r7qW7cBSTG
Page Finder and ExtractorTpurgcOZbVnknlaiC
Partner and Member Directory ExtractorZX0XJPPUvnFJxeC1a
People Finder & Email VerifierLEgloG7tWgQl4o6TD
Person LinkedIn URL ResolverssuyPV8LnEsL8qbnb
Person Social Footprint MapperjfQXa2zW9FHCJot9K
Personal Email to Company ResolverAefT5Ye6YNPFQwJBf
Pinterest Brand Presence Mapperd1HvjZfKhgvWsoEwn
Podcast Guest and Host Findero2MGSvgbSLeeXOsIo
Product Hunt Daily Launches with Maker DomainsO4VX63drWK9Y9x641
Prospect Engineq9rT6v64nUJdPexOQ
Public Feature Board and Roadmap MonitorrcHF5gj5r2Vqnry35
Publishing Frequency TrackerTbLwaUUATdYb6wp4N
Recent Funding Rounds FeedKueVp9MOz7iOoAgDp
Reddit Brand Presence MapperpKQZmDaT70SEb54bZ
Reddit Search and Thread Scraper4Gsth5cP2Xt9V2xDN
Reporting Window FinderuINxR7a1IW8qUTRUX
Research Topic Institutions and AuthorsOH8ANqt7bCKbo72Gk
Sequencer Event PollerS6s8Rjd61tGdrMRk4
Sequencer Lead Push0Jv27VeWM5tSZQs9x
Shopify App Store and Chrome Web Store ListingsgaY0BzkLyN77mD3wI
Site Crawler for Links and TableslLLJ6JxZ4XqN8ULz0
Substack Newsletter and Posts ScraperUEFsdwiPLmPNVy9xd
Team Page People Extractorj8a9zX0k4mNbvDbWK
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
Tennis Match Datav3OX6zxXHZOf2yurO
Threads Posts by Keyword, Exact Match2OT8K8RiEEWtaj2MW
TikTok Brand Presence Mapperfco8FvoJcSafbeyd1
Trustpilot Reputation Enricher3lIqfCt61j4hqE1xz
US and UK Contract Award Winners by CompanyzhEtllASykOcx9hJ8
US Import Records Buyer FinderVIMafpKF5ggOw0COU
VC and Accelerator Portfolio List BuilderchH8hrfuoqqolW06m
Website Accessibility Checker, WCAG 2.2 AAP3jBj3FRghKEhX52z
Website Phrase and Business Model ClassifierCBuZ9k7sRwBeiKiCS
Website Traffic Rank EstimatorGnOFUzlNVIoXgeJjH
Work Email WaterfallOT6xqTFThC0Rjf7Zj
Workplace Program DetectorLi6pPDhqbdzFz3h7G
X Brand Presence MapperoLOgadhHUkNAyDA3w
YouTube Channel from Company Domain6hSpD3kd2s2IQ4VSs
Zillow Listing DetailsyG4zM0Enfsw2NefJ1

Built by Mamba Labs.