Skip to Content
ReferenceAPI referenceGeo Locations

Get the locations with events as GeoJSON

GET
/api/v1/geo-locations/geojson

Returns a GeoJSON FeatureCollection with one point per location that had events in the range, busiest first, and totals in stats. Ranges over 24 hours read the location aggregates, which count whole hours or UTC days, from the one that holds fromTimestamp through the last one that starts before toTimestamp. An IP or ASN filter reads the raw rows instead, which go back only ANALYTICS_RAW_RETENTION_DAYS days, 180 by default. A server filter does the same on a database whose location aggregates predate server tracking.

Authorization

cookiesession<token>

Session cookie authentication.

Query Parameters

fromTimestamp*string

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

Formatdate-time
toTimestamp*string

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

Formatdate-time
countryCode?array<string>|

Keep only these countries, as uppercase two-letter ISO 3166-1 codes such as NO. Repeat the parameter to pass more than one.

city?array<string>|

Keep only these cities, by the exact name GeoIP gives, such as Oslo. Repeat the parameter to pass more than one.

ipAddressIn?array<string>|

Keep only these client IPs. Repeat the parameter to pass more than one. A value that is not an IP gets a 400.

ipAddressNotIn?array<string>|

Leave out these client IPs. Repeat the parameter to pass more than one. A value that is not an IP gets a 400.

serverIn?array<string>|

Keep only rows recorded under these server names. Repeat the parameter to pass more than one.

asnIn?array<integer>|

Keep only these autonomous system numbers, such as 13335. Repeat the parameter to pass more than one. Rows without ASN data are left out.

asnNotIn?array<integer>|

Leave out these autonomous system numbers. Repeat the parameter to pass more than one. Rows without ASN data stay in.

Response Body

Request fulfilled, document follows

application/json
  1. response

The locations with events in a time range, as a GeoJSON FeatureCollection, busiest first.

features*array<>
stats*

Totals over every feature in the collection.

type*string

Always FeatureCollection.

Example Request
curl -X GET 'https://geometrikks.example.com/api/v1/geo-locations/geojson?fromTimestamp=2026-11-01T00%3A00%3A00Z&toTimestamp=2026-11-02T00%3A00%3A00Z'
Example Response
{  "features": [    {      "geometry": {        "coordinates": [          0,          0        ],        "type": "Point"      },      "properties": {        "city": "string",        "countryCode": "string",        "countryName": "string",        "eventCount": 0,        "geohash": "string",        "id": 0,        "lastHit": "2019-08-24T14:15:22Z",        "postalCode": "string",        "state": "string",        "stateCode": "string",        "timezone": "string",        "topIps": [          {            "asOrganization": "string",            "asn": 0,            "eventCount": 0,            "ipAddress": "string",            "location": {              "city": "string",              "countryCode": "string",              "countryName": "string",              "id": 0,              "latitude": 0,              "longitude": 0            }          }        ]      },      "type": "string"    }  ],  "stats": {    "cities": 0,    "countries": 0,    "events": 0,    "locations": 0  },  "type": "string"}