API de geolocalización IP

Consulta direcciones públicas IPv4 e IPv6 con datos locales de geolocalización y ASN. Empieza con 10.000 consultas IP gratis al mes.

Inicio rápido

  1. Crea una cuenta independiente de ip.uk.app y verifica tu correo electrónico.
  2. Abre Claves en tu panel de control y crea una clave. Cópiala de inmediato: solo se muestra una vez.
  3. Envía la clave desde tu servidor en la cabecera Authorization.
curl 'https://ip.uk.app/api/v1/lookup?ip=1.1.1.1' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Nunca incluyas tu clave API en una URL, código público del navegador, capturas de pantalla o registros compartidos. Guárdala en una variable de entorno de tu servidor.

Endpoints

Añade el parámetro opcional lang para el idioma de los nombres: en, uk, es, pt, de o fr. Si falta una traducción, se usa el nombre en inglés.

curl 'https://ip.uk.app/api/v1/bulk?lang=uk' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  --data '{"ips":["1.1.1.1","2001:4860:4860::8888"]}'

Formato de respuesta

El campo data contiene un objeto para lookup y me, y un array para bulk. Los valores no disponibles son null. Los valores del ejemplo ilustran la estructura y no garantizan una ubicación real.

{
  "data": {
    "ip": "1.1.1.1",
    "version": 4,
    "country": {"code": "AU", "name": "Australia"},
    "region": "New South Wales",
    "city": "Sydney",
    "location": {"latitude": -33.8688, "longitude": 151.209, "accuracy": "approximate"},
    "asn": {"number": 13335, "organization": "Cloudflare, Inc.", "prefix_length": 24},
    "source": {"name": "DB-IP Lite", "url": "https://db-ip.com/", "license": "CC BY 4.0", "updated": "2026-10"}
  }
}

Cuota gratuita y límites

  • 10.000 consultas IP correctas por cuenta y mes natural. La cuota se renueva a las 00:00 UTC del primer día del mes.
  • 60 consultas IP por minuto, compartidas entre todas tus claves.
  • Hasta cinco claves activas, con una validez de 30, 90 o 365 días.
  • Cada dirección consultada correctamente consume un crédito, incluidas las direcciones repetidas en un lote. Un lote de 50 consume 50 créditos.
  • Los datos no válidos y las consultas fallidas no consumen créditos mensuales. Los fallos temporales pueden contar para el límite por minuto.
  • Antes de procesar el lote completo, se validan los datos y se comprueba la cuota disponible. No se cobran créditos por un lote parcialmente procesado.
  • Otros límites de red protegen la disponibilidad del servicio.

Las respuestas incluyen X-Quota-Limit, X-Quota-Remaining y X-Quota-Reset. La fecha de renovación es una marca de tiempo Unix. X-Request-ID identifica una solicitud autenticada. Las respuestas 429 incluyen Retry-After con la espera en segundos.

Los planes mensuales de pago están disponibles en tu panel. Las cuotas siguen el periodo de suscripción. Sin cargos automáticos por exceso.

Gestión de errores

{"error":{"code":"invalid_ip","message":"Provide a public IPv4 or IPv6 address."}}

JavaScript · en el servidor

const response = await fetch(
  'https://ip.uk.app/api/v1/lookup?ip=1.1.1.1',
  { headers: { Authorization: `Bearer ${process.env.IP_API_KEY}` } }
);
const result = await response.json();
if (!response.ok) throw new Error(result.error.message);
console.log(result.data);

Python

import json, os
from urllib.request import Request, urlopen
from urllib.error import HTTPError

request = Request('https://ip.uk.app/api/v1/lookup?ip=1.1.1.1',
    headers={'Authorization': 'Bearer ' + os.environ['IP_API_KEY']})
try:
    with urlopen(request, timeout=15) as response:
        print(json.load(response)['data'])
except HTTPError as error:
    print(error.code, json.load(error))

PHP

$ch = curl_init('https://ip.uk.app/api/v1/lookup?ip=1.1.1.1');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 15,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer '.getenv('IP_API_KEY')],
]);
$body = curl_exec($ch);
if ($body === false) { throw new RuntimeException(curl_error($ch)); }
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
if ($status !== 200) { throw new RuntimeException($result['error']['message']); }

Calidad de datos y atribución

La geolocalización es aproximada. Una IP puede corresponder a una puerta de enlace o un centro de datos, especialmente en redes móviles, anycast, VPN y proxies. Las coordenadas no indican la ubicación exacta de una persona. La organización del ASN identifica al operador de red y no certifica que sea un proveedor residencial.

Los datos proceden de la base mensual DB-IP Lite con licencia CC BY 4.0. Conserva la atribución correspondiente en las aplicaciones que usen estos datos. La versión v1 no clasifica VPN, proxies ni fraude.

Privacidad y seguridad de claves

Las claves API completas solo se muestran una vez y se almacenan únicamente como hashes con secreto del servidor. Las estadísticas guardan la ruta de API, el estado, la duración, los créditos y el identificador enmascarado de la clave durante 30 días. Este historial no almacena las IP consultadas ni las claves completas. Los contadores mensuales agregados se conservan 12 meses. Los registros de infraestructura separados se rigen por nuestra Política de privacidad.

Revoca de inmediato las claves expuestas desde tu panel de control. Bloquear o eliminar una cuenta desactiva sus claves. Tu cuenta es independiente de otros proyectos de uk.app.

Política de privacidad · Condiciones · support@uk.app

Un nombre para tu próxima idea

Dale a tu web, servidor doméstico o próximo proyecto una dirección memorable: yourname.uk.app. Elige un nombre y comprueba su disponibilidad antes de registrarlo.

Encuentra tu nombre

Socios