Sample code for 30+ languages & platforms
Perl

ipdata.co IPv4 Geolocation Lookup

See more Geolocation Examples

Demonstrates how to lookup Geolocation data for an IPv4 address using the ipdata.co API.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$http = chilkat::CkHttp->new();

$jsonStr = $http->quickGetStr("https://api.ipdata.co/149.250.207.170?api-key=MY_API_KEY");
if ($http->get_LastMethodSuccess() == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

$json = chilkat::CkJsonObject->new();
$json->put_EmitCompact(0);
$success = $json->Load($jsonStr);

print $json->emit() . "\r\n";

# Sample output:
# Use this online tool to generate parsing code from sample JSON: 
# Generate Parsing Code from JSON

# {
#   "ip": "149.250.207.170",
#   "is_eu": true,
#   "city": null,
#   "region": null,
#   "region_code": null,
#   "country_name": "Germany",
#   "country_code": "DE",
#   "continent_name": "Europe",
#   "continent_code": "EU",
#   "latitude": 51.2993,
#   "longitude": 9.491,
#   "asn": "AS15854",
#   "organisation": "EntServ Deutschland GmbH",
#   "postal": null,
#   "calling_code": "49",
#   "flag": "https://ipdata.co/flags/de.png",
#   "emoji_flag": "\ud83c\udde9\ud83c\uddea",
#   "emoji_unicode": "U+1F1E9 U+1F1EA",
#   "languages": [
#     {
#       "name": "German",
#       "native": "Deutsch"
#     }
#   ],
#   "currency": {
#     "name": "Euro",
#     "code": "EUR",
#     "symbol": "\u20ac",
#     "native": "\u20ac",
#     "plural": "euros"
#   },
#   "time_zone": {
#     "name": "Europe/Berlin",
#     "abbr": "CEST",
#     "offset": "+0200",
#     "is_dst": true,
#     "current_time": "2019-04-20T23:54:30.715507+02:00"
#   },
#   "threat": {
#     "is_tor": false,
#     "is_proxy": false,
#     "is_anonymous": false,
#     "is_known_attacker": false,
#     "is_known_abuser": false,
#     "is_threat": false,
#     "is_bogon": false
#   },
#   "count": "2"
# }

$ip = $json->stringOf("ip");
$is_eu = $json->BoolOf("is_eu");
$city = $json->stringOf("city");
$region = $json->stringOf("region");
$region_code = $json->stringOf("region_code");
$country_name = $json->stringOf("country_name");
$country_code = $json->stringOf("country_code");
$continent_name = $json->stringOf("continent_name");
$continent_code = $json->stringOf("continent_code");
$latitude = $json->stringOf("latitude");
$longitude = $json->stringOf("longitude");
$asn = $json->stringOf("asn");
$organisation = $json->stringOf("organisation");
$postal = $json->stringOf("postal");
$calling_code = $json->stringOf("calling_code");
$flag = $json->stringOf("flag");
$emoji_flag = $json->stringOf("emoji_flag");
$emoji_unicode = $json->stringOf("emoji_unicode");
$currencyName = $json->stringOf("currency.name");
$currencyCode = $json->stringOf("currency.code");
$currencySymbol = $json->stringOf("currency.symbol");
$currencyNative = $json->stringOf("currency.native");
$currencyPlural = $json->stringOf("currency.plural");
$time_zoneName = $json->stringOf("time_zone.name");
$time_zoneAbbr = $json->stringOf("time_zone.abbr");
$time_zoneOffset = $json->stringOf("time_zone.offset");
$time_zoneIs_dst = $json->BoolOf("time_zone.is_dst");
$time_zoneCurrent_time = $json->stringOf("time_zone.current_time");
$threatIs_tor = $json->BoolOf("threat.is_tor");
$threatIs_proxy = $json->BoolOf("threat.is_proxy");
$threatIs_anonymous = $json->BoolOf("threat.is_anonymous");
$threatIs_known_attacker = $json->BoolOf("threat.is_known_attacker");
$threatIs_known_abuser = $json->BoolOf("threat.is_known_abuser");
$threatIs_threat = $json->BoolOf("threat.is_threat");
$threatIs_bogon = $json->BoolOf("threat.is_bogon");
$count = $json->stringOf("count");
$i = 0;
$count_i = $json->SizeOfArray("languages");
while ($i < $count_i) {
    $json->put_I($i);
    $name = $json->stringOf("languages[i].name");
    $native = $json->stringOf("languages[i].native");
    $i = $i + 1;
}