¿Cuál es la mejor API para geolocalizar una dirección IP?

Usaría un servicio web que puede devolver JSON (junto con jQuery para simplificar las cosas). A continuación se encuentran todos los servicios de búsqueda de IP activos gratuitos que pude encontrar y la información que devuelven. Si conoce más, agregue un comentario y actualizaré esta respuesta.


db-ip.com

//api.db-ip.com/addrinfo?api_key= < su clave de API > & addr = < dirección IP >

Devoluciones:

{
“dirección”: “116.12.250.1”,
“país”: “SG”,
“stateprov”: “Singapur central”,
“ciudad”: “Singapur”
}

Limitaciones:

  • 2.500 solicitudes por hora
  • No admite devoluciones de llamada JSONP
  • Requiere parámetro de dirección IP
  • Requiere una dirección de correo electrónico para obtener su clave API

freegeoip.net

$ .getJSON (‘// freegeoip.net/json/?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“ip”: “116.12.250.1”,
“country_code”: “SG”,
“country_name”: “Singapur”,
“region_code”: “01”,
“region_name”: “Consejo Central de Desarrollo Comunitario de Singapur”,
“ciudad”: “Singapur”,
“código postal”: “”,
“time_zone”: “Asia / Singapur”,
“latitud”: 1.2931,
“longitud”: 103.8558,
“metro_code”: 0
}

Limitaciones:

  • 10,000 solicitudes por hora

geobytes.com

$ .getJSON (‘// gd.geobytes.com/GetCityDetails?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“geobytesforwarderfor”: “”,
“geobytesremoteip”: “116.12.250.1”,
“geobytesipaddress”: “116.12.250.1”,
“geobytescertainty”: “99”,
“geobytesinternet”: “SA”,
“geobytescountry”: “Arabia Saudita”,
“geobytesregionlocationcode”: “SASH”,
“geobytesregion”: “Ash Sharqiyah”,
“geobytescode”: “SH”,
“geobyteslocationcode”: “SASHJUBA”,
“geobytescity”: “Jubail”,
“geobytescityid”: “13793”,
“geobytesfqcn”: “Jubail, SH, Arabia Saudita”,
“geobyteslatitude”: “27.004999”,
“geobyteslongitude”: “49.660999”,
“geobytescapital”: “Riad”,
“geobytestimezone”: “+03: 00”,
“geobytesnationalitysingular”: “Arabia Saudita”,
“geobytespopulation”: “22757092”,
“geobytesnationalityplural”: “sauditas”,
“geobytesmapreference”: “Oriente Medio”,
“geobytescurrency”: “Saudi Riyal”,
“geobytescurrencycode”: “SAR”,
“geobytestitle”: “Arabia Saudita”
}

Limitaciones:

  • 16,384 solicitudes por hora
  • Puede devolver la ubicación incorrecta (estoy en Singapur, no en Arabia Saudita)

geoip.nekudo.com

$ .getJSON (‘// geoip.nekudo.com/api/’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“ciudad”: “Singapur”,
“país”: {
“nombre”: “Singapur”,
“código”: “SG”
},
“ubicación”: {
“precision_radius”: 50,
“latitud”: 1.2855,
“longitud”: 103.8565,
“time_zone”: “Asia / Singapur”
},
“ip”: “116.12.250.1”
}

Limitaciones:

  • Requiere parámetro de dirección IP

geoplugin.com

$ .getJSON (‘// www.geoplugin.net/json.gp?jsoncallback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“geoplugin_request”: “116.12.250.1”,
“geoplugin_status”: 200,
“geoplugin_credit”: “Algunos de los datos devueltos incluyen datos de GeoLite creados por MaxMind, disponibles en http://www.maxmind.com . “,
“geoplugin_city”: “Singapur”,
“geoplugin_region”: “Singapur (general)”,
“geoplugin_areaCode”: “0”,
“geoplugin_dmaCode”: “0”,
“geoplugin_countryCode”: “SG”,
“geoplugin_countryName”: “Singapur”,
“geoplugin_continentCode”: “AS”,
“geoplugin_latitude”: “1.2931”,
“geoplugin_longitude”: “103.855797”,
“geoplugin_regionCode”: “00”,
“geoplugin_regionName”: “Singapur (general)”,
“geoplugin_currencyCode”: “SGD”,
“geoplugin_currencySymbol”: “$”,
“geoplugin_currencySymbol_UTF8”: “$”,
“geoplugin_currencyConverter”: 1.4239
}

Limitaciones:

  • 120 solicitudes por minuto

ip-api.com

$ .getJSON (‘// ip-api.com/json?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“as”: “AS3758 SingNet”,
“ciudad”: “Singapur”,
“país”: “Singapur”,
“countryCode”: “SG”,
“isp”: “SingNet Pte Ltd”,
“lat”: 1.2931,
“lon”: 103.8558,
“org”: “Telecomunicaciones de Singapur”,
“query”: “116.12.250.1”,
“region”: “01”,
“regionName”: “Consejo Central de Desarrollo Comunitario de Singapur”,
“status”: “éxito”,
“zona horaria”: “Asia / Singapur”,
“cremallera”: “”
}

Limitaciones:

  • 150 solicitudes por minuto

ipify.org

$ .getJSON (‘// api.ipify.org?format=jsonp&callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“ip”: “116.12.250.1”
}

Limitaciones:

  • Ninguno (ancho de banda ilimitado)

ipinfo.io

$ .getJSON (‘// ipinfo.io/json’, función (datos) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“ip”: “116.12.250.1”,
“hostname”: “Sin nombre de host”,
“ciudad”: “Singapur”,
“region”: “Central Singapore Community Development Council”,
“país”: “SG”,
“loc”: “1.2931,103.8558”,
“org”: “AS3758 SingNet”
}

Limitaciones:

  • 1,000 solicitudes por día

ipinfodb.com

$ .getJSON (‘// api.ipinfodb.com/v3/ip-city/?key= & format = json & callback =?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“statusCode”: “OK”,
“mensaje de estado”: “”,
“ipAddress”: “116.12.250.1”,
“countryCode”: “SG”,
“countryName”: “Singapur”,
“regionName”: “Singapur”,
“cityName”: “Singapur”,
“zipCode”: “048941”,
“latitud”: “1.28967”,
“longitud”: “103.85”,
“timeZone”: “+08: 00”
}

Limitaciones:

  • Dos solicitudes por segundo
  • Requiere registro para obtener su clave API

jsonip.com

$ .getJSON (‘// jsonip.com/?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“ip”: “116.12.250.1”,
“acerca de”: “/ acerca de”,
“Pro!”: “Http://getjsonip.com”
}

Limitaciones:

  • Ninguno (ancho de banda ilimitado)

jsontest.com

