Get Leaderboard
GET
/api/v1/data/leaderboard
Token needs the read ability.
About tokens
Retrieves a ranked leaderboard of locations for a single metric over a period. Franchisor-scoped tokens only (franchisee tokens receive 403). Requires the read ability.
Query parameters
-
periodPeriod requiredcurrentyesterdaylast_weeklast_monthlast_90_dayslast_tenant_periodytd -
metricstring requiredMetric key, e.g.net_sales_amount,custom:loyalty_signups, orcompetition:spring_challenge. Competition metrics rank locations by their current cumulative standing in the latest competition for that metric; the requested period does not change the competition window. -
sourceSourcegoogleyelpstore_auditecosuresmgmeazureupdecision_logic -
district_idstring (uuid) -
district_id_2string (uuid) -
location_category_idstring (uuid) -
statestring
Responses
-
-
dataLeaderboard-
periodstring required nullable -
metricstring required nullable -
sourcestring required nullable -
starts_onstring (date) required nullable -
ends_onstring (date) required nullable -
num_locationsinteger required -
closed_location_countinteger requiredHow many closed (deactivated) locationstotalcounts beyond the ranked rows. A location that closed during the window still traded in it, sototalincludes its sales for the days it was open; it never appears inlocations, andmean/mediandescribe open locations only. Summing the rows reproducestotalonly when this is 0. -
totalnumber required nullable -
mediannumber required nullable -
meannumber required nullable -
benchmark_statsobject requiredBoard-level aggregates of each benchmark window, keyedprior/yoy. The response always carries every comparison the tenant is ready for — there is no parameter to request one — soyoyis absent until the tenant has a year of history, and the map is an empty object when the metric supports no comparison at all.-
priorLeaderboardBenchmarkStats-
totalnumber required nullable -
mediannumber required nullable -
meannumber required nullable -
location_countinteger requiredHow many locations these aggregates cover: every location that reported in the benchmark window. This can exceed the number oflocationsrows carrying aprevious_value, since a location that reported only in the benchmark window has no row in the current one, so summing the rows' previous values need not reproducetotal. Includesclosed_location_count. -
closed_location_countinteger requiredHow many oflocation_countare locations that have since closed.totalcounts their sales in the benchmark window;meanandmediando not.
-
-
yoyLeaderboardBenchmarkStats-
totalnumber required nullable -
mediannumber required nullable -
meannumber required nullable -
location_countinteger requiredHow many locations these aggregates cover: every location that reported in the benchmark window. This can exceed the number oflocationsrows carrying aprevious_value, since a location that reported only in the benchmark window has no row in the current one, so summing the rows' previous values need not reproducetotal. Includesclosed_location_count. -
closed_location_countinteger requiredHow many oflocation_countare locations that have since closed.totalcounts their sales in the benchmark window;meanandmediando not.
-
-
-
locationsarray of LeaderboardLocation required-
location_idstring required -
namestring required -
valuenumber required nullable -
rankinteger required -
benchmarksobject requiredThis location's comparison against each benchmark window, keyedprior/yoylikebenchmark_stats. A key is absent when this location has no data in that window; the map is an empty object when no comparison was made.-
priorLeaderboardBenchmark -
yoyLeaderboardBenchmark
-
-
-
-
-
-
messagestring
-
-
-
messagestring
-
curl "https://app.franchisesee.com/api/v1/data/leaderboard?period=current&metric=string" \
-H "Authorization: Bearer $FRANCHISESEE_TOKEN" \
-H "Accept: application/json"
Response
{
"data": {
"period": "last_week",
"metric": "net_sales_amount",
"source": null,
"starts_on": "2026-11-02",
"ends_on": "2026-11-08",
"num_locations": 48,
"closed_location_count": 0,
"total": 1268430.55,
"median": 25890.12,
"mean": 26425.64,
"benchmark_stats": {
"prior": {
"total": 1221875.1,
"median": 25102.44,
"mean": 25455.73,
"location_count": 48,
"closed_location_count": 0
},
"yoy": {
"total": 1221875.1,
"median": 25102.44,
"mean": 25455.73,
"location_count": 48,
"closed_location_count": 0
}
},
"locations": [
{
"location_id": "9b1c8f3e-7a2d-4c5b-8e1a-2f3d4c5b6a7e",
"name": "Downtown Austin",
"value": 41285.9,
"rank": 1,
"benchmarks": {
"prior": {
"previous_value": 39870.25,
"previous_rank": 2,
"previous_on": "Oct 26 – Nov 1, 2026",
"rank_change": -1,
"value_change": 1415.65,
"value_change_rate": 0.0355
},
"yoy": {
"previous_value": 39870.25,
"previous_rank": 2,
"previous_on": "Oct 26 – Nov 1, 2026",
"rank_change": -1,
"value_change": 1415.65,
"value_change_rate": 0.0355
}
}
}
]
}
}