API gratuita de geolocalización

API para desarrolladores para obtener información de geolocalización y direcciones IP.

Cargando...

Rutas

https://geo.cmds.media/ip?ip={ip}

Útil para información general.

30 solicitudes por 60 segundos
api/ip

Ejemplos de código

import requests

response = requests.get("https://geo.cmds.media/ip?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/ip?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/ip?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Respuesta de ejemplo

{
  "accuracy": 1000,
  "asn": 15169,
  "asn_org": "GOOGLE",
  "city": null,
  "continent": "North America",
  "continent_code": "NA",
  "country": "United States",
  "country_iso": "US",
  "currency": "usd",
  "currency_symbol": "$",
  "ip": "8.8.8.8",
  "latitude": 37.751,
  "longitude": -97.822,
  "postal": null,
  "region": null,
  "region_iso": null,
  "success": true,
  "timezone": "America/Chicago",
  "tz_offset": -4.0
}
https://geo.cmds.media/currency?ip={ip}

Útil para tiendas en línea con moneda localizada.

90 solicitudes por 60 segundos
api/currency

Ejemplos de código

import requests

response = requests.get("https://geo.cmds.media/currency?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/currency?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/currency?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Respuesta de ejemplo

{
  "country": "United States",
  "country_iso": "US",
  "currency": "usd",
  "currency_symbol": "$",
  "ip": "8.8.8.8",
  "success": true
}
https://geo.cmds.media/client?ip={ip}&ua={user_agent}

Devuelve geolocalización además de información del dispositivo, navegador y sistema operativo. Utiliza el encabezado User-Agent.

30 solicitudes por 60 segundos
api/client

Ejemplos de código

import requests

headers = {
    "User-Agent": "Mozilla/5.0"
}

response = requests.get(
    "https://geo.cmds.media/client?ip=8.8.8.8",
    headers=headers
)

data = response.json()
print(data)
curl "https://geo.cmds.media/client?ip=8.8.8.8" \
-H "User-Agent: Mozilla/5.0"
const response = await fetch("https://geo.cmds.media/client?ip=8.8.8.8", {
    headers: {
        "User-Agent": navigator.userAgent
    }
});

const data = await response.json();
console.log(data);

Respuesta de ejemplo

{
  "asn": 15169,
  "asn_org": "GOOGLE",
  "browser": {
    "name": "Chrome",
    "version": "145.0.0"
  },
  "city": "Mountain View",
  "continent": "North America",
  "continent_code": "NA",
  "country": "United States",
  "country_iso": "US",
  "device": {
    "brand": null,
    "model": null
  },
  "device_type": "desktop",
  "ip": "8.8.8.8",
  "latitude": 37.4056,
  "longitude": -122.0775,
  "os": {
    "name": "Windows",
    "version": "10"
  },
  "postal": "94043",
  "region": "California",
  "region_iso": "CA",
  "success": true,
  "timezone": "America/Los_Angeles",
  "accuracy": 1000
}
https://geo.cmds.media/geo?ip={ip}

Información detallada de geolocalización incluyendo coordenadas y ASN.

40 solicitudes por 60 segundos
api/geo

Ejemplos de código

import requests

response = requests.get("https://geo.cmds.media/geo?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/geo?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/geo?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Respuesta de ejemplo

{
  "accuracy": 1000,
  "asn": 15169,
  "asn_org": "GOOGLE",
  "city": "Mountain View",
  "continent": "North America",
  "continent_code": "NA",
  "country": "United States",
  "country_iso": "US",
  "ip": "8.8.8.8",
  "latitude": 37.4056,
  "longitude": -122.0775,
  "postal": "94043",
  "region": "California",
  "region_iso": "CA",
  "success": true,
  "timezone": "America/Los_Angeles",
  "tz_offset": -7.0
}
https://geo.cmds.media/country?ip={ip}

Consulta mínima a nivel de país diseñada para cumplimiento y restricciones geográficas.

120 solicitudes por 60 segundos
api/country

Ejemplos de código

import requests

response = requests.get("https://geo.cmds.media/country?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/country?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/country?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Respuesta de ejemplo

{
  "country": "United States",
  "country_iso": "US",
  "continent": "NA",
  "in_eu": false,
  "ip": "8.8.8.8",
  "success": true
}

¿Cómo funciona el límite de uso?

Nuestra API utiliza un algoritmo token-bucket para limitar solicitudes. Cada endpoint tiene una cierta cantidad de tokens que se reponen a una tasa fija por período. Cuando haces una solicitud, consume un token del bucket correspondiente. Si no quedan tokens en ese bucket, recibirás una respuesta 429 Too Many Requests con un encabezado Retry-After que indica cuándo puedes intentarlo nuevamente.

¿Cómo se manejan los errores?

Si una solicitud falla, devolveremos una respuesta JSON con el campo "success" en false y un campo "error" con un mensaje que describe el problema. Siempre verifica el campo "success" antes de procesar los datos de la respuesta.

Si un campo no aplica a una dirección IP en particular (por ejemplo, "city" para una IP que solo se resuelve a nivel de país), se devolverá como null.

FAQ

¿Esta API realmente es gratuita?

¡Claro! Nuestra API es completamente gratuita con límites de uso generosos. No requerimos clave API ni ningún tipo de autenticación.

¿De dónde obtienen los datos de geolocalización?

Usamos una combinación de fuentes de datos públicas y privadas, incluyendo las bases de datos GeoIP2 de MaxMind, para ofrecer la mayor cobertura posible.

¿Puedo usar esta API para fines comerciales?

Sí, puedes usar nuestra API tanto para proyectos personales como comerciales sin restricciones.

¿Qué debo hacer si encuentro un error?

Si encuentras algún problema o tienes preguntas, contáctanos a través de nuestro formulario de soporte.

¿Tienen un plan de pago o límites más altos?

Actualmente no ofrecemos un plan de pago. Podríamos considerarlo en el futuro si hay suficiente demanda, pero por ahora queremos mantener esta API gratuita para todos. Para aumentar los límites, puedes contactarnos con detalles sobre tu uso a través de nuestro formulario de soporte.

Tengo una sugerencia para una nueva función o endpoint. ¿Cómo puedo compartirla?

Agradecemos los comentarios y sugerencias. Comparte tus ideas a través de nuestro formulario de feedback.

¿Con qué frecuencia se actualizan los datos de geolocalización?

Actualizamos los datos de geolocalización cuando hay nueva información disponible.

¿Se puede usar cualquier lenguaje de programación además de los listados?

Sí, puedes usar cualquier lenguaje de programación que pueda hacer solicitudes HTTP para interactuar con nuestra API. Los ejemplos proporcionados son solo algunos lenguajes comunes para ayudarte a empezar.

Tengo otra pregunta que no está aquí.

Si tienes alguna otra pregunta, no dudes en contactarnos a través de nuestro formulario de soporte. Estamos aquí para ayudarte.