Posts
Get Post Statistics
Returns the per-post analytics OnlyFans shows in a post's stats drawer — views, unique viewers, likes, comments, tips and unlocks, each with a time series you can chart. Set with_chart=false when you only need the headline numbers. Requires permission api_posts_read_stats.
https://public-api.fansmetric.comAuthorization
defaultAuthorizationBearer <token>Send your FansMetric API key as a Bearer token in the Authorization header.
In: header
Path Parameters
account_id*integerOnlyFans numeric account ID.
post_id*integerThe post ID. Numeric.
Query Parameters
with_chartbooleanInclude the time-series arrays. Default
true; sendfalsefor the totals only, which makes the response much smaller.
Response Fields
data.hasStatsbooleanfalsewhen OnlyFans has not gathered data for this post yet. The counters are still present, just zero — show an empty state rather than a row of zeroes.data.lookCountintegerTotal views.
data.uniqueLookCountintegerDistinct viewers.
data.lookDurationAverageintegerMean view duration in seconds. Meaningful on video posts.
data.likeCountintegerTotal likes.
data.commentCountintegerTotal comments.
data.tipCountintegerNumber of tips received on the post.
data.tipSumintegerTotal tipped amount.
data.purchasedCountintegerUnlocks, on paid posts.
data.purchasedSummintegerRevenue from those unlocks.
data.lookChartarrayTime series of
{date, count}objects. The sibling arrays follow the same shape:uniqueLookChart,likeChart,commentChart,tipChart,tipSumChart,purchasesChart. Present only whenwith_chartis true.dataobject | arrayEndpoint-specific payload. See the fields below for this route.
_meta._credits.usedintegerCredits consumed by this request (currently always
1)._meta._rate_limits.limit_minuteintegerMaximum requests per minute for the organization.
_meta._rate_limits.remaining_minuteintegerRemaining requests in the current minute window.
_meta._rate_limits.limit_dayintegerMaximum requests per day for the organization.
_meta._rate_limits.remaining_dayintegerRemaining requests in the current day window.
| Field | Type | Description |
|---|---|---|
| data.hasStats | boolean | false when OnlyFans has not gathered data for this post yet. The counters are still present, just zero — show an empty state rather than a row of zeroes. |
| data.lookCount | integer | Total views. |
| data.uniqueLookCount | integer | Distinct viewers. |
| data.lookDurationAverage | integer | Mean view duration in seconds. Meaningful on video posts. |
| data.likeCount | integer | Total likes. |
| data.commentCount | integer | Total comments. |
| data.tipCount | integer | Number of tips received on the post. |
| data.tipSum | integer | Total tipped amount. |
| data.purchasedCount | integer | Unlocks, on paid posts. |
| data.purchasedSumm | integer | Revenue from those unlocks. |
| data.lookChart | array | Time series of {date, count} objects. The sibling arrays follow the same shape: uniqueLookChart, likeChart, commentChart, tipChart, tipSumChart, purchasesChart. Present only when with_chart is true. |
| data | object | array | Endpoint-specific payload. See the fields below for this route. |
| _meta._credits.used | integer | Credits consumed by this request (currently always 1). |
| _meta._rate_limits.limit_minute | integer | Maximum requests per minute for the organization. |
| _meta._rate_limits.remaining_minute | integer | Remaining requests in the current minute window. |
| _meta._rate_limits.limit_day | integer | Maximum requests per day for the organization. |
| _meta._rate_limits.remaining_day | integer | Remaining requests in the current day window. |
curl --request GET "https://public-api.fansmetric.com/v1/100000001/posts/sample_post_id/stats?with_chart=sample_with_chart" \
--header "Authorization: Bearer YOUR_API_KEY"Response
200