VOOZH about

URL: https://apify.com/danielainsworth/bluesky-posts

โ‡ฑ Scrape Bluesky Posts: Search, Author Feed and Threads ยท Apify


๐Ÿ‘ Scrape Bluesky Posts: Search, Author Feed and Threads avatar

Scrape Bluesky Posts: Search, Author Feed and Threads

Under maintenance

Pricing

from $0.003 / record scraped

Go to Apify Store

Scrape Bluesky Posts: Search, Author Feed and Threads

Under maintenance

Extract posts from Bluesky by keyword search, author feed, or full thread. Engagement metrics, images, embeds. Uses official AT Protocol API.

Pricing

from $0.003 / record scraped

Rating

0.0

(0)

Developer

๐Ÿ‘ Daniel Ainsworth

Daniel Ainsworth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

23 days ago

Last modified

Share

Scrape Bluesky Posts โ€” Search, Author Feed & Threads

Extract posts from Bluesky Social with full engagement metrics, images, and author data. Three scraping modes in one actor: keyword search, author feed, and full thread extraction. Built on the official AT Protocol API โ€” no browser automation, no unofficial tricks, no fragile DOM scraping.

Works without authentication for author feeds and threads. Keyword search requires a free Bluesky App Password.


What data you get

Each post returns a clean JSON record:

{
"uri":"at://did:plc:abc123/app.bsky.feed.post/3lhxxxxxxxxx",
"cid":"bafyreiabc123",
"url":"https://bsky.app/profile/user.bsky.social/post/3lhxxxxxxxxx",
"text":"Interesting thread on B2B SaaS pricing โ€” companies that charge per seat are leaving money on the table ๐Ÿงต",
"language":"en",
"authorDid":"did:plc:abc123",
"authorHandle":"user.bsky.social",
"authorDisplayName":"User Name",
"authorAvatar":"https://cdn.bsky.app/img/avatar/...",
"createdAt":"2025-11-15T10:30:00.000Z",
"indexedAt":"2025-11-15T10:30:12.000Z",
"likeCount":142,
"repostCount":28,
"replyCount":19,
"quoteCount":6,
"images":[
{
"thumb":"https://cdn.bsky.app/img/feed_thumbnail/...",
"fullsize":"https://cdn.bsky.app/img/feed_fullsize/...",
"alt":"Chart showing revenue vs seat count"
}
],
"externalEmbed":{
"uri":"https://example.com/article",
"title":"The Hidden Cost of Per-Seat Pricing",
"description":"Why usage-based pricing outperforms seat pricing in B2B SaaS",
"thumb":"https://..."
},
"quotedPostUri":null,
"labels":[],
"isReply":false,
"replyToUri":null,
"rootPostUri":null,
"scrapedAt":"2026-01-15T14:22:00.000Z"
}

Scraping modes

1. Search posts (searchPosts)

Search Bluesky for any keyword, hashtag, or phrase. Returns posts in order of newest first or most-engaged first.

Requires a free Bluesky App Password โ€” Bluesky's search API requires authentication. Your main password is never used.

Input:

{
"mode":"searchPosts",
"searchQuery":"#buildinpublic",
"sort":"top",
"since":"2025-01-01",
"until":"2025-12-31",
"lang":"en",
"maxResults":500,
"blueskyHandle":"yourname.bsky.social",
"blueskyAppPassword":"xxxx-xxxx-xxxx-xxxx"
}

Supported query syntax:

  • Keywords: SaaS pricing
  • Hashtags: #buildinpublic
  • From a specific account: from:user.bsky.social topic
  • Phrase: "exact phrase here"

2. Author feed (authorFeed)

Get all posts from one or more Bluesky accounts. Useful for monitoring competitors, tracking thought leaders, or auditing your own content. No authentication required.

Input:

{
"mode":"authorFeed",
"handles":["paulgraham.bsky.social","marc.bsky.social"],
"maxResults":200,
"includeReplies":false
}

Set includeReplies: true to also include reply posts from the author (off by default to return only original posts).

3. Full thread (thread)

Fetch a complete thread โ€” root post plus all replies โ€” from a post URL. Useful for extracting conversations, support threads, or discussion chains.

No authentication required.

Input:

{
"mode":"thread",
"threadUri":"https://bsky.app/profile/user.bsky.social/post/3lhxxxxxxxxx"
}

Accepts either a bsky.app URL or an at:// URI directly.


Input parameters

ParameterTypeRequiredDescription
modestringโœ…searchPosts, authorFeed, or thread
searchQuerystringsearchPostsKeyword, hashtag, or phrase to search
handlesstring[]authorFeedBluesky handles (e.g. ["user.bsky.social"])
threadUristringthreadPost URL or at:// URI
maxResultsnumberโ€”Max posts to return (default: 100, max: 10,000)
sortstringโ€”latest or top (searchPosts only, default: latest)
sincestringโ€”Start date, ISO format (searchPosts only)
untilstringโ€”End date, ISO format (searchPosts only)
langstringโ€”Language filter, e.g. en (searchPosts only)
includeRepliesbooleanโ€”Include reply posts (authorFeed only, default: false)
blueskyHandlestringsearchPostsYour Bluesky handle for auth
blueskyAppPasswordstringsearchPostsApp Password (not your main password)

Output fields

