Reach
Get Profile Visitors Overview
Full "Profile Visitors" reach payload — top countries + duration users + visitors/duration chart + total counter — in one response. For a smaller card-shaped summary, use Earnings Overview with by=visitors. Requires permission api_reach_read_profile_visitors.
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.
Query Parameters
start_datestringWindow start. Default 2 years ago, UTC.
end_datestringWindow end. Default end of today, UTC.
bystringBucket used to rank
topCountries. Values:total(default),guests,users,subscribers.limitintegerTop-N rows in
topCountries. Default 10. Capped at 100. Pass0for upstream default.
Response Fields
data.isAvailablebooleantruewhen reach analytics is enabled for the account.data.hasStatsbooleantruewhen there's data for the window.data.topCountriesobjectCountry leaderboard. See the dedicated countries endpoint for field details.
data.topDurationUsersobjectTotal time-on-profile breakdown (in seconds). Same
totalsshape astopCountries.data.chart.visitorsarrayMonthly
{ date, count }visitor count.data.chart.durationarrayMonthly
{ date, count }total time on profile, in seconds.data.total.currentstringWindow-total visitor count. Returned as a string.
data.total.deltaintegerPercent change vs the prior equal-length window. Saturates at
100.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.isAvailable | boolean | true when reach analytics is enabled for the account. |
| data.hasStats | boolean | true when there's data for the window. |
| data.topCountries | object | Country leaderboard. See the dedicated countries endpoint for field details. |
| data.topDurationUsers | object | Total time-on-profile breakdown (in seconds). Same totals shape as topCountries. |
| data.chart.visitors | array | Monthly { date, count } visitor count. |
| data.chart.duration | array | Monthly { date, count } total time on profile, in seconds. |
| data.total.current | string | Window-total visitor count. Returned as a string. |
| data.total.delta | integer | Percent change vs the prior equal-length window. Saturates at 100. |
| 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/reach/profile-visitors?start_date=2026-01-01%2000%3A00%3A00&end_date=2026-01-31%2023%3A59%3A59&by=sample_by" \
--header "Authorization: Bearer YOUR_API_KEY"Response
200