Bluesky Scraper — Profiles, Posts & Search API avatar

Bluesky Scraper — Profiles, Posts & Search API

Pricing

from $1.30 / 1,000 search record extracteds

Go to Apify Store
Bluesky Scraper — Profiles, Posts & Search API

Bluesky Scraper — Profiles, Posts & Search API

Scrape Bluesky (bsky.app) profiles & posts into clean structured data — followers, bio, engagement counts, media, links. Search by keyword or pull full profiles + post feeds. JSON/CSV/Excel. No login or API key needed.

Pricing

from $1.30 / 1,000 search record extracteds

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

Bluesky Scraper — Profiles, Posts & Search Data 🦋

SIÁN Agency Store Xiaohongshu Scraper Weibo Scraper Instagram AI Transcript

🎉 Turn the AT Protocol's open social graph into a clean, structured dataset — profiles, posts, search and full author feeds in one run.

For social listeners, growth marketers, researchers and lead-gen teams who need Bluesky data without writing code.


📋 Overview

Bluesky Scraper pulls public Bluesky (bsky.app) data into ready-to-use datasets — search the network by keyword, or hand it specific accounts and get the full picture: followers, bio, post counts, engagement metrics, media and links.

Why thousands of professionals choose us:

  • Two modes, one tool: cheap keyword Search (many profiles or posts) + full Detail (complete profiles + post feeds)
  • Fast & clean: up to 100 records per request, cursor-paginated, returned as tidy JSON/CSV/Excel
  • 🎯 40+ structured fields: handles, bios, follower/following/post counts, likes, reposts, replies, quotes, bookmarks, embeds, media and language tags
  • 💰 Best price on the market: transparent pay-per-result — only pay for records you actually receive
  • 💎 Native filters: sort, language, date range, author, mentions, link domain and hashtag — Bluesky's own search filters exposed
  • No login, no API key: works entirely on public data, zero setup

✨ Features

  • 🔎 Keyword Search: find profiles or posts matching any term, across the whole network
  • 👤 Full Profile Detail: follower / following / post counts, verification status, avatar & banner
  • 📝 Author Feeds: pull a profile's recent posts with full engagement metrics and embeds
  • 🎚️ Post Filters: top/latest sort, language, since/until dates, author, mentions, domain, hashtag
  • 🔗 Search-URL Input: paste a Bluesky search URL and keep all its filters
  • 📊 Engagement Metrics: likes, reposts, replies, quotes and bookmarks on every post
  • 🖼️ Media Extraction: avatar, banner, post images, video thumbnails and external link cards
  • 🚀 Bulk Mode: many search terms or many profiles in a single run
  • 📤 Clean Exports: JSON, CSV and Excel straight from the Apify dataset

🎬 Quick Start

Pick a mode, give it a term or a profile, hit Start. Results stream into the dataset as they're found. Export to JSON/CSV/Excel when done.

curl -X POST https://api.apify.com/v2/acts/sian.agency~bluesky-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"scrapeMode": "search", "recordType": "profiles", "searchTerm": "los angeles"}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose a mode

Search to discover many records by keyword, or Detail to fully profile specific accounts.

Step 2: Enter your target

A search term (or several), or one or more profiles (handle, DID, or bsky.app/profile/... URL).

Step 3: Run & export

Click Start, then download your dataset as JSON, CSV or Excel.

That's it! In under a minute, you'll have:

  • Structured profile or post records
  • Full engagement and follower metrics (Detail mode)
  • A clean dataset ready for analysis or import

📥 Input Configuration

FieldTypeRequiredDescription
scrapeModestringNosearch (keyword → many) or detail (profiles → full)
recordTypestringNoIn search mode: profiles or posts
searchTermstringNoA keyword/phrase to search
searchTermsarrayNoMultiple keywords (bulk search)
searchUrlstringNoPaste a Bluesky search URL (filters preserved)
profilestringNoA single profile (handle / DID / URL) for Detail mode
profilesarrayNoMultiple profiles for bulk Detail
includeFeedbooleanNoDetail mode: also pull each profile's post feed
feedPagesintegerNoFeed pages per profile (100 posts each)
sort, lang, since, until, author, mentions, domain, tagstringNoPost-search filters
maxResultsintegerNoCap on records per run (FREE: 25, PAID: unlimited)
maxPagesintegerNoCursor pages per search term

Search example:

{
"scrapeMode": "search",
"recordType": "posts",
"searchTerm": "wildfire",
"sort": "latest",
"lang": "en",
"maxPages": 3
}

Detail example (profiles + feed):

