GeoIPy API

GeoIPy provides a robust, real-time IP to geolocation API that can accurately determine location data and identify potential security threats from high-risk IP addresses. The results are delivered in a matter of milliseconds in JSON format. With GeoIPy's API, you can instantly pinpoint website visitors' locations and tailor your user experience and application accordingly.

This documentation comprehensively covers the API features, available options, and integration guides for various programming languages.

API Access Token

Your API Access Token serves as your distinct authentication credential for accessing the GeoIPy API. To authenticate with the API, include the access_key parameter in the API's base URL and assign it the value of your access token.

Token URL:
https://www.geoipy.com/

Attach your API Access Key: The following example demonstrates how to authenticate using the GeoIPy API in an API request:
https://www.geoipy.com/api/IPsInfo/?ip=@(Model.IP)
&key=@(Key)

API Output

The GeoIPy API can provide data in either JSON format. The following example demonstrates the API result that GeoIPy would return in response to the API call from the previous section, which requests information for the IP address @(Model.IP).

{
  "ip": "3.21.21.165",
  "hostname": "ec2-3-21-21-165.us-east-2.compute.amazonaws.com",
  "type": "ipv4",
  "continent_code": "NA",
  "continent_name": "North America",
  "country_code": "US",
  "country_name": "United States",
  "region_code": "OH",
  "region_name": "Ohio",
  "city": "Columbus",
  "zip": "43201",
  "latitude": 39.995578765869141,
  "longitude": -82.999458312988281,
  "msa": "18140",
  "dma": "535",
  "radius": "41.01305",
  "ip_routing_type": "international proxy",
  "connection_type": "tx",
  "location": {
    "geoname_id": 4509177,
    "capital": "Washington D.C.",
    "languages": [
      {
        "code": "en",
        "name": "English",
        "native": "English"
      }
    ],
    "country_flag": "https://www.geoipy.com/flags/us.svg",
    "country_flag_emoji": "🇺🇸",
    "country_flag_emoji_unicode": "U+1F1FA U+1F1F8",
    "calling_code": "1",
    "is_eu": false
  },
  "time_zone": {
    "id": "America/New_York",
    "current_time": "2024-09-16T19:41:01+03:00",
    "gmt_offset": -14400,
    "code": "EDT",
    "is_daylight_saving": true
  },
  "currency": {
    "code": "USD",
    "name": "US Dollar",
    "plural": "US dollars",
    "symbol": "$",
    "symbol_native": "$"
  },
  "connection": {
    "asn": 16509,
    "isp": "amazon.com Inc",
    "sld": "amazonaws",
    "tld": "com",
    "carrier": "amazon.com inc",
    "home": false,
    "organization_type": "Retail",
    "isic_code": "G4791",
    "naics_code": "004541"
  }
}
                            


API responses include extensive data related to location, currency, timezone and connection.

Error Codes

If a requested resource is unavailable or an API call encounters an issue, a JSON error will be returned. These errors are always accompanied by an error code and a description.

Error Example: The error below is returned when your monthly API request limit has been exceeded.
{
  "success": false,
  "error": {
    "code": 100,
    "type": "missing_access_key",
    "info": "No API Key was specified."
  }
}


Code Type Info
100 missing_access_key No API Key was specified.
101 invalid_access_key No API Key was specified or an invalid API Key was specified.
102 inactive_user The current user account is not active. User will be prompted to get in touch with Customer Support.
103 invalid_api_function The requested API endpoint does not exist.
104 usage_limit_reached The maximum allowed amount of monthly API requests has been reached.
105 function_access_restricted The current subscription plan does not support this API endpoint.
106 https_access_restricted The user's current subscription plan does not support HTTPS Encryption.
301 invalid_fields One or more invalid fields were specified using the fields parameter.
302 too_many_ips Too many IPs have been specified for the Bulk Lookup Endpoint. (max. 50)
303 batch_not_supported_on_plan The Bulk Lookup Endpoint is not supported on the current subscription plan
404 404_not_found The requested resource does not exist.

PHP (cURL)

//set IP address and API access key
$ip = '3.21.21.165';
$key = 'veluihrPp9w0CekwtTlTo7TzaofQaIwp';

// Initialize CURL:
$ch = curl_init('https://www.geoipy.com/api/IPsInfo?ip='.$ip.'&key='.$key.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Store the data:
$json = curl_exec($ch);
curl_close($ch);

// Decode JSON response:
$api_result = json_decode($json, true);

// Output the "capital" object inside "location"
echo $api_result['location']['capital'];

JavaScript (jQuery.ajax)

// set IP address and API access key
var ip = '3.21.21.165'
var key = 'veluihrPp9w0CekwtTlTo7TzaofQaIwp';

// get the API result via jQuery.ajax
$.ajax({
url: 'https://www.geoipy.com/api/IPsInfo?ip=' + ip + '&key=' + key,
dataType: 'jsonp',
success: function(json) {

// output the "capital" object inside "location"
alert(json.location.capital);

}
});

C#

using System.Net.Http;
using Newtonsoft.Json.Linq;

// ...

// set IP address and API access key
string ip = "3.21.21.165";
string Key = "veluihrPp9w0CekwtTlTo7TzaofQaIwp";

// Initialize an HttpClient instance
using (var httpClient = new HttpClient())
{
// Send an HTTP GET request to the specified URL
var response = await httpClient.GetAsync($"https://www.geoipy.com/api/IPsInfo?ip={ip}&key={Key}");


// Check if the response is successful
if (response.IsSuccessStatusCode)
{
// Read the JSON response as a string
string jsonResponse = await response.Content.ReadAsStringAsync();

// Deserialize the JSON string into a JObject
JObject apiResult = JObject.Parse(jsonResponse);

// Retrieve the "capital" object inside the "location" object
string capital = apiResult["location"]["capital"].ToString();

// Output the capital
Console.WriteLine(capital);
}
else
{
Console.WriteLine("Error occurred while fetching data");
}
}