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.
| Field | Type | What it does | Default |
|---|---|---|---|
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"
}
| Field | Type | Meaning |
|---|---|---|
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.