Skip to main content
Every metric is measured over a period and denominated in a currency. Both are yours to choose, and both are reported back on the response so a stored record is self-describing.

Choosing a period

Supply either a preset or an explicit range.
On GET endpoints the same choice is expressed as query parameters — period=last_30d, or period_start=2026-08-01&period_end=2026-08-31.
Presets end yesterday, not today. A partial day is not comparable to a complete one, and including it would make every growth rate wrong in the same direction. To measure today explicitly, pass today’s date as both start and end.
Boundaries are inclusive on both ends, and days are drawn in the market’s local time zone — America/Los_Angeles for US, Asia/Jakarta for ID. Read the zone from GET /channels rather than assuming UTC.

When a period gets adjusted

Not every market reports daily buckets. When your request is finer than the market supports, Unif widens it to the nearest supported boundary and says so.
That response is answering a request for 2026-09-01 to 2026-09-12 in a weekly-only market: the window was widened to whole weeks, and adjusted: true marks it.
Always read period off the response before storing a metric. Keying an adjusted result by the dates you asked for silently corrupts any series you build from it — and the error compounds quietly, because each row looks plausible on its own.

Growth rates

revenue_growth_rate compares the period you requested against the immediately preceding window of equal length. last_30d is compared with the 30 days before it. The value is a ratio, never a percentage: 0.25 is +25%, -0.4 is −40%. This holds for every *_rate and *_share field in the API.
Growth is null, not 0, when the preceding window has no data — a shop that opened three weeks ago has no 30-day comparison to make. Treating that null as zero growth is the most common way to mis-rank a “fastest growing” list.

Currency

Set currency to any ISO 4217 code and every monetary field in the response is converted to it. The default is USD.
Conversion uses the daily reference rate for each day in the period, not a single spot rate at request time. A 30-day revenue figure in USD for an IDR market is the sum of each day’s local revenue converted at that day’s rate — so re-running the same query next week returns the same historical number.
For comparisons across markets, request one currency for everything. For reconciling against a seller’s own statements, request the market’s native currency — read it from GET /channels rather than hard-coding the mapping.
Non-monetary fields are never converted. units_sold is a count, engagement_rate is a ratio, and gpm is revenue-derived so it follows currency.

What to store

For any metric you persist, store the four things that define it. A number without them cannot be compared to anything later.