Geocodificación, consultas de IP y de zona horaria con una sola API HTTP simple
Convierte direcciones en coordenadas y al revés, averigua dónde se ubica una dirección IPv4 o IPv6, obtén la zona horaria o la elevación de cualquier punto y resuelve códigos postales. Envía una solicitud GET y lee el JSON. No hay nada que instalar.
2.500 solicitudes gratuitas al día desde cualquier dirección, sin clave y sin cuenta. ¿Necesitas más? Regístrate con tu nombre y correo electrónico, añade crédito prepago a 0,0001 € por solicitud o elige una clave Unlimited por 50 € al mes. Se aceptan tarjetas y criptomonedas.
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/reverse?lat=48.8584&lon=2.2945"{ "status": "ok", "result": { "formatted": "5 Avenue Anatole France, 75007 Paris, France", "lat": 48.85837, "lon": 2.29448, "distance_m": 12, "precision": "house", "components": { "house_number": "5", "road": "Avenue Anatole France", "city": "Paris", "postcode": "75007", "country": "France", "country_code": "fr" } } }
Ocho consultas, una URL base
Todos los endpoints están bajo https://api.mygeocode.com/v1/, aceptan parámetros de consulta y devuelven JSON con la misma estructura. Aprende uno y los conocerás todos.
API de geocodificación directa
GET /v1/forwardEnvía una dirección, el nombre de un lugar o una descripción aproximada y obtén las coordenadas, una dirección normalizada y cada una de sus partes.
Detalles y ejemplosAPI de geocodificación inversa
GET /v1/reverseEnvía una latitud y una longitud y obtén la dirección más cercana, con la ciudad, la región, el código postal y el país desglosados.
Detalles y ejemplosAPI de autocompletado de direcciones
GET /v1/autocompleteSugiere direcciones mientras alguien escribe. Cada sugerencia incluye coordenadas, así que rara vez necesitas una segunda llamada.
Detalles y ejemplosAPI de consulta de IPv4
GET /v1/ipv4País, región, ciudad, coordenadas, zona horaria y titular de la red para cualquier dirección IPv4, o para quien hace la llamada si la omites.
Detalles y ejemplosAPI de consulta de IPv6
GET /v1/ipv6Los mismos datos para direcciones IPv6, además del prefijo anunciado al que pertenece la dirección.
Detalles y ejemplosAPI de consulta de zona horaria
GET /v1/timezoneNombre de zona horaria IANA, desfase respecto a UTC, estado del horario de verano y hora local para cualquier coordenada, ahora o en la marca de tiempo que elijas.
Detalles y ejemplosAPI de consulta de elevación
GET /v1/elevationAltura sobre el nivel del mar en metros para un punto, o para hasta 100 puntos en una sola llamada.
Detalles y ejemplosAPI de consulta de código postal
GET /v1/postcodeConvierte un código postal en un nombre de lugar, una región y unas coordenadas. Funciona con los códigos ZIP, los postcodes y sus equivalentes en la mayoría de los países.
Detalles y ejemplosCada resultado indica su precisión
Un geocodificador que devuelve el centro de una ciudad cuando pediste un número de portal es peor que uno que dice que no encontró la casa. Cada resultado que devolvemos lleva un campo precision con uno de cuatro valores, para que tu código decida qué hacer con una coincidencia aproximada en lugar de adivinar.
La cobertura no es igual en todas partes, y preferimos mostrártelo antes que hacer una afirmación general. La página de cobertura indica el mejor nivel que alcanzamos en cada uno de los 249 países y territorios.
| Nivel | Qué representa el punto |
|---|---|
house | El propio edificio o la parcela. El punto está sobre la propiedad. |
street | Una posición a lo largo de la calle, interpolada a partir del rango de números de portal de esa manzana. |
postcode | El centro de la zona del código postal. |
admin | El centro de la ciudad, el distrito, la región o el país, según cuál sea la coincidencia más específica que pudimos encontrar. |
¿Ya usas la API de otro proveedor? Cambia el nombre del host.
Tenemos hosts compatibles (drop-in) que aceptan las mismas rutas y parámetros que Google Maps, Bing Maps, HERE, Mapbox, Geocode.Farm, Nominatim y otros once, y responden en su formato de respuesta con nuestros datos. Tu código de análisis no cambia. Pon tu clave de My Geocode donde estaba la clave anterior.
$ curl "https://maps.googleapis.com/maps/api/geocode/json?address=10+Downing+St+London&key=GOOGLE_KEY"$ curl "https://gapi.mygeocode.com/maps/api/geocode/json?address=10+Downing+St+London&key=MYGEOCODE_KEY"La misma idea funciona con las bibliotecas de JavaScript. Carga la API de Google Maps JavaScript desde gapi.mygeocode.com y google.maps.Map, Geocoder y Autocomplete de Places siguen funcionando, con cargas de mapa que no cuestan nada. Hay cargadores para el control Bing Maps V8, HERE Maps for JavaScript y MapQuest.js, y configuraciones para los plugins de geocodificación de MapLibre, Mapbox GL y Leaflet.
- Google Maps
- Bing Maps
- HERE
- Mapbox
- Geocode.Farm
- Nominatim
- OpenCage
- LocationIQ
- Geoapify
- TomTom
- MapQuest
- Geocodio
- PositionStack
- ip-api
- ipinfo
- ipstack
- Open-Elevation
Si puede enviar una solicitud HTTP, puede usar esto
No necesitas ningún SDK. Estos ejemplos geocodifican una dirección e imprimen sus coordenadas. Las bibliotecas oficiales para cada lenguaje están en camino y seguirán siendo capas finas sobre estas mismas llamadas.
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/forward?q=221B+Baker+Street,+London"
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/forward?q=221B+Baker+Street,+London"const url = new URL("https://api.mygeocode.com/v1/forward");
url.searchParams.set("q", "221B Baker Street, London");
const res = await fetch(url, { headers: { "X-API-Key": process.env.MYGEOCODE_KEY } });
const data = await res.json();
const [first] = data.results;
console.log(first.lat, first.lon, first.precision);import os
import requests
r = requests.get(
"https://api.mygeocode.com/v1/forward",
params={"q": "221B Baker Street, London"},
headers={"X-API-Key": os.environ["MYGEOCODE_KEY"]},
timeout=10,
)
r.raise_for_status()
first = r.json()["results"][0]
print(first["lat"], first["lon"], first["precision"])<?php
$url = "https://api.mygeocode.com/v1/forward?" . http_build_query([
"q" => "221B Baker Street, London",
]);
$context = stream_context_create(["http" => ["header" => "X-API-Key: " . getenv("MYGEOCODE_KEY")]]);
$data = json_decode(file_get_contents($url, false, $context), true);
$first = $data["results"][0];
echo $first["lat"], ", ", $first["lon"], " (", $first["precision"], ")\n";package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"os"
)
func main() {
q := url.Values{"q": {"221B Baker Street, London"}}
req, _ := http.NewRequest("GET", "https://api.mygeocode.com/v1/forward?"+q.Encode(), nil)
req.Header.Set("X-API-Key", os.Getenv("MYGEOCODE_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var data struct {
Results []struct {
Lat float64 `json:"lat"`
Lon float64 `json:"lon"`
Precision string `json:"precision"`
} `json:"results"`
}
json.NewDecoder(resp.Body).Decode(&data)
fmt.Println(data.Results[0].Lat, data.Results[0].Lon, data.Results[0].Precision)
}import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
public class Geocode {
public static void main(String[] args) throws Exception {
String q = URLEncoder.encode("221B Baker Street, London", StandardCharsets.UTF_8);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.mygeocode.com/v1/forward?q=" + q))
.header("X-API-Key", System.getenv("MYGEOCODE_KEY"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}using System.Net.Http;
using System.Text.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", Environment.GetEnvironmentVariable("MYGEOCODE_KEY"));
var q = Uri.EscapeDataString("221B Baker Street, London");
var json = await client.GetStringAsync($"https://api.mygeocode.com/v1/forward?q={q}");
using var doc = JsonDocument.Parse(json);
var first = doc.RootElement.GetProperty("results")[0];
Console.WriteLine($"{first.GetProperty("lat")}, {first.GetProperty("lon")} ({first.GetProperty("precision")})");require "net/http"
require "json"
uri = URI("https://api.mygeocode.com/v1/forward")
uri.query = URI.encode_www_form(q: "221B Baker Street, London")
req = Net::HTTP::Get.new(uri)
req["X-API-Key"] = ENV["MYGEOCODE_KEY"]
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
first = JSON.parse(res.body)["results"][0]
puts "#{first["lat"]}, #{first["lon"]} (#{first["precision"]})"Consulta los planes de SDK y los ejemplos completos para cada lenguaje
Para registrarte solo necesitas un correo electrónico
Cualquier dirección recibe 2.500 solicitudes gratuitas al día sin ninguna clave, en todos los endpoints y hosts compatibles, contadas desde las 00:00 UTC. Obtener una clave lleva un minuto cuando la quieras: regístrate con tu nombre, una dirección de correo electrónico y una contraseña, y tu primera clave aparece en pantalla. Sin empresa, sin tarjeta. Cada clave tiene sus propias 2.500 solicitudes gratuitas al día, y las solicitudes hechas sin clave desde la misma red comparten esa cuota, así que una cuenta añade crédito, paquetes y un historial de uso, no otras 2.500 gratuitas.
Las claves están vinculadas a las máquinas que las usan. Una clave de pago por uso atiende a dos direcciones IP en cualquier periodo móvil de 24 horas, y una clave Unlimited, a tres. Cada dirección conserva su espacio durante 24 horas desde su primera solicitud y después lo libera. Una solicitud desde una dirección adicional se rechaza y no se cuenta, y eso es lo que impide que una clave filtrada le sirva a otra persona. ¿Necesitas más direcciones? Crea más claves o añade paquetes.
-
Regístrate y obtén una clave
Correo electrónico y contraseña. La clave aparece una sola vez; cópiala. 2.500 solicitudes al día, gratis, desde un máximo de dos direcciones IP.
-
Añade crédito cuando necesites más
Recarga desde 5 € con tarjeta o criptomonedas. Las solicitudes que superan la cuota gratuita de una clave descuentan 0,0001 € cada una del saldo. El crédito nunca caduca y no se cobra nada de forma automática.
-
O elige una clave Unlimited
Por 50 € al mes obtienes una clave sin cargos por solicitud, que se puede usar desde tres direcciones IP por cada periodo móvil de 24 horas. Pide tantos paquetes como aplicaciones tengas.
Gratis para empezar, fácil de pagar
Todos los endpoints cuestan lo mismo. Todos los hosts compatibles cuentan igual. Sin niveles, sin cargos por usuario, sin contrato. Precios en euros, con pago por tarjeta o criptomonedas.
Clave gratuita
2.500 solicitudes al día en cada clave. Regístrate con tu nombre y correo electrónico; sin tarjeta. Los mismos datos y los mismos endpoints que el uso de pago.
Crédito
0,0001 € por solicitud por encima de las 2.500 gratuitas de cada clave al día, descontados de un saldo que recargas cuando quieras. Sin cuota mensual, sin caducidad. 10.000 solicitudes en un día consumen 0,75 € de crédito.
Clave Unlimited
50 € al mes. Una clave sin cargos por solicitud en todos los endpoints y todos los hosts compatibles, desde un máximo de tres direcciones IP por cada periodo móvil de 24 horas.
Bibliotecas oficiales, una por lenguaje, todas ligeras
Estamos escribiendo pequeñas bibliotecas cliente para JavaScript y TypeScript, Python, PHP, Go, Java, C#, Ruby y Rust. Cada una te dará respuestas tipadas, tiempos de espera razonables, reintentos ante 429 y 503, y nada más. Cuando una esté lista, se publicará en la página de SDK con su comando de instalación.
¿Necesito una clave para probarlo?
No. Cualquier dirección recibe 2.500 solicitudes al día sin clave y sin cuenta. La página de demo envía solicitudes directamente desde el navegador sin ella. Una clave gratuita lleva un minuto cuando quieras crédito, un paquete Unlimited o un historial de uso.
¿Qué pasa en la solicitud 2.501?
Si tu cuenta tiene crédito, la solicitud se procesa y consume 0,0001 €. Si no lo tiene, recibes HTTP 402 hasta las 00:00 UTC o hasta que recargues. Con una clave Unlimited no cambia nada.
¿Por qué una clave está limitada a dos o tres direcciones IP?
Las claves están pensadas para servidores, y el límite significa que una clave que se filtre a un repositorio público no se puede usar desde cien máquinas. Cada dirección conserva su espacio durante 24 horas desde su primera solicitud y después el espacio se libera. Una clave de pago por uso tiene dos espacios, y una clave Unlimited, tres. Para más máquinas, crea más claves o añade paquetes.
¿Puedo guardar los resultados?
Sí. Guárdalos en caché, almacénalos en tu base de datos, muéstralos en un mapa de otro proveedor. Los términos solo piden que no revendas los datos en bruto como un servicio de geocodificación propio.
Envía tu primera solicitud ahora
La demo envía solicitudes reales desde tu navegador con tu clave y abre la respuesta JSON. Una clave gratuita solo pide tu nombre, una dirección de correo electrónico y un minuto; cuando se te queden cortas las 2.500 al día, recarga crédito o añade una clave Unlimited.