Consulta de IPv4
Ubicación, zona horaria y datos de red de una dirección IPv4. Omite la dirección para consultar la de quien llama.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
ipopcional | string | Dirección IPv4 en notación decimal con puntos. Por defecto: la dirección desde la que llegó la solicitud. |
ipsopcional | string | Direcciones separadas por comas, hasta 100, para un lote. Devuelve el array results en el mismo orden. Cada dirección cuenta como una solicitud. |
langopcional | string | Código ISO 639-1 para los nombres de país, región y ciudad. Por defecto en. |
keyopcional | string | Clave de API, si no se envía como cabecera. |
Ejemplo
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/ipv4?ip=1.1.1.1"// In a browser, with no ip parameter, this returns the visitor's own address
const geo = await (await fetch("https://api.mygeocode.com/v1/ipv4", { headers: { "X-API-Key": "YOUR_KEY" } })).json();
console.log(geo.country_code, geo.timezone);import requests
geo = requests.get("https://api.mygeocode.com/v1/ipv4", params={"ip": "1.1.1.1"}, headers={"X-API-Key": "YOUR_KEY"}, timeout=5).json()
print(geo["country_code"], geo["org"], geo["is_datacenter"]){
"status": "ok",
"ip": "1.0.164.165",
"version": 4,
"found": true,
"prefix": "1.0.164.0/24",
"country": "Thailand",
"country_code": "TH",
"continent": "Asia",
"continent_code": "AS",
"region": "Krung Thep Maha Nakhon",
"region_code": null,
"city": "Bangkok",
"postcode": "10200",
"lat": 13.749976,
"lon": 100.516819,
"timezone": "Asia/Bangkok",
"utc_offset": "+07:00",
"utc_offset_seconds": 25200,
"is_eu": false,
"asn": 23969,
"as_name": "TOT Public Company Limited",
"org": "TOT Public Company Limited",
"usage_type": "Eyeball",
"registry": "apnic",
"allocated": "2008-10-22",
"tags": ["dsl"],
"is_anycast": false,
"is_satellite": false,
"is_datacenter": false,
"is_proxy": false,
"is_vpn_provider": false,
"is_tor": false,
"is_private": false,
"abuse_email": "abuse@totisp.net",
"threat": {
"listed": true,
"score": 90,
"source_count": 2,
"categories": ["abuse", "attacker"],
"is_tor": false,
"is_tor_exit": false,
"is_bogon": false,
"listings": [
{ "category": "abuse", "confidence": 100, "recency_days": 1 },
{ "category": "attacker", "confidence": null, "recency_days": null }
]
},
"updated_at": "2026-09-18 06:53:39"
}Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
ip, version | string, integer | La dirección consultada, en forma canónica, y 4 o 6. |
found | boolean | False cuando ninguna red cubre la dirección; los campos de ubicación son entonces null. |
prefix | string | La red más específica que contiene la dirección, en formato CIDR. |
country, country_code | string | Nombre del país y código ISO 3166-1 alfa-2 en mayúsculas. |
continent, continent_code | string | Nombre del continente y código de dos letras. |
region, region_code | string | División de primer nivel y su código corto. El código se rellena para Estados Unidos, Canadá y Australia; en otros lugares solo aparece donde el conjunto de datos lo incluye. |
city, postcode | string | Mejor estimación; null cuando se desconoce. |
lat, lon | number | Centro de la zona conocida más específica. |
elevation_m | number o null | Altura sobre el nivel medio del mar en ese punto, en metros, de la misma cuadrícula de 15 segundos de arco que el endpoint de elevación. Negativa sobre el fondo marino. |
timezone, utc_offset, utc_offset_seconds | string, string, number | Zona IANA, el desfase vigente en este momento como +HH:MM y el mismo desfase en segundos. La zona se determina por las coordenadas y los límites de las zonas horarias, así que siempre concuerda con lat y lon. |
is_eu | boolean | El país pertenece a la Unión Europea. |
asn, as_name, org | integer, string | Número de sistema autónomo, su nombre y la organización que hay detrás. |
usage_type | string | Qué tipo de operador es: Eyeball (ISP residencial), Carrier, Content, Hosting, Enterprise, Education, NSP o unknown. |
registry, allocated | string | Registro regional que asignó el ASN y la fecha de asignación. |
tags | array | Etiquetas a nivel de operador como dsl, cdn, vpsh (hosting VPS), vpn, satnet. Describen al operador de la red, no a la dirección concreta. |
is_anycast, is_satellite | boolean | El prefijo es anycast; el operador es una red por satélite. |
is_datacenter | boolean | Red de hosting o de contenidos. Considera la ciudad poco fiable y ten en cuenta que el tráfico puede ser automatizado. |
is_proxy, is_tor | boolean | Indicios específicos de la dirección de que es un relé o nodo de salida de Tor, o de que figura como endpoint de proxy o VPN. |
is_vpn_provider | boolean | El operador ofrece servicios de VPN o proxy en algún punto de su red (un indicio a nivel de operador, más débil que is_proxy). |
is_private | boolean | Dirección reservada, privada o no enrutable por otro motivo. Si es true, la respuesta solo incluye ip, version, is_private y reason. |
abuse_email | string | Contacto de abuso registrado para la red. |
threat | object | Reputación: listed, un score de 0 a 100 (el peso del peor informe, con descuento para los antiguos), source_count (cuántos informes independientes la incluyen), categories, indicadores de Tor y bogon, y las listings individuales con categoría, confianza y hace cuántos días se informó de cada una. |
updated_at | string | Cuándo se actualizó por última vez el registro de esta red. |
Cualquier versión en una sola llamada
GET /v1/ip acepta una dirección IPv4 o IPv6 (o ninguna, para la de quien llama) y devuelve el mismo registro que los endpoints específicos de cada versión. Úsalo cuando no sepas de antemano qué tipo de dirección vas a recibir.
Notas
- Las direcciones anycast como
1.1.1.1y8.8.8.8se sirven desde muchos lugares a la vez. La ubicación devuelta es la registrada, y por esois_datacenteres true para ellas. - Llámalo desde tu servidor con la dirección del visitante en
ip. Llamarlo sinipdevuelve la dirección desde la que llegó la solicitud, que detrás de un proxy o CDN es la del proxy. - Los datos de IP se actualizan cada semana. Un tiempo de caché de un día es razonable.
La misma consulta en los formatos de otros proveedores
Si ya tienes código escrito para uno de estos proveedores, consérvalo: el host compatible acepta la misma ruta y los mismos parámetros y responde con la estructura de respuesta de ese proveedor, con este endpoint detrás. Consulta cómo funcionan los hosts compatibles.
| Proveedor | Host | Ruta |
|---|---|---|
| Geoapify | geoapify.mygeocode.com | /v1/ipinfo?ip=... |
| ip-api.com | ipapi.mygeocode.com | /json/{ip}/json//batch (POST, JSON array) |
| ipinfo.io | ipinfo.mygeocode.com | /{ip}/json/{ip}/json/{ip}/{field} |
| ipstack | ipstack.mygeocode.com | /{ip}/check/{ip},{ip},{ip} |
Errores
400 invalid_request cuando ip no es una dirección IPv4 válida, cuando se envía una dirección IPv6 a este endpoint (usa /v1/ipv6), o cuando ips tiene más de 100 entradas.