Bluesky Engagement Analytics

One row of engagement KPIs per requested Bluesky account: median and p75 likes, reposts, replies, total engagement, posting cadence and the top post...

One row of engagement KPIs per requested Bluesky account: median and p75 likes, reposts, replies, total engagement, posting cadence and the top post - computed from the open AppView, no login, no keys. Aggregates only: no follower lists, no feeds, no identifiers beyond the handles you asked for.

$19.24 / 1,000 · 100.0% success over 26 public runs in the last 30 days.

Run it on Apify → Free to try - runs bill per result on your own account.

What you give it

Every field is optional unless marked; sensible defaults do the rest.

FieldTypeWhat it doesDefault
authorHandles string One or more Bluesky handles to analyze, comma-separated, e.g. "bsky.app" or "nasa.gov, bbc.com". The @ is optional. Up to 25 per run. bsky.app
maxPostsPerHandle integer Posts sampled per account (20-1000). Statistics stabilize well before 200. 200
includeReplies boolean Count the account's replies in the statistics too. False
maxItems integer Upper bound on account rows. 25
reportFailures boolean When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. Your input itself, your results and your identity are never sent, and successful runs send nothing at all. Switch this off and the actor behaves exactly the same. True

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

A real result row from a recent run:

{
  "handle": "bsky.app",
  "medianEngagement": 9239,
  "medianLikes": 7395,
  "medianReplies": 450,
  "medianReposts": 1066,
  "p75Likes": 25839,
  "periodDays": 789,
  "postsPerWeek": 1.8,
  "postsSampled": 200,
  "topPostLikes": 235437,
  "topPostReposts": 16488,
  "topPostUri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3lb3qyu64bs2z",
  "topPostUrl": "https://bsky.app/profile/bsky.app/post/3lb3qyu64bs2z"
}
FieldTypeMeaning
handle string The analyzed Bluesky handle, as requested.
postsSampled integer Posts behind this row's statistics.
periodDays ['integer', 'null'] Days between the oldest and newest sampled post.
postsPerWeek ['number', 'null'] Posting cadence over the sampled period.
medianLikes number Median likes per post.
p75Likes number 75th percentile likes - what a good post gets.
medianReposts number Median reposts per post.
medianReplies number Median replies per post.
medianEngagement number Median likes + reposts + replies per post.
topPostUri string AT-URI of the best-performing sampled post.
topPostUrl string Web link to the best-performing post.
topPostLikes integer Likes on the top post.
topPostReposts integer Reposts on the top post.

Health

100.0% success over 26 public runs in the last 30 days. Live record, failures included: status page.

Full documentation, examples and the AI-assistant prompt live on the store page.