Bluesky Posts Scraper avatar

Bluesky Posts Scraper

Pricing

from $1.00 / 1,000 post scrapeds

Go to Apify Store
Bluesky Posts Scraper

Bluesky Posts Scraper

Scrape Bluesky posts by keyword or profile. Supports hashtags, quoted phrases, and @handle filters. Filter by date, sort latest or top, toggle replies/reposts. Uses the public AT Protocol API — no proxies or browser needed. Output ready for brand monitoring, research, and social analytics.

Pricing

from $1.00 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Darren S

Darren S

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Export Bluesky posts by keyword search or user profile — no browser required. Get post text, author, engagement metrics, timestamps, and embedded media URLs in a clean JSON or CSV dataset. Works with the public AT Protocol API.

What it does

  • Keyword search — search Bluesky for any term and collect matching posts (requires Bluesky credentials for search)
  • Profile scraping — scrape posts from any public Bluesky profile without credentials
  • Filter by date range, include or exclude replies and reposts
  • Returns structured data ready to export as JSON, CSV, or Excel

Use cases

  • Social listening — track mentions of your brand, product, or topic on Bluesky
  • Trend research — collect posts around a hashtag or keyword for analysis
  • Competitor monitoring — see what's being posted about competitors
  • Influencer research — pull posts from specific Bluesky accounts
  • Sentiment analysis — feed posts into NLP pipelines or AI models
  • Dataset building — create Bluesky post datasets for research or fine-tuning

Input

FieldTypeDescription
searchQueriesstring[]Keywords to search (e.g. ["AI tools", "#buildinpublic"]). Requires Bluesky credentials.
profilesstring[]Bluesky handles to scrape (e.g. ["jack.bsky.social"]). Public — no credentials needed.
maxPostsintegerMax posts to collect per query or profile (default: 100).
sortBystringlatest (default) or top.
sinceDatestringOnly collect posts after this date (ISO format: "2025-01-01").
includeRepliesbooleanInclude reply posts when scraping profiles (default: false).
includeRepostsbooleanInclude reposts when scraping profiles (default: false).
blueskyIdentifierstringYour Bluesky handle or email (required for keyword search).
blueskyAppPasswordstringYour Bluesky app password (required for keyword search). Create one at Settings → App Passwords.

At least one of searchQueries or profiles must be provided.

Note: Keyword search requires a Bluesky account. Profile scraping is public and does not require credentials.

Output

Each result is one post:

{
"uri": "at://did:plc:abc123/app.bsky.feed.post/xyz789",
"cid": "bafyreig...",
"author_handle": "alice.bsky.social",
"author_display_name": "Alice",
"text": "Just shipped a new feature! #buildinpublic",
"created_at": "2026-07-20T14:32:00Z",
"like_count": 42,
"repost_count": 11,
"reply_count": 5,
"is_reply": false,
"is_repost": false,
"embed_type": null,
"embed_url": null,
"query": "#buildinpublic",
"post_url": "https://bsky.app/profile/alice.bsky.social/post/xyz789"
}

Pricing

This actor uses Pay per result pricing:

  • $1.00 per 1,000 posts scraped
  • A run collecting 200 posts costs ~$0.20

Frequently asked questions

Do I need a Bluesky account to use this? For keyword/hashtag search: yes, you need a Bluesky handle and app password. For profile scraping (collecting posts from a specific user), no credentials are needed — public profiles are accessible via the AT Protocol API.

How do I create an app password? Log in to Bluesky → Settings → Privacy & Security → App Passwords → Add App Password. Use the generated password as blueskyAppPassword. Do not use your main account password.

What's the maximum number of posts I can collect? Set maxPosts up to any number. In practice, Bluesky's search API paginates in batches of 100. Very high limits on keyword searches may be rate-limited — 500–1,000 posts per query is a reliable range.

Can I filter posts by date? Yes. Set sinceDate to an ISO date string (e.g. "2026-01-01") to only collect posts after that date.


More from dbott23

ActorWhat it does
App Store & Google Play Reviews ScraperExport iOS and Android app reviews by keyword or app ID
Trustpilot Reviews ScraperExport Trustpilot reviews to CSV or JSON — no API key needed
B2B Reviews ScraperPull reviews from G2, Capterra, and Trustpilot in one run
AI Brand Visibility TrackerTrack how AI assistants mention your brand vs. competitors
AI Citation AuditorCheck if your website is cited by ChatGPT, Perplexity, and Gemini
Reddit Posts ScraperScrape posts, comments, and user histories from any subreddit
YouTube Comments ScraperExport comments from any YouTube video — no proxies needed
Google Maps Reviews ScraperExtract reviews from any Google Maps business listing