# Bluesky analytics API > Markdown version of https://postlake.dev/social-media-analytics-api/bluesky . The canonical page for humans. > PostLake is the social media API for AI agents: https://postlake.dev/llms.txt Analytics on Bluesky through the same call you use for every other network, with Bluesky's real rules enforced before anything is sent. Analytics for Bluesky One call returns a post's numbers in the same shape as every other network, so your code reads impressions and likes without knowing which network it is looking at. curl https://api.postlake.dev/v1/posts/post_…/analytics \ -H "Authorization: Bearer $POSTLAKE_API_KEY" What Bluesky actually reports This is the part usually left vague. Networks do not report the same things, and pretending they do produces charts that are quietly wrong. MetricOn Bluesky ImpressionsNot reported by this networkViewsNot reported by this networkReachNot reported by this networkLikes, comments, sharesReported where the network exposes themSaves and clicksReported where the network exposes them Where Bluesky reports both, both are returned separately, because a view and an impression are different events. Comparing Bluesky against your other networks GET /v1/analytics?period=30d returns every connected account together, already normalised, so an agent can decide what to post next rather than only report what happened. Because the shapes match, comparing Bluesky to the rest is arithmetic instead of a mapping exercise. Where a network is missing a metric it is a zero with a known reason, not a gap you have to investigate. That honesty is the difference between a dashboard you trust and one you quietly stop opening. Common questions ### Is there a Bluesky analytics API? Bluesky exposes analytics to approved applications, and PostLake wraps it so you get the same response shape as every other network. One call, one format, no per-network parsing. ### Which metrics does Bluesky return? Primarily , plus engagement counts where the network exposes them. ### Why is a metric zero? Because that network does not report it. PostLake never fills a missing metric with a related one. A zero means "not reported here", which is a different and more useful fact than a number that quietly came from somewhere else. ### Can an agent read these numbers? Yes. Over MCP it is get_post_analytics for one post and get_analytics for everything, returned as a table an agent can act on rather than raw JSON it has to re-request. ## Related - [Post to Bluesky via API](https://postlake.dev/post-to/bluesky.md) - [Scheduling on Bluesky](https://postlake.dev/social-media-scheduling-api/bluesky.md) - [Comments on Bluesky](https://postlake.dev/social-media-comments-api/bluesky.md) - [Messaging on Bluesky](https://postlake.dev/social-media-messaging-api/bluesky.md)