IP Geo-location and VPN Detection API Documentation

API Endpoint

Base URL: https://api.ipcheckmate.com/

Usage Instructions

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:

Free users: If you have not subscribed, just pass your real email address.

GET Request

To retrieve geo-location and VPN information using a GET request:

GET /[email protected]

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
}
    

POST Request

To retrieve geolocation and VPN information using a POST request:

POST /
ip: 1.1.1.1
email: [email protected]
    

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
}
    

Incomplete Responses

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
}

Error Handling

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]"
    }
    

Example - rate limit error
    {
        "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"
    }
    

Rate Limits

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.