VikiTron APIFree IP lookup, one HTTP call away
A public, unauthenticated JSON API for IP address geolocation, ASN, ISP, timezone and threat flags. Free to use with a per-IP rate limit.
The API is free to use. No API key or sign-up is required. Every calling IP is limited to 500 requests per 15 minutes. Beyond the limit the API responds with HTTP 429 until the window resets.
Base URL
All requests go to the same origin as this site:
https://vikitron.comAuthentication
None. Endpoints are public and CORS is open (Access-Control-Allow-Origin: *) so the API can be called directly from a browser, a server or a CLI. Rate limiting is applied per calling IP address.
Response format
Every endpoint returns pretty-printed JSON with Content-Type: application/json; charset=utf-8. Successful responses are cacheable (Cache-Control: public, max-age=60, s-maxage=300); error responses are not.
IP address lookup
The IP lookup endpoint returns geolocation, network (ASN, ISP, organisation), timezone and threat flags (mobile, proxy, hosting, Tor) for an IPv4 or IPv6 address.
Canonical routes
| Method | Path | Description |
|---|---|---|
| GET | /lookup | Returns IP details for the caller (uses the request's source IP). |
| GET | /lookup/{ip} | Returns IP details for the given IPv4 or IPv6 address. |
Content-negotiated shortcuts
The site's public URLs double as API routes: when the client sends Accept: application/json or a CLI user-agent (curl, wget, httpie, python-requests, …), the same JSON payload is served instead of the HTML page.
| Method | Path | Description |
|---|---|---|
| GET | / | Same as /lookup when Accept: application/json (or a CLI user-agent such as curl). |
| GET | /{ip} | Same as /lookup/{ip} under the same content-negotiation rules. |
| GET | /ip-lookup/{ip} | Legacy alias, kept for backwards compatibility. |
Path parameters
ipstring · required for /lookup/{ip}IPv4 (e.g. 8.8.8.8) or IPv6 (e.g. 2001:4860:4860::8888) address. Loopback (127.0.0.1, ::1) is accepted and normalised.
Example request
curl https://vikitron.com/lookup/8.8.8.8Example response
{
"ip": "8.8.8.8",
"hostname": "dns.google",
"timezone": "America/Chicago",
"timezoneLabel": "Central Time - Chicago",
"timezoneGmt": "-06:00",
"asNumber": "15169",
"asName": "GOOGLE",
"asOrganisation": "Google LLC",
"city": "Mountain View",
"country": "US",
"countryRegion": "CA",
"zip": "94043",
"latitude": 37.4056,
"longitude": -122.0775,
"isp": "Google LLC",
"organisation": "Google Public DNS",
"mobile": false,
"proxy": false,
"hosting": true,
"tor": false
}Response fields
| Field | Type | Description |
|---|---|---|
ip | string | Canonical form of the queried IP address. |
hostnameoptional | string | Reverse DNS (PTR) record, when available. |
timezone | string | IANA timezone identifier, e.g. Europe/Prague. |
timezoneLabel | string | Human-readable timezone label with city. |
timezoneGmt | string | Current UTC offset in ±HH:MM form. |
asNumberoptional | string | Autonomous System number (as a string), e.g. "15169". |
asNameoptional | string | Short AS name from the RIR registry. |
asOrganisationoptional | string | Full organisation name attached to the AS. |
cityoptional | string | City-level geolocation, best-effort. |
countryoptional | string | ISO 3166-1 alpha-2 country code. |
countryRegionoptional | string | ISO 3166-2 subdivision (state / region) code. |
zipoptional | string | Postal code, when available. |
latitudeoptional | number | Approximate latitude for the geolocation. |
longitudeoptional | number | Approximate longitude for the geolocation. |
ispoptional | string | Internet Service Provider name. |
organisationoptional | string | Organisation associated with the IP block. |
mobile | boolean | True if the IP belongs to a mobile carrier. |
proxy | boolean | True if the IP is on known proxy / VPN lists. |
hosting | boolean | True if the IP belongs to a hosting / cloud provider. |
tor | boolean | True if the IP is a known Tor exit node. |
Errors
Errors are returned with an appropriate HTTP status and a JSON body of the form:
{
"error": "Invalid IP address",
"ip": "999.999.999.999"
}| Status | When |
|---|---|
400 | The path parameter is not a valid IPv4 or IPv6 address. |
429 | The calling IP exceeded 500 requests in the current 15-minute window. |
502 | The upstream lookup service is temporarily unavailable — safe to retry. |
Rate limits
Every calling IP address may make up to 500 requests per 15 minutes. Requests over the limit are rejected with HTTP 429. Because successful responses are cacheable for 60 seconds, most integrations will comfortably fit inside the limit — if you consistently need more, please get in touch.
What’s next
Only the IP lookup endpoint is exposed as an API today. DNS records, SSL certificate, robots.txt and subdomain endpoints that back the free tools will be documented here as their public shapes are frozen. Have a suggestion? Let us know.
