Below are all the free active IP lookup services I could find and the information they return. If you know of any more, then please add a comment and I'll update this answer.git
Try it: http://api.db-ip.com/addrinfo?api_key=<your api key>&addr=<ip address>web
Returns:json
{ "address": "116.12.250.1", "country": "SG", "stateprov": "Central Singapore", "city": "Singapore" }
Limitations:api
Try it: http://gd.geobytes.com/GetCityDetailsapp
$.getJSON('http://gd.geobytes.com/GetCityDetails?callback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:ide
{ "geobytesforwarderfor": "", "geobytesremoteip": "116.12.250.1", "geobytesipaddress": "116.12.250.1", "geobytescertainty": "99", "geobytesinternet": "SA", "geobytescountry": "Saudi Arabia", "geobytesregionlocationcode": "SASH", "geobytesregion": "Ash Sharqiyah", "geobytescode": "SH", "geobyteslocationcode": "SASHJUBA", "geobytescity": "Jubail", "geobytescityid": "13793", "geobytesfqcn": "Jubail, SH, Saudi Arabia", "geobyteslatitude": "27.004999", "geobyteslongitude": "49.660999", "geobytescapital": "Riyadh ", "geobytestimezone": "+03:00", "geobytesnationalitysingular": "Saudi Arabian ", "geobytespopulation": "22757092", "geobytesnationalityplural": "Saudis", "geobytesmapreference": "Middle East ", "geobytescurrency": "Saudi Riyal", "geobytescurrencycode": "SAR", "geobytestitle": "Saudi Arabia" }
Limitations:svg
Try it: https://json.geoiplookup.io/apipost
$.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:jsonp
{ "ip": "116.12.250.1", "isp": "SGPOST", "org": "Singapore Post Ltd", "hostname": "116.12.250.1", "longitude": "103.807", "latitude": "1.29209", "postal_code": "", "city": "Singapore", "country_code": "SG", "country_name": "Singapore", "continent_code": "AS", "region": "Central Singapore", "district": "", "timezone_name": "Asia\/Singapore", "connection_type": "", "asn": "AS3758 SingNet", "currency_code": "SGD", "currency_name": "Singapore Dollar", "success": true }
Limitations:ui
Try it: http://www.geoplugin.net/json.gp
$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "geoplugin_request": "116.12.250.1", "geoplugin_status": 200, "geoplugin_credit": "Some of the returned data includes GeoLite data created by MaxMind, available from <a href=\\'http://www.maxmind.com\\'>http://www.maxmind.com</a>.", "geoplugin_city": "Singapore", "geoplugin_region": "Singapore (general)", "geoplugin_areaCode": "0", "geoplugin_dmaCode": "0", "geoplugin_countryCode": "SG", "geoplugin_countryName": "Singapore", "geoplugin_continentCode": "AS", "geoplugin_latitude": "1.2931", "geoplugin_longitude": "103.855797", "geoplugin_regionCode": "00", "geoplugin_regionName": "Singapore (general)", "geoplugin_currencyCode": "SGD", "geoplugin_currencySymbol": "$", "geoplugin_currencySymbol_UTF8": "$", "geoplugin_currencyConverter": 1.4239 }
Limitations:
Try it: https://api.hackertarget.com/geoip/?q=<ip address>
Returns:
IP Address: 116.12.250.1 Country: SG State: N/A City: Singapore Latitude: 1.293100 Longitude: 103.855797
Limitations:
Try it: https://ipapi.co/json/
$.getJSON('https://ipapi.co/json/', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip": "116.12.250.1", "city": "Singapore", "region": "Central Singapore Community Development Council", "country": "SG", "country_name": "Singapore", "postal": null, "latitude": 1.2855, "longitude": 103.8565, "timezone": "Asia/Singapore" }
Limitations:
Try it: http://ip-api.com/json
$.getJSON('http://ip-api.com/json?callback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "as": "AS3758 SingNet", "city": "Singapore", "country": "Singapore", "countryCode": "SG", "isp": "SingNet Pte Ltd", "lat": 1.2931, "lon": 103.8558, "org": "Singapore Telecommunications", "query": "116.12.250.1", "region": "01", "regionName": "Central Singapore Community Development Council", "status": "success", "timezone": "Asia/Singapore", "zip": "" }
Limitations:
Try it: https://api.ipdata.co
$.getJSON('https://api.ipdata.co', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip": "116.12.250.1", "city": "Singapore", "region": "Central Singapore Community Development Council", "region_code": "01", "country_name": "Singapore", "country_code": "SG", "continent_name": "Asia", "continent_code": "AS", "latitude": 1.2854999999999999, "longitude": 103.8565, "asn": "AS3758", "organisation": "SingNet", "postal": "", "currency": "SGD", "currency_symbol": "$", "calling_code": "65", "flag": "https://ipdata.co/flags/sg.png", "emoji_flag": "🇸🇬", "time_zone": "Asia/Singapore", "is_eu": false, "suspicious_factors": { "is_tor": false } }
Limitations:
Try it: https://ipfind.co/me?auth=<your api key>
$.getJSON('https://ipfind.co/me?auth=<your_api_key>', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip_address": "116.12.250.1", "country": "Singapore", "country_code": "SG", "continent": "Asia", "continent_code": "AS", "city": "Singapore", "county": null, "region": "Central Singapore", "region_code": "01", "timezone": "Asia/Singapore", "owner": null, "longitude": 103.8565, "latitude": 1.2855, "currency": "SGD", "languages": [ "cmn", "en-SG", "ms-SG", "ta-SG", "zh-SG" ] }
Limitations:
Try it: https://api.ipify.org/?format=json
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip": "116.12.250.1" }
Limitations:
Try it: https://api.ipinfodb.com/v3/ip-city/?key=<your api key>&format=json
$.getJSON('https://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>&format=json&callback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "statusCode": "OK", "statusMessage": "", "ipAddress": "116.12.250.1", "countryCode": "SG", "countryName": "Singapore", "regionName": "Singapore", "cityName": "Singapore", "zipCode": "048941", "latitude": "1.28967", "longitude": "103.85", "timeZone": "+08:00" }
Limitations:
Try it: https://ipinfo.io/json
$.getJSON('https://ipinfo.io/json', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip": "116.12.250.1", "hostname": "No Hostname", "city": "Singapore", "region": "Central Singapore Community Development Council", "country": "SG", "loc": "1.2931,103.8558", "org": "AS3758 SingNet" }
Limitations:
Try it: http://api.ipstack.com/<ip address>?access_key=<your api key>
$.getJSON('http://api.ipstack.com/<ip_address>?access_key=<your_api_key>', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip": "116.12.250.1", "type": "ipv4", "continent_code": "AS", "continent_name": "Asia", "country_code": "SG", "country_name": "Singapore", "region_code": "01", "region_name": "Central Singapore Community Development Council", "city": "Singapore", "zip": null, "latitude": 1.2931, "longitude": 103.8558, "location": { "geoname_id": 1880252, "capital": "Singapore", "languages": [{ "code": "en", "name": "English", "native": "English" }, { "code": "ms", "name": "Malay", "native": "Bahasa Melayu" }, { "code": "ta", "name": "Tamil", "native": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd" }, { "code": "zh", "name": "Chinese", "native": "\u4e2d\u6587" }], "country_flag": "http:\/\/assets.ipstack.com\/flags\/sg.svg", "country_flag_emoji": "\ud83c\uddf8\ud83c\uddec", "country_flag_emoji_unicode": "U+1F1F8 U+1F1EC", "calling_code": "65", "is_eu": false } }
Limitations:
Try it: https://jsonip.com
$.getJSON('https://jsonip.com/?callback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip": "116.12.250.1", "about": "/about", "Pro!": "http://getjsonip.com", "reject-fascism": "Liberal America will prevail" }
Limitations:
Try it: http://ip.jsontest.com/
$.getJSON('http://ip.jsontest.com/?callback=?', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "ip": "116.12.250.1" }
Limitations:
Try it: https://geoip.nekudo.com/api/<ip address>
$.getJSON('https://geoip.nekudo.com/api/<ip_address>', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "city": "Singapore", "country": { "name": "Singapore", "code": "SG" }, "location": { "accuracy_radius": 50, "latitude": 1.2855, "longitude": 103.8565, "time_zone": "Asia/Singapore" }, "ip": "116.12.250.1" }
Limitations:
Try it: http://www.stupidwebtools.com/api/my_ip.json
$.getJSON('http://www.stupidwebtools.com/api/my_ip.json', function(data) { console.log(JSON.stringify(data, null, 2)); });
Returns:
{ "my_ip": { "ip": "116.12.250.1", "others": [] } }
Limitations:
Keep in mind that since these are all free services, your mileage may vary in terms of exceeding quota and uptime, and who knows when/if they will be taken offline down the road (exhibit A: Telize). Most of these services also offer a paid tier in case you want more features like SSL support.
Also, as skobaljic noted in the comments below, the request quotas are mostly academic since this is happening client-side and most end users will never exceed the quota.