FieldTypeDescription
uristringAT Protocol URI of the post
cidstringContent identifier (cryptographic hash)
urlstringDirect link to the post on bsky.app
textstringFull post text content
languagestring|nullLanguage code of the post (en, de, etc.)
authorHandlestringBluesky handle of the author
authorDisplayNamestring|nullAuthor's display name
authorAvatarstring|nullURL to the author's profile picture
createdAtstringWhen the post was created (ISO 8601)
likeCountnumberNumber of likes
repostCountnumberNumber of reposts
replyCountnumberNumber of replies
quoteCountnumberNumber of quote posts
imagesarrayAttached images with thumb, fullsize, alt URLs
externalEmbedobject|nullLinked article preview (uri, title, description, thumb)
quotedPostUristring|nullAT URI of any quoted post
labelsstring[]Content labels applied by moderators
isReplybooleanWhether this post is a reply
replyToUristring|nullAT URI of the parent post (if reply)
rootPostUristring|nullAT URI of the thread root (if reply)
scrapedAtstringTimestamp when this record was scraped

Use cases

Brand monitoring and social listening

Search for your brand name, product, or competitors across Bluesky. Track sentiment shifts over time by running the actor on a schedule and comparing engagement metrics. Bluesky's growing B2B/tech audience makes it increasingly valuable for enterprise brand monitoring alongside Twitter/X.

Competitive intelligence

Pull the last 6 months of posts from competitor accounts using authorFeed mode. Analyse what content generates the most engagement (likes + reposts + quotes) to identify their messaging strategy and topic focus.

Influencer research and outreach

Before reaching out to a Bluesky account for a partnership, run authorFeed on their handle to audit posting frequency, average engagement, and content themes. Export to CSV for your sales or marketing team.

Lead generation and intent signals

Search for posts where users describe a problem you solve โ€” #buildinpublic struggling with, "looking for a tool that", "anyone recommend" + your category. These are high-intent signals from people actively seeking solutions.

Academic research and trend analysis

Track public discourse on any topic with date-range filtering. Extract posts from a specific period, export as JSON or CSV, and analyse in Python or Excel. The AT Protocol's open design means data availability is not subject to arbitrary API access changes.


Pricing

This actor uses Pay Per Event (PPE) pricing โ€” you only pay for what you scrape:

EventPrice
Actor startup$0.25 per run
Post scraped$0.003 per post ($3.00 per 1,000)

Example costs:

  • 100 posts: $0.25 + $0.30 = $0.55
  • 1,000 posts: $0.25 + $3.00 = $3.25
  • 10,000 posts: $0.25 + $30.00 = $30.25

No monthly subscription. No minimum usage. Only pay when you run the actor.


Authentication setup

For searchPosts mode, you need a Bluesky App Password (not your main account password):

  1. Log in to bsky.app
  2. Go to Settings โ†’ App Passwords
  3. Click Add App Password, give it a name (e.g. "Apify Scraper")
  4. Copy the generated password and paste it into the blueskyAppPassword field

App Passwords are revocable and can't access your DMs or account settings. Safe to use in Apify actors.


Technical notes

  • Built on the AT Protocol public API โ€” no unofficial scraping
  • public.api.bsky.app endpoints have generous rate limits; the actor adds a 300ms delay between paginated requests to stay well within them
  • Failed requests are automatically retried up to 3 times with exponential backoff
  • Rate limit responses (HTTP 429) are handled with automatic back-off using the retry-after header
  • Thread mode recursively flattens the full reply tree to a depth of 6 levels

Limitations

  • searchPosts date range filtering depends on Bluesky's search index โ€” very old posts (6+ months) may not be returned for all queries
  • Thread depth is limited to 6 levels of replies; deeply nested threads are truncated at that depth
  • Bluesky does not expose follower counts in post views โ€” if you need author follower counts, run authorFeed mode and cross-reference with the Bluesky user profile API separately

You might also like

BlueSky Author Feed Scraper

sandaliaapps/bluesky-author-feed-scraper

Extract posts, engagement metrics, author details, embeds, and metadata from Bluesky author feeds in structured JSON format.

2

Bluesky Scraper โ€” Posts, Profiles & Search via AT Protocol

junipr/bluesky-scraper

Scrape Bluesky posts, profiles, threads, and search results via AT Protocol. Extract text, engagement metrics, media, and author data. 4 modes: feed, profile, search, thread. Export JSON/CSV. No auth required.

Bluesky Posts Search Scraper

codingfrontend/bluesky-posts-search-scraper

Search and scrape posts from Bluesky social network using the AT Protocol public API. Collect post text, author info, engagement metrics, and more.

๐Ÿ‘ User avatar

codingfrontend

1

Bluesky Scraper

kelvinosse/bluesky-scraper

Scrape profiles, posts, followers, and threads from Bluesky AT Protocol API.

Bluesky Omni Scraper

actorpilot/bluesky-scraper

Extract posts, profiles, threads and followers from Bluesky via the official AT Protocol API. Search by keyword or hashtag, scrape author feeds, full threads and follower lists. No browser, no login. Export to JSON, CSV or Excel.

Bluesky Scraper

legend006/bluesky-firehose-scraper

Scrape Bluesky (AT Protocol) posts by keyword, hashtag, author handle, or custom feed. Export likes, reposts, replies, hashtags, mentions, embeds, and full metadata as JSON or CSV. Built for AI training datasets, social analytics, brand monitoring, and trend tracking.

Bluesky Scraper โ€” Posts, Profiles & Search

aurumworks/bluesky-scraper

Scrape Bluesky social network. Search posts by keyword, get user profiles, fetch user feeds, and extract post threads with replies. Uses Bluesky's official public API. No login or API key needed.

Bluesky Scraper โ€” Feed Posts

devilscrapes/bluesky-feed-posts

Export posts from any public Bluesky custom or algorithm feed via the AT Protocol API โ€” feed metadata and engagement counts โ€” to JSON or CSV. No login needed; we page through and retry so the whole feed lands.