Base URL: https://api.ipcheckmate.com/
To use the API, make sure to include your email address that you used to subscribe in every request, in one of the following ways:
X-Email header.email field of a POST or GET request.Free users: If you have not subscribed, just pass your real email address.
To retrieve geo-location and VPN information using a GET request:
GET /[email protected]
ip: The IP address you want to check.email: Your email address for identification.Response example:
{
"success": 1,
"ip": "1.1.1.1",
"city": "Goochland",
"division": "Virginia",
"country": "United States",
"country_code": "US",
"zip_code": "23063",
"latitude": 37.7691,
"longitude": -78.0091,
"is_ipv6": 1,
"is_ipv4": 0,
"is_anonymous": 0
}
To retrieve geolocation and VPN information using a POST request:
POST /
ip: 1.1.1.1 email: [email protected]
{
"success": 1,
"ip": "1.1.1.1",
"city": "Goochland",
"division": "Virginia",
"country": "United States",
"country_code": "US",
"zip_code": "23063",
"latitude": 37.7691,
"longitude": -78.0091,
"is_ipv6": 1,
"is_ipv4": 0,
"is_anonymous": 0
}
If any data is missing for example the city name or division name or zip code then it will be an empty string.
{
"success": 1,
"ip": "185.162.229.112",
"city": "",
"division": "",
"country": "United States",
"country_code": "US",
"zip_code": "",
"latitude": 37.7691,
"longitude": -78.0091,
"is_ipv6": 1,
"is_ipv4": 0,
"is_anonymous": 0
}
If any fault is detected i.e. invalid ip was submitted or some internal error server occurred or ip is not in our database, 'success' shows as 0 and an error message is provided in 'error' key. If you use this api in a login/ registration script, you should allow the login and re-check their ip later with some cron job. Do not block a user just because an error occurred.
Example - invalid ip error
{
"success": 0,
"error": "Invalid IP Address",
"error_code": "INVALID_IP",
"ip": "1.1.1.x"
}
Example - invalid email error (subscription not found)
{
"success": 0,
"error": "No subscription was found for this email.",
"error_code": "INVALID_EMAIL",
"ip": "1.1.1.1",
"email": "[email protected]"
}
{
"success": 0,
"error": "You are being rate-limited. Please reduce the number of requests per second.",
"error_code": "RATE_LIMITED",
"ip": "1.1.1.1"
}
You should assume the rate limit to be 100 req/s for all plans.
This is not a hard limit which means occasional spikes won't cause you to get error responses.
The hard limit (actual rate limit) is 5000 req per 10 second or 500 r/s. Please try not to knowingly cross 100 r/s without informing us in advance.
Users who require even higher rate limits should send us an email. We'll make it possible.