Bluesky Monitor — Hashtags, Profiles & Webhooks avatar

Bluesky Monitor — Hashtags, Profiles & Webhooks

Pricing

from $0.80 / 1,000 post results

Go to Apify Store
Bluesky Monitor — Hashtags, Profiles & Webhooks

Bluesky Monitor — Hashtags, Profiles & Webhooks

Watch Bluesky hashtags live, pull profile feeds, and get webhook alerts for only-new posts. Built on Jetstream for cloud-friendly monitoring — schedule it, don’t babysit it.

Pricing

from $0.80 / 1,000 post results

Rating

0.0

(0)

Developer

Abaddon

Abaddon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

23 days ago

Last modified

Share

Bluesky Hashtag Monitor & Scraper — Live Jetstream, Profile Feeds & Webhook Alerts

Bluesky Monitor by Abaddon is a production-ready Apify Actor for Bluesky hashtag monitoring, social listening, and scheduled only-new alerts. It listens on the public live Jetstream firehose for hashtags, pulls profile feeds by handle, and pairs with Apify Schedule + webhook so your agency stack gets new posts without babysitting a long run.

Use it for brand hashtags, campaign tags, competitor handles, and lightweight social listening on Bluesky / AT Proto — without pretending keyword AppView search or a full archive works from the cloud.

Honest limits up front: Jetstream is live + short free lookback, not a historical archive. Keyword AppView search is experimental and usually returns HTTP 403 from Apify cloud. Prefer hashtag or profile.


Screenshots

Store listing, Example tasks, and a Posts dataset from a real run:

Bluesky Monitor on Apify Store

Store page — Try for free, PPE from $0.80 / 1k posts, Example tasks on the Tasks tab.


Hashtag demo input fields

Example task input — hashtag mode, #art, max 10 posts, short Jetstream window.


Schedule hashtag monitor Example task

Published Example task: Schedule a Bluesky hashtag monitor with webhook — only-new + optional webhook for Apify Schedule.


Dataset posts from a live art hashtag run

Posts dataset preview from a real #art Jetstream run (tag, text, time, link).

Also try: live #art hashtag · profile feed


What can Bluesky Monitor do?

Use caseHow
Brand / campaign hashtag monitoringLive Jetstream listen for tags; Schedule every 5–15 min with mode=monitor
Webhook alerts for only-new postswebhookUrl + KV watermarks — Slack, Make, n8n, or your own HTTPS inbox
Competitor or creator watchesprofile mode on handles; optional monitor + monitorSource=profile
Topic / trend samplingShort hashtag runs on busy tags (maxItems + jetstreamMaxSeconds)
Agency / automation pipelinesDataset export (JSON/CSV/Excel) or Apify API → classifiers, digests, dashboards
What you collectFeatures
Hashtag posts from the live networkRegion failover + reconnect backoff
Profile / author feeds by handleSchedule-friendly short listen windows
Only-new posts across runsOptional webhook on new posts
Text, URI, time, author DID, matched tagsClear OUTPUT stats for support

Sample output

Each dataset item is one normalized Bluesky post:

{
"platform": "bluesky",
"uri": "at://did:plc:…/app.bsky.feed.post/…",
"url": "https://bsky.app/profile/…/post/…",
"text": "Shipping on AT Proto today #art",
"createdAt": "2026-09-22T10:00:00.000Z",
"author": { "did": "did:plc:…", "handle": "someone.bsky.social" },
"authorHandle": "someone.bsky.social",
"hashtags": ["art"],
"matchedQuery": "#art",
"matchedOn": "#art",
"mode": "hashtag",
"likeCount": 0,
"repostCount": 0
}

Items also dual-write shared cross-check fields (platform, matchedOn, authorId, language, media) alongside the Bluesky names above — same row shape for joining with sibling monitors.

Live Jetstream rows often show likeCount / repostCount as 0 at create time, and handle may be unset until AppView enrichment — URI, text, createdAt, and author DID are the stable fields.


How much does Bluesky hashtag monitoring cost?

Pay-per-event (PPE) — platform usage included (no compute-unit pass-through on Store pricing):

EventWhenPrice (USD)
actor-startOnce per run$0.005
post-resultPer post written to the dataset$0.0008 ($0.80 / 1k)
monitor-checkPer watermark check (monitor mode)$0.0003

Buyer math (examples):

  • 1 scheduled monitor run, 5 new posts → ≈ $0.0093
  • Quiet hashtag (0 matches) → $0.005 start (+ $0.0003 in monitor mode) — you are not billed invented posts

Keep jetstreamMaxSeconds short (60–120s) and use an Apify Schedule for ongoing watches instead of multi-hour single runs.


How to scrape Bluesky hashtags / monitor with Schedule + webhook

  1. Open Bluesky Monitor in Apify Console (or create a free Apify account first).
  2. Set mode to hashtag (one-shot sample) or monitor (only-new for Schedules).
  3. Add hashtags (e.g. art, atproto — with or without #).
  4. Cap the run: maxItems and jetstreamMaxSeconds (default 90s).
  5. Optional: paste a webhookUrl for alert flows.
  6. Click Start. Open the Dataset for posts; check OUTPUT for connectedHost, eventsSeen, matched, pushed.
  7. For ongoing alerts: save as a Task → attach a Schedule (every 5–15 minutes) with mode=monitor, monitorSource=hashtag, monitorEnabled=true. Use baselineOnly: true on the first run if you do not want a backlog dump.

Modes

ModeInputBehavior
hashtag (default)hashtags[]Live Jetstream WebSocket until maxItems or jetstreamMaxSeconds. Region failover on connect failure.
profilehandles[]AppView author feeds (works from Apify without proxy).
monitor+ monitorSourceSame sources, only-new posts via KV watermarks. Pair with Schedule + optional webhookUrl.
search (experimental)queryAppView searchPosts — usually 403 from cloud. Soft-disabled unless forceAppViewSearch: true. Prefer hashtag or profile.

Example inputs

Hashtag live scrape (Store demo — #art)

{
"mode": "hashtag",
"hashtags": ["art"],
"maxItems": 10,
"jetstreamMaxSeconds": 90,
"jetstreamLookbackSeconds": 120
}

Profile feed

{
"mode": "profile",
"handles": ["jay.bsky.team"],
"maxItems": 25
}

Monitor + webhook (schedule this)

{
"mode": "monitor",
"monitorSource": "hashtag",
"hashtags": ["yourbrand"],
"monitorEnabled": true,
"baselineOnly": true,
"webhookUrl": "https://hooks.example.com/bluesky",
"maxItems": 20,
"jetstreamMaxSeconds": 120
}

Quiet tags that match nothing still SUCCEEDED — check OUTPUT eventsSeen vs matched.


FAQ

Why did I get 0 posts but the run succeeded?
Quiet hashtag or short listen window. OUTPUT shows eventsSeen vs matched: the stream was up; nothing matched. You pay start (+ monitor-check), not fake posts.

Why not keyword search?
Bluesky AppView searchPosts often returns HTTP 403 from datacenter / Apify IPs — even with proxies. Jetstream hashtag listening is the reliable cloud path.

Do I need a Bluesky login?
No for hashtag (public Jetstream) or normal profile feeds.

Do I need Apify Proxy?
Not for Jetstream hashtag mode. Profile AppView usually works without proxy too.

Will likes and handles always be filled?
Not on brand-new live posts. URI, text, timestamp, and author DID are the stable fields.

Is it legal?
Only collect public data for a legitimate purpose. You are responsible for Bluesky / AT Proto terms and applicable privacy law (e.g. GDPR).


Technical notes

  • Jetstream: free, unauthenticated live firehose. Default preferred region us-east (v2); on connect failure tries us-west then v1 public endpoints. Setting jetstreamUrl forces one host (no failover).
  • Matching: facets + #tag word boundaries. Short tags (≤2 chars) need a facet tag or a strict #tag token — #ai will not match inside the word said.
  • Lookback: jetstreamLookbackSeconds (default 120) then live-tail — free cursor window, not metered archive.
  • Reconnects: up to 5 mid-listen reconnects with exponential backoff (never past maxSeconds).
  • OUTPUT (default KV) includes: mode / sourceMode, hostsTried / connectedHost, listenSeconds / eventsSeen, matched / pushed / deduped, webhookStatus / webhookError, isFirstRun (monitor), and a jetstream block when used.
  • Defaults: mode=hashtag, useJetstream=true, maxItems=50, jetstreamMaxSeconds=90, jetstreamRegion=us-east.

Known gaps

  • No reliable keyword search from Apify cloud (AppView 403)
  • No historical hashtag backfill / metered archive replay
  • Jetstream rows lack AppView enrichment at emit time (engagement often 0; handle may be missing)

Built by Abaddon for agencies and automation teams who need honest Bluesky social listening — live hashtags, profiles, and schedule-ready webhooks.