Home › Monitoring and research › Bluesky Scraper API
Scrape Bluesky posts by keyword or hashtag, author feeds, profiles, followers and follows from the public API. Engagement counts, links, media and dates. No login.
| Field | Name | Required | What it does |
|---|---|---|---|
mode | What to scrape | no | Search posts and Search profiles use Search terms. The other modes use Handles. |
searchTerms | Search terms | no | Keywords, phrases ("exact phrase") or hashtags (#python). One search per term. Used by Search posts and Search profiles. |
handles | Handles | no | Bluesky handles or profile URLs, e.g. bsky.app, @apify.com or https://bsky.app/profile/bsky.app. Used by Author feed, Profiles, Followers and Follows. |
maxItems | Max results | no | Total rows to return across all terms or handles (shared evenly). You are charged per row returned. |
sort | Search order | no | Applies to Search posts. |
since | Posted since | no | Only posts at or after this date/time, e.g. 2026-10-01 or 2026-10-01T12:00:00Z. Search posts only. |
until | Posted until | no | Only posts before this date/time. Search posts only. |
language | Language | no | Two-letter language code such as en, pt or ja. Search posts only. |
fromAuthor | Only from this author | no | Restrict a keyword search to one handle, e.g. apify.com. Search posts only. |
linkDomain | Only posts linking to domain | no | Only posts that link to this domain, e.g. github.com. Search posts only. |
minLikes | Minimum likes | no | Skip posts with fewer likes than this (skipped posts are never charged). Search posts and Author feed. |
feedFilter | Author feed contents | no | Applies to Author feed. |
includeReposts | Include reposts | no | In Author feed, include posts the account reposted (marked source = repost). |
One row per result. These are the 46 fields declared in the actor's dataset schema (field list from the schema, not a sample run).
| Field | Type | Meaning |
|---|---|---|
recordType | string | |
uri | string | |
cid | string | |
url | string | |
text | string | |
createdAt | string | |
indexedAt | string | |
authorDid | string | |
authorHandle | string | |
authorDisplayName | string | |
authorAvatar | string | |
authorProfileUrl | string | |
likeCount | integer | |
repostCount | integer | |
replyCount | integer | |
quoteCount | integer | |
bookmarkCount | integer | |
languages | array | |
isReply | boolean | |
replyParentUri | string | |
replyRootUri | string | |
quotedPostUri | string | |
hashtags | array | |
mentionedDids | array | |
links | array | |
mediaType | string | |
imageUrls | array | |
videoPlaylistUrl | string | |
externalLinkUrl | string | |
externalLinkTitle | string | |
labels | array | |
query | string | |
source | string | |
scrapedAt | string | |
did | string | |
handle | string | |
displayName | string | |
description | string | |
avatar | string | |
banner | string |
Public data only, no login. Fields a source does not publish come back empty rather than guessed. Coverage and freshness follow the underlying public source.
Pay on Apify, no subscription: $0.00093 per record returned on the free plan, down to $0.00056 on higher plans (pay per event, tiered). The live price is on the actor page.
Disclosure: we build and maintain this actor.