Bluesky Scraper & Social Listener — Posts, Mentions & Keyword avatar

Bluesky Scraper & Social Listener — Posts, Mentions & Keyword

Under maintenance

Pricing

from $1.00 / 1,000 bluesky posts

Go to Apify Store
Bluesky Scraper & Social Listener — Posts, Mentions & Keyword

Bluesky Scraper & Social Listener — Posts, Mentions & Keyword

Under maintenance

Bluesky scraper and social listening tool: monitor any account or search the whole network by keyword/hashtag via the official AT Protocol API — no browser, no anti-bot risk. Alert mode returns only new posts each run for daily brand and competitor monitoring.

Pricing

from $1.00 / 1,000 bluesky posts

Rating

0.0

(0)

Developer

Bikram

Bikram

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 days ago

Last modified

Share

Bluesky Scraper & Social Listener — Posts, Mentions & Keyword Alerts

Scrape and monitor Bluesky posts by account or keyword using the official AT Protocol API — no browser scraping, no Cloudflare risk, no DOM breakage. Schedule it daily and get only the posts you haven't seen yet. Built for brand monitoring, competitor tracking, and social listening pipelines.

Primary keywords: Bluesky scraper · Bluesky social listening · Bluesky monitoring · Bluesky keyword search · AT Protocol posts API

What it does

  • Monitor any Bluesky account — pass one or more handles and export their recent posts as clean JSON. No login required.
  • Search the whole network by keyword or hashtag — track brand mentions, competitors, or trends across all of Bluesky (app password required).
  • Alert mode — remember what you've already delivered and output only new posts on each run. Schedule it for a daily diff of fresh activity.
  • Agent-ready — call it from Claude, Cursor, or any MCP client to give your AI agent live Bluesky data.

How it works

  1. You provide handles (to monitor accounts) and/or a searchQuery (to search by keyword).
  2. For account monitoring, the Actor reads the public AT Protocol AppView (public.api.bsky.appapp.bsky.feed.getAuthorFeed) — anonymous, read-only, no credentials.
  3. For keyword search, it authenticates with your Bluesky App Password and calls app.bsky.feed.searchPosts across the network.
  4. Each post is flattened into a clean dataset record with author, text, engagement counts, and embeds.
  5. With alert mode on, post IDs from previous runs are remembered (per handle/query combination, for 90 days) and already-delivered posts are skipped before they're ever charged.

Input

FieldTypeRequiredDescription
handlesarrayone of handles/searchBluesky handles to monitor — e.g. apify.com, paulg.bsky.social. No @ needed.
searchQuerystringone of handles/searchKeyword, phrase, or hashtag to search across the network.
identifierstringonly for searchYour Bluesky handle or email (for authenticated search).
appPasswordstringonly for searchBluesky App Password (not your main password) — Settings → Privacy and Security → App Passwords.
maxRecordsintegernoMax posts to output and charge (default: 200, max: 10,000).
alertModebooleannoOutput only posts not seen in previous runs (default: false).
includeRepliesbooleannoInclude reply posts, not just top-level posts and reposts (default: false).

Example — monitor accounts (no credentials):

{
"handles": ["apify.com", "ycombinator.com"],
"maxRecords": 500,
"alertMode": true,
"includeReplies": false
}

Example — keyword search (credentials required):

{
"searchQuery": "#buildinpublic saas",
"identifier": "yourname.bsky.social",
"appPassword": "xxxx-xxxx-xxxx-xxxx",
"maxRecords": 200,
"alertMode": false
}

Output fields

Each post is one dataset item. These are the exact fields returned:

FieldTypeDescription
postIdstringContent ID (CID) of the post — stable unique identifier.
uristringAT Protocol URI (at://did:plc:.../app.bsky.feed.post/...).
urlstringPublic bsky.app permalink to the post.
authorHandlestringAuthor's Bluesky handle (e.g. apify.com).
authorDisplayNamestringAuthor's display name.
authorDidstringAuthor's decentralized identifier (DID).
textstringFull post text.
langsarrayDeclared language codes (e.g. ["en"]).
createdAtstringWhen the author created the post (ISO 8601).
indexedAtstringWhen the AppView indexed the post (ISO 8601).
likeCountintegerNumber of likes.
repostCountintegerNumber of reposts.
replyCountintegerNumber of replies.
quoteCountintegerNumber of quote posts.
isReplybooleanWhether the post is a reply to another post.
embedsarrayImage embeds ({type, alt}) or link cards ({type, uri, title}).

Example item:

{
"postId": "bafyreih...",
"uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3lb2e7y6lic2z",
"url": "https://bsky.app/profile/apify.com/post/3lb2e7y6lic2z",
"authorHandle": "apify.com",
"authorDisplayName": "Apify",
"authorDid": "did:plc:z72i7hdynmk6r22z27h6tvur",
"text": "Introducing our new MCP server — connect any Apify Actor to Claude or Cursor in one line.",
"langs": ["en"],
"createdAt": "2026-06-10T14:23:00.000Z",
"indexedAt": "2026-06-10T14:23:01.521Z",
"likeCount": 142,
"repostCount": 38,
"replyCount": 12,
"quoteCount": 4,
"isReply": false,
"embeds": [{"type": "link", "uri": "https://apify.com/mcp", "title": "Apify MCP Server"}]
}

Use cases

  • Brand & social media manager — track every mention of your brand or product across Bluesky with a keyword search, and get a daily alert-mode digest of new conversations.
  • Competitor analyst — monitor your competitors' handles and watch what they post, how often, and what gets engagement.
  • Growth / founder (build-in-public) — search #buildinpublic or your niche keywords to find prospects, partners, and trends in real time.
  • Researcher / journalist — export a clean JSON dataset of posts on any topic for analysis, with engagement counts and timestamps.
  • AI agent builder — feed live Bluesky data into a Claude/Cursor agent via MCP for summarization, sentiment, or trend detection.

Setting up daily alerts (alert mode + Apify Schedules)

  1. Set your handles or search query and enable alertMode: true.
  2. Create an Apify Schedule to run the Actor daily.
  3. Add a webhook integration: email, Slack, Make/Zapier, or direct to your database.
  4. Each run outputs only posts that previous runs haven't already delivered — and only those new posts are charged.

Alert history is keyed per handle/query combination. Changing the handles or query starts a fresh history (by design). Remembered post IDs are pruned automatically after 90 days.

Pricing — $1 per 1,000 posts

This Actor uses pay-per-event pricing. There is no subscription and no monthly fee — you pay only for the posts you actually receive.

EventPriceWhen charged
bluesky-post$0.001Once per post written to the dataset
  • $1 = 1,000 posts. A run that returns 50 posts costs $0.05.
  • In alert mode, already-seen posts are skipped before the charge call — they are never billed.
  • A run that finds no posts charges nothing.

Use from Claude, Cursor & AI agents (MCP)

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/sse?actors=bikram07/bluesky-social-listener",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}

Ask your agent: "What has @apify.com posted on Bluesky in the last 7 days? Summarize the themes."

Or via API:

curl -X POST "https://api.apify.com/v2/acts/bikram07~bluesky-social-listener/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"handles": ["apify.com"], "maxRecords": 50}'

What it does NOT do (limitations)

  • Keyword/hashtag search needs an App Password. Bluesky's searchPosts endpoint is authenticated; monitoring specific accounts by handle does not need credentials.
  • No DMs, no private accounts, no follower graphs. It returns public posts only — text, engagement counts, and embeds — not direct messages or private data.
  • No sentiment analysis or charts built in. It delivers structured post data; analysis (sentiment, summaries, dashboards) is up to your pipeline or AI agent.
  • Engagement counts are a point-in-time snapshot from when the post was fetched, not a live-updating stream.
  • Not affiliated with Bluesky PBC. This is an independent tool built on the open AT Protocol.

FAQ

Is this a subscription? No. It's pay-per-event — $1 per 1,000 posts, with no monthly fee and no minimum. You pay only for the posts you receive.

How does the pricing work, and what about refunds? You're charged $0.001 each time a post is written to your dataset (so 1,000 posts = $1). In alert mode, posts you've already received are skipped before any charge, and runs that return nothing cost nothing. Billing is handled by Apify; refunds follow the Apify platform billing terms.

Does it use official APIs, or does it scrape? It uses the official AT Protocol API end to end — the public AppView (public.api.bsky.app) for account feeds and the authenticated bsky.social endpoint for keyword search. No HTML scraping, no headless browser, no anti-bot evasion.

Do I need a Bluesky account to use this? Only for keyword search (searchQuery). Monitoring specific accounts by handle works with no credentials at all — the public AppView serves that data openly.

What is an App Password and how do I create one? An App Password is a limited-access token that lets third-party apps read your account without your real password, DMs, or settings. Create one at bsky.app → Settings → Privacy and Security → App Passwords. Name it something like "Apify Social Listener".

How is this different from a one-shot Bluesky scraper? Most Bluesky scrapers run once and dump posts. This Actor is built for ongoing monitoring: alert mode + scheduling means each run only charges for new posts and delivers a clean daily diff — no deduplication code to write yourself.

Bluesky scraper · Bluesky posts API · AT Protocol data · Bluesky social monitoring · Bluesky keyword alert · Bluesky brand monitoring · Bluesky mentions tracker · Bluesky feed export · social listening tool · bluesky.social scraper


Built on the AT Protocol public AppView. Not affiliated with Bluesky PBC.