{
"scrapeMode": "detail",
"profiles": ["laist.com", "https://bsky.app/profile/bsky.app"],
"includeFeed": true,
"feedPages": 2
}

📤 Output

Results are saved to the Apify dataset with 40+ fields including:

FieldTypeDescription
urlstringPublic bsky.app URL
handlestringAccount handle
displayNamestringProfile display name
descriptionstringProfile bio
followers_countnumberFollower count (Detail)
posts_countnumberTotal posts (Detail)
verifiedbooleanVerification status
textstringPost text
author_handlestringPost author
like_count / repost_count / reply_countnumberEngagement metrics
embed_typestringimages / video / external / record
imagesarrayMedia URLs
created_atstringCreation timestamp

Example (profile):

{
"id": "did:plc:kosvedukjcyvdfv64zltdauy",
"url": "https://bsky.app/profile/laist.com",
"handle": "laist.com",
"displayName": "LAist",
"followers_count": 9901,
"follows_count": 41,
"posts_count": 296,
"verified": true
}

Example (post):

{
"url": "https://bsky.app/profile/laist.com/post/3moxztpaf4x27",
"text": "Today in L.A. ...",
"author_handle": "laist.com",
"like_count": 42,
"repost_count": 7,
"reply_count": 3,
"embed_type": "images",
"langs": ["en"]
}

💼 Use Cases & Examples

1. Social Listening & Brand Monitoring

Marketing teams tracking what's said about a brand, topic or campaign on Bluesky. Input: keyword(s) in posts mode · Output: posts with engagement · Use: spot trends and sentiment early.

2. Influencer & Creator Discovery

Agencies finding accounts in a niche, ranked by reach. Input: keyword in profiles mode, then Detail for follower counts · Output: profiles with audience size · Use: build outreach lists.

3. Lead Generation

B2B teams collecting public handles, bios and links from a community. Input: keyword search → profile detail · Output: structured profile records · Use: enrich a prospect list.

4. Academic & Trend Research

Researchers studying conversations, hashtags or news diffusion on the AT Protocol. Input: posts with date/lang/hashtag filters · Output: dated, language-tagged posts · Use: time-series analysis.

5. Competitor & Audience Analysis

Growth teams benchmarking accounts and their content. Input: profiles + feed · Output: follower counts + post performance · Use: compare engagement.

6. Newsroom & Journalism

Reporters monitoring official accounts and breaking-news posts. Input: author/domain filters · Output: posts linking a source · Use: verify and source stories.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/bluesky-scraper').call({
scrapeMode: 'search', recordType: 'profiles', searchTerm: 'los angeles'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/bluesky-scraper').call(
run_input={'scrapeMode': 'detail', 'profiles': ['laist.com'], 'includeFeed': True}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~bluesky-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode": "search", "recordType": "posts", "searchTerm": "nba", "sort": "top"}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: Schedule or webhook
  2. HTTP Request: Call the actor API
  3. Process: Handle JSON results
  4. Action: Save, notify, or transform

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 records per run — full feature access, same quality
  • No credit card required
  • Perfect for testing and small projects
  • Unlimited records per run
  • Faster, uninterrupted runs
  • Pay-per-result: only charged for records you actually receive

💰 Best price on the market — transparent, low per-record pricing with no monthly minimum.

🔗 View current pricing


❓ Frequently Asked Questions

Q: How many records can I get? A: FREE tier: 25 per run. PAID tier: unlimited.

Q: Do I need a Bluesky account or API key? A: No. The actor only reads publicly available data — no login, no key, no setup.

Q: Can I get follower counts? A: Yes — use Detail mode. Keyword search returns lightweight profile cards; Detail mode fills in follower/following/post counts.

Q: What output formats are available? A: JSON, CSV and Excel — export directly from the Apify dataset.

Q: Can I filter posts by date, language or hashtag? A: Yes — posts search supports sort, language, since/until dates, author, mentions, link domain and hashtag.

Q: Is this legal? A: We only extract publicly available data. See the legal note below.


🐛 Troubleshooting

No results in search mode

  • Check your term isn't too narrow; try top sort for posts.
  • Increase maxPages to fetch more cursor pages.

Profile not found in Detail mode

  • Verify the handle/DID is correct; pasted profile URLs and @handle are both accepted.

Follower counts are empty

  • Keyword search doesn't include counts by design — switch to Detail mode for full counts.

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.


⚠️ Disclaimer

This is an independent tool for extracting publicly available data. It is not affiliated with, endorsed by, or sponsored by Bluesky Social, PBC, or the Bluesky/AT Protocol project. "Bluesky" and related marks are the property of their respective owners and are used here for descriptive purposes only.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools