IP Info (API gratuita de geolocalización de IP)
IP Info es una API gratuita de geolocalización de IP y ASN mantenida por Shifter. Una única solicitud GET devuelve el país, la región, la ciudad, las coordenadas, la zona horaria, el ISP, el ASN y el tipo de conexión de una dirección IP en formato JSON. No requiere registro, ni clave de API, ni suscripción.
Funciona sobre la misma base de datos de ubicación de IP y red que Shifter utiliza para sus propios pools de proxies, de modo que al comprobar una IP de salida de Shifter con IP Info se obtiene la ubicación tal como la ve nuestra red.
Endpoints
Sección titulada «Endpoints»| Solicitud | Devuelve |
|---|---|
GET http://ip-info.com/json | La IP que realizó la solicitud (tu servidor, o la salida de tu proxy cuando se envía a través de un proxy) |
GET http://ip-info.com/json?ip=8.8.8.8 | Una dirección IPv4 o IPv6 pública específica |
GET http://ip-info.com/8.8.8.8/json | La misma consulta, en formato de ruta |
HTTP (http://ip-info.com/json) también funciona y no se redirige. Usa HTTPS desde páginas web para evitar bloqueos por contenido mixto. Las respuestas permiten GET entre orígenes, por lo que el código del navegador puede llamar directamente a la API.
curl --max-time 10 "http://ip-info.com/json?ip=94.204.59.232"{ "ip": "94.204.59.232", "city": "Motor City", "region": "Dubai", "region_code": "DU", "country": "AE", "country_name": "United Arab Emirates", "continent": "AS", "loc": "25.0459,55.241", "latitude": 25.0459, "longitude": 55.241, "postal": null, "timezone": "Asia/Dubai", "asn": 15802, "as_name": "Emirates Integrated Telecommunications Company PJSC", "isp": "Emirates Integrated Telecommunications Company PJSC", "org": "Emirates Integrated Telecommunications Company", "connection_type": "Corporate", "user_type": "business", "is_anycast": false}La respuesta real tiene 29 campos; el ejemplo anterior muestra los que leen la mayoría de las integraciones. Todos los campos están siempre presentes, y un valor que la base de datos no tiene se devuelve como null.
Comprobar una salida de proxy de Shifter
Sección titulada «Comprobar una salida de proxy de Shifter»Envía la solicitud sin argumentos a través de tu proxy. La respuesta de IP Info describe la IP de salida, de modo que puedes confirmar que el país, la ciudad o el ASN que solicitaste son los que obtuviste.
curl --max-time 15 \ --proxy http://p.shifter.io:443 \ --proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \ http://ip-info.com/jsonimport requests
proxy = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"r = requests.get( "http://ip-info.com/json", proxies={"http": proxy, "https": proxy}, timeout=15,)r.raise_for_status()exit_ip = r.json()print(exit_ip["ip"], exit_ip["country"], exit_ip["city"], exit_ip["asn"])assert exit_ip["country"] == "US", f"expected US, got {exit_ip['country']}"import { HttpsProxyAgent } from "https-proxy-agent";import fetch from "node-fetch";
const agent = new HttpsProxyAgent( "http://customer-USERNAME-country-de:PASSWORD@p.shifter.io:443");const res = await fetch("http://ip-info.com/json", { agent });const exit = await res.json();console.log(exit.ip, exit.country, exit.city, `AS${exit.asn}`);Compara country (código ISO 3166 de dos letras) con el país que solicitaste y asn (un número simple, sin prefijo AS) con la red que segmentaste. Consulta Geo-targeting para conocer las marcas de nombre de usuario.
Uso desde agentes de IA
Sección titulada «Uso desde agentes de IA»IP Info no requiere ningún flujo de autenticación, por lo que un agente puede llamarlo como cualquier otro endpoint HTTP. Publica descripciones legibles por máquinas que los agentes y creadores de herramientas pueden cargar directamente:
https://ip-info.com/llms.txt: una breve introducción escrita para LLMshttps://ip-info.com/llms-full.txt: la referencia completa en texto planohttps://ip-info.com/openapi.json: el contrato OpenAPI 3.1 (la seguridad está vacía, no se requiere clave)
No se necesita ningún servidor MCP. Si tu framework acepta definiciones de funciones o herramientas, esta es suficiente:
{ "name": "ip_lookup", "description": "Approximate geolocation and network (ASN, ISP) for a public IP address. Omit ip to look up the agent's own network exit.", "input_schema": { "type": "object", "properties": { "ip": { "type": "string", "description": "Public IPv4 or IPv6 literal. Leave empty for the caller's exit IP." } } }}Impleméntalo como GET http://ip-info.com/json cuando ip está vacío y como GET http://ip-info.com/json?ip=<URL-encoded ip> en caso contrario.
Proporciona al agente estas reglas junto con la herramienta:
- Una llamada sin
ipdescribe el propio servidor o la salida de proxy del agente, no la del usuario humano. Para consultar la IP de un usuario, hay que proporcionar esa IP explícitamente al agente. - Usa
countrypara comparaciones de país yasnpara comprobaciones de red. - Trata
nullcomo desconocido. Nunca rellenes un campo ausente. - La ubicación es aproximada, e IP Info no es un sistema de detección de VPN o proxy.
Usos habituales de los agentes: confirmar que el proxy de un agente de navegación está en el país correcto antes de que este extraiga datos de una página localizada, etiquetar los datos recopilados con la ubicación de salida desde la que se obtuvieron, y enriquecer las IPs de registros o de altas con el país y el ASN.
Errores y reintentos
Sección titulada «Errores y reintentos»Los errores se devuelven como JSON con un código estable:
{ "error": { "code": "invalid_ip", "message": "Supply a literal IPv4 or IPv6 address." } }| Estado | Código | Significado |
|---|---|---|
| 400 | invalid_ip | Entrada mal formada, privada, reservada o de otro modo no pública, o parámetros contradictorios |
| 404 | ip_not_found | No hay registro para esta IP en la base de datos activa |
| 405 | method_not_allowed | Usa GET |
| 503 | database_unavailable | Temporal; reintenta con espera creciente |
| 504 | timeout | Temporal; reintenta con espera creciente |
Corrige las entradas 4xx antes de reintentar. Para 503, 504 y errores de conexión, reintenta con una espera creciente y acotada (por ejemplo 1, 2 y 4 segundos) y, después, desiste e informa del fallo.
Datos y límites
Sección titulada «Datos y límites»- Gratuito, sin cuota. No hay cuota por clave ni por aplicación, ni tampoco clave de API. Es un servicio compartido con capacidad finita: realiza las solicitudes que tu aplicación necesite y respeta los términos. Se permite el uso automatizado y comercial.
- Aproximado por diseño. Las coordenadas señalan un área, no una dirección, y nunca identifican a una persona.
- No es un detector de proxy o VPN.
connection_type,user_typeeis_anycastson clasificaciones de la base de datos, no una prueba de cómo se usa una IP. - Privacidad. La API no conserva historial de consultas. Consulta la política de privacidad.
Preguntas o discrepancias de datos: escribe a hi@shifter.io indicando la IP y la ubicación que esperabas.