Skip to Content
ReferenceAPI referenceAnalytics

List the networks that send the most requests

GET
/api/v1/analytics/top-asns

Returns autonomous systems ordered by hits, each with a category. categories adds up every ASN in the range, not only the top limit. totalRequests and totalBytes count every request, so requests without ASN data count in them but in no category. A country, city, IP or ASN filter makes it read the raw access log rows, which go back only ANALYTICS_RAW_RETENTION_DAYS days, 180 by default.

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.

limit?integer

How many ASNs to return, from 1 to 100. Defaults to 25.

Range1 <= value <= 100
Default25
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.

ipAddress?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.

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

Autonomous systems ordered by hits, with totals per category.

Requests without ASN data appear in totalRequests and totalBytes but in no category, so the difference is the traffic GeoMetrikks could not match to an ASN.

categories*array<>

Totals over every ASN in the range, not only the listed ones. drop appears once the ASN-DROP list has downloaded.

dropAsnCount*|

How many ASN-DROP listed ASNs sent traffic in the range, counting those beyond limit. Null until the ASN-DROP list has downloaded.

endDate*string

The request's endDate, echoed as ISO 8601.

items*array<>
startDate*string

The request's startDate, echoed as ISO 8601.

totalBytes*integer

The bytes of every request in the range, with or without ASN data.

totalRequests*integer

Every request in the range, with or without ASN data.

Example Request
curl -X GET 'https://geometrikks.example.com/api/v1/analytics/top-asns?startDate=2026-11-01T00%3A00%3A00Z&endDate=2026-11-02T00%3A00%3A00Z'
Example Response
{  "categories": [    {      "category": "drop",      "hits": 0,      "totalBytes": 0    }  ],  "dropAsnCount": 0,  "endDate": "string",  "items": [    {      "asn": 0,      "category": "drop",      "hits": 0,      "organization": "string",      "totalBytes": 0    }  ],  "startDate": "string",  "totalBytes": 0,  "totalRequests": 0}