Skip to Content
ReferenceAPI referenceAnalytics

Get geo event counts per hour or day

GET
/api/v1/analytics/geo-time-series

Returns geo events and unique IPs, countries and cities for each bucket that has events, oldest first. It reads the hourly or daily aggregates at any range length, so the unique counts are estimates, and those reads count whole hours or UTC days, from the one that holds startDate through the last one that starts before endDate. With granularity=daily and a tz other than UTC on a range of 30 days or less, those reads count local days instead. They start at the local midnight of the day holding startDate and run through the last hour that starts before endDate.

Authorization

cookiesession<token>

Session cookie authentication.

Query Parameters

startDate?|

Start of the range, inclusive, as ISO 8601 with a timezone, such as 2026-11-01T00:00:00Z. Requires endDate; omit with window.

endDate?|

End of the range, exclusive, as ISO 8601 with a timezone, such as 2026-11-02T00:00:00Z. Requires startDate; omit with window.

window?|

A rolling window ending now, such as 15m, 24h or 7d, up to 365 days. Use positive whole minutes, hours or days. Cannot be combined with explicit time bounds.

granularity?|

hourly or daily buckets. Leave it out to get hourly buckets for ranges up to 30 days and daily buckets for longer ones.

Value in"hourly""daily"null
tz?|

An IANA timezone such as Europe/Oslo. Daily buckets then start at midnight in that zone for ranges of 30 days or less, and longer ranges keep UTC days unless the endpoint's description says otherwise. Hourly buckets ignore it, so on ranges that get hourly buckets it changes nothing. An unknown zone gets a 400. Defaults to UTC.

Response Body

Request fulfilled, document follows

application/json
  1. response

Geo event counts per bucket, oldest first. Buckets without events are left out.

data*array<>
endDate*string

The request's endDate, echoed as ISO 8601.

granularity*string

The bucket size used, hourly or daily.

startDate*string

The request's startDate, echoed as ISO 8601.

Example Request
curl -X GET 'https://geometrikks.example.com/api/v1/analytics/geo-time-series?startDate=2026-11-01T00%3A00%3A00Z&endDate=2026-11-02T00%3A00%3A00Z&tz=Europe%2FOslo'
Example Response
{  "data": [    {      "timestamp": "string",      "totalGeoEvents": 0,      "uniqueCities": 0,      "uniqueCountries": 0,      "uniqueIps": 0    }  ],  "endDate": "string",  "granularity": "string",  "startDate": "string"}