Nobody is monitoring Bluesky, so I built a mentions scraper for it
I wanted to know when people mention a brand on Bluesky. Simple ask. Turns out Brandwatch, Mention, Hootsuite, basically every social listening tool, still doesn't cover it. They're all busy with X and Instagram while Bluesky sits at 27M+ monthly users.
So I looked at doing it myself and found out something most people miss: you don't need to scrape anything. Bluesky runs on the AT Protocol, which is open by design. Public posts are searchable through a documented endpoint. No login, no API key.
GET https://api.bsky.app/xrpc/app.bsky.feed.searchPosts?q=YOUR_BRAND&sort=latest&limit=100
That returns full post objects. Text, author handle, timestamps, like/repost/reply counts, embedded links, hashtags. Everything you need.
Two things that broke my first version
Worth writing down because most tutorials get this wrong now:
- The
public.api.bsky.apphost that older guides point to returns 403 for search. Useapi.bsky.appinstead. - As of July 2026, unauthenticated search rejects cursor pagination. Page one works fine, page two gets you a 403 with "request forbidden by administrative rules". The nasty part is it looks like rate limiting, but it isn't.
The workaround: paginate by time. Use sort=latest, then pass until= with the createdAt of the oldest post from the previous page. Dedupe on uri because the boundary post shows up twice.
If you don't want to maintain any of that
I packaged the whole job as an Apify actor: Bluesky Mentions Scraper. Keywords in, clean JSON out. It handles the pagination and retry stuff above, filters replies if you want, scores basic sentiment, and can pull follower counts for each author so you can sort mentions by reach.
Runs on a schedule, exports CSV, plugs into Slack or n8n through Apify's integrations. It also works as an MCP tool inside Claude or Cursor. Pricing is per result, $4 per 1,000 mentions. No subscription.
What I actually monitor
- Brand and product names plus the common misspellings.
- Competitor names, because share of voice on Bluesky is cheap to win while nobody else is looking.
- The domain itself, since people share links without naming you.
- Category phrases like "best CRM", which is where the buying-intent threads live.
One last thing
Bluesky's culture is rough on brands that show up three days late to a complaint thread. If you set up monitoring, run it hourly, not weekly.
Comments
No comments yet. Start the discussion.