$ .getJSON (‘// ip.jsontest.com/?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});

Devoluciones:

{
“ip”: “116.12.250.1”
}

Limitaciones:

  • Baja mucho (sobre la cuota), por lo que no lo usaría para la producción

snoopi.io

//api.snoopi.io/v1/?apikey= < su clave de API > & user_ip_address = < dirección IP >

Devoluciones:

{
“remote_address”: “116.12.250.1”,
“request_address”: “116.12.250.1”,
“request_time”: “11:25:35 pm”,
“request_date”: “31 de enero de 2016”,
“CountryCode”: “SG”,
“Región”: nulo,
“Region_Full”: “Singapur”,
“Ciudad”: “Ubi”,
“PostalZip”: “96940”,
“TimeZone_Name”: “Asia \ / Singapur”,
“Latitud”: “1.31865”,
“Longitud”: “103.894”
}

Limitaciones:

  • 2,500 solicitudes por día
  • No admite devoluciones de llamada JSONP
  • Requiere parámetro de dirección IP
  • Requiere registro para obtener su clave API

Tenga en cuenta que, dado que todos estos servicios son gratuitos, su millaje puede variar en términos de exceder la cuota y el tiempo de actividad, y quién sabe cuándo / si se desconectarán en el futuro (Anexo A: Telize). La mayoría de estos servicios también ofrecen un nivel de pago en caso de que desee algo más robusto.

Además, como skobaljic señaló en los comentarios a continuación, las cuotas de solicitud son principalmente académicas, ya que esto está sucediendo en el lado del cliente y la mayoría de los usuarios finales nunca excederán la cuota.

ACTUALIZACIONES

  • Se eliminó telize.com (ya no ofrece nivel gratuito)
  • Se eliminó ip-json.rhcloud.com (parece estar fuera de línea)
  • Hackertarget.com eliminado (parece estar fuera de línea)
  • Geoip.nekudo.com agregado

“Mejor” necesita más contexto, es decir, necesita detallar sus requisitos y restricciones. Para algunos, el mejor es el más barato, para otros podría significar rápido con un tiempo de inactividad mínimo. Algunos solo quieren un nivel gratuito con un uso ligero. Para otros, la precisión o la seguridad pueden ser críticas.

ipapi.co ofrece una API que es rápida y conveniente para buscar direcciones IP. Ambos planes gratuitos y de pago están disponibles a través de HTTPS.

Digamos que su dirección IP es “208.67.222.222”, simplemente escriba esto en un shell

curl https://ipapi.co/208.67.222.222/json/

La salida sería algo como:

{
“ip”: “208.67.222.222”,
“ciudad”: “San Francisco”,
“región”: “California”,
“país”: “EE. UU.”,
“postal”: “94107”,
“zona horaria”: “América / Los_Angeles”,
“latitud”: 37.7697,
“longitud”: -122.3933
}

Rubí

requiere ‘net / http’
requiere ‘json’

loc = Net :: HTTP.get (‘ https://ipapi.co/208.67.222.222/json/&#039 😉
pone JSON.parse (loc)

Pitón

de solicitudes de importación obtener

loc = get (‘ https://ipapi.co/208.67.222.222/json/&#039 😉
print loc.json ()

PHP

$ loc = file_get_contents (‘ https://ipapi.co/208.67.222.222/json/&#039 ;);
echo $ loc;
$ obj = json_decode ($ loc);

Aquí hay más ejemplos: Referencia de API

Descargo de responsabilidad: afiliado a ipapi.co como consultor.

Puede probar la API de geolocalización IP desde whoisxmlapi,

devuelve la siguiente información de geolocalización a través de la respuesta JSON / XML para cualquier ip:

{
“ip”: “216.58.219.46”,
“ubicación”: {
“país”: “EE. UU.”,
“región”: “California”,
“ciudad”: “Monrovia”,
“lat”: 34.142773,
“lng”: -117.999565,
“postalCode”: “91016”,
“zona horaria”: “-08: 00”
}
}

IPLocate.io proporciona una API gratuita de hasta 1.500 solicitudes por día:

curl https://www.iplocate.io/api/lookup/8.8.8.8

Los documentos y el uso, incluidos ejemplos de código para lenguajes de programación populares, están disponibles en la página de inicio: http://www.iplocate.io

Descargo de responsabilidad: ejecuto este servicio.

No hay mejor respuesta aquí. La mayoría de nosotros realmente brindamos la misma información. Lo que diferencia a uno de los demás probablemente tendría que ser la infraestructura y la latencia. Poder responder rápidamente es crucial y generalmente estamos respondiendo a las solicitudes en aproximadamente 50 ms debido a una infraestructura bien pensada y grupos cuidadosamente ubicados en múltiples zonas de todo el mundo para atender al cliente desde el centro de datos más cercano.

También tendría que considerar qué tan bien se está construyendo la API en sí misma + la capacidad de responder a través de conexiones seguras (HTTPS). Si desea obtener más información, visítenos en: infoip.io

Pruebe la https://ipdata.co API, esto devuelve una serie de puntos de datos útiles que incluyen, el nombre completo del país y el código, el símbolo y el código de la moneda, la zona horaria, etc.

curl https://api.ipdata.co/8.12.1.5
{
“ip”: “8.12.1.5”,
“ciudad”: “Miami”,
“región”: “Florida”,
“country_name”: “Estados Unidos”,
“country_code”: “US”,
“continent_name”: “Norteamérica”,
“continent_code”: “NA”,
“latitud”: 25.7741,
“longitud”: -80.1817,
“asn”: “AS23089”,
“organización”: “Hotwire Communications”,
“postal”: “33102”,
“Moneda: USD”,
“currency_symbol”: “$”,
“call_code”: “1”,
“flag”: ” http://q.miximages.com/52500/Geolocation/us.png&quot ;,
“time_zone”: “América / Nueva_York”
}

https://geoip-db.com proporciona dos formas de recuperar la geolocalización por dirección IP. Se puede usar una devolución de llamada JSON o JSON-P.

Un ejemplo de devolución de llamada jQuery jsonp:




GEOIP DB – ejemplo de jQuery

País:

Estado:

Ciudad:

Latitud:

Longitud:

IP:

La mejor API que he usado es ip-api.com. Proporciona la ubicación exacta del usuario remoto según la dirección IP.

Cómo obtener la ubicación exacta usando la dirección IP y la ip-api en PHP

Gracias a Gopal Joshi por este artículo.

Puedo garantizar la API que hemos utilizado para varios clientes: ipapi.co. Tenemos algunos clientes como clientes de pago y algunos de nivel gratuito. Las razones por las que los elegimos y nos quedamos son:

  • Servicio al cliente: Impresionante tiempo de respuesta para solicitudes de soporte. Han hecho todo lo posible para agregar funciones específicamente para nosotros. Se agregó soporte XML porque uno de nuestros clientes prefería eso sobre JSON para una aplicación heredada.
  • Satisfecho con la fiabilidad del servicio. No hay problemas hasta ahora.
  • HTTPS disponible en todos los planes (incluso en el nivel gratuito).

Ofrecemos una API en ¿Cuál es mi IP? – Los expertos en direcciones IP desde 1999 que devolverá esta información en texto, json o xml. Necesitaría una membresía de oro para acceder a la API. Opciones de membresía: ¿Qué es mi IP ®?