Geocodificación directa

Convierte texto en coordenadas. Acepta direcciones completas, direcciones parciales, códigos postales, nombres de lugares y puntos de interés, en cualquier idioma.

GEThttps://api.mygeocode.com/v1/forward

Parámetros

ParámetroTipoDescripción
qobligatorio*stringTexto libre para geocodificar. Hasta 256 caracteres.
street, city, state, postcode, countrystring*Alternativa estructurada a q. Úsala cuando ya tienes la dirección en campos. Se requiere al menos uno si falta q. Aquí country es un código ISO 3166-1 alfa-2.
place_idstring*Un place_id del autocompletado. Devuelve ese lugar con los componentes completos y los límites. Tiene prioridad sobre q.
limitopcionalintegerNúmero máximo de resultados, de 1 a 10. Por defecto 5.
countriesopcionalstringCódigos ISO 3166-1 alfa-2 separados por comas. Solo se devuelven resultados en estos países. Ejemplo: gb,ie.
boundsopcionalstringsouth,west,north,east en grados decimales. Los resultados dentro del recuadro aparecen primero. Añade strict=1 para excluir los que quedan fuera.
proximityopcionalstringlat,lon. Los resultados cercanos a este punto aparecen primero.
langopcionalstringCódigo ISO 639-1 para los nombres de la respuesta. Por defecto en.
keyopcionalstringClave de API, si no se envía como cabecera X-API-Key.

Ejemplo

$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/forward?q=Dam+1,+Amsterdam&countries=nl&limit=1"
const url = new URL("https://api.mygeocode.com/v1/forward");
url.searchParams.set("q", "Dam 1, Amsterdam");
url.searchParams.set("countries", "nl");
url.searchParams.set("limit", "1");

const data = await (await fetch(url, { headers: { "X-API-Key": "YOUR_KEY" } })).json();
console.log(data.results[0]);
import requests

r = requests.get("https://api.mygeocode.com/v1/forward",
                 params={"q": "Dam 1, Amsterdam", "countries": "nl", "limit": 1}, headers={"X-API-Key": "YOUR_KEY"}, timeout=10)
print(r.json()["results"][0])
Respuesta
{
  "status": "ok",
  "query": "Dam 1, Amsterdam",
  "results": [
    {
      "formatted": "Dam 1, 1012 JS Amsterdam, Netherlands",
      "lat": 52.373119,
      "lon": 4.893604,
      "type": "address",
      "precision": "house",
      "confidence": 0.98,
      "place_id": "nl.addr.c21d40e8",
      "components": {
        "house_number": "1",
        "road": "Dam",
        "neighbourhood": "Centrum",
        "city": "Amsterdam",
        "state": "North Holland",
        "state_code": "NH",
        "postcode": "1012 JS",
        "country": "Netherlands",
        "country_code": "nl"
      },
      "bounds": { "north": 52.373519, "south": 52.372719, "east": 4.894204, "west": 4.893004 }
    }
  ]
}

Campos de la respuesta

CampoTipoDescripción
querystringEl texto que interpretamos, tras recortar los espacios.
resultsarrayCoincidencias, la mejor primero. Vacío cuando nada coincidió.
results[].formattedstringDirección completa en el formato habitual del país.
results[].lat, lonnumberGrados decimales WGS 84.
results[].typestringaddress, street, postcode, city, region, country, poi.
results[].precisionstringhouse, street, postcode, admin. Lo que representa el punto. Consulta cobertura.
results[].confidencenumberDe 0 a 1. Cuánto se ajusta el resultado a la consulta. Por debajo de 0.5 significa que lo estimamos.
results[].place_idstringIdentificador estable de este lugar.
results[].componentsobjectPartes de la dirección. Ver más abajo.
results[].boundsobjectnorth, south, east, west del elemento encontrado.

Claves de los componentes

Solo aparecen las claves que corresponden. Se usan las mismas claves en todos los países.

ClaveSignificado
nameNombre de un punto de interés o edificio, cuando la coincidencia lo es.
house_numberIncluidas letras y rangos: 221B, 12-14.
roadNombre de la calle con su tipo: Baker Street, Avenue Anatole France.
neighbourhood, suburbZonas dentro de la ciudad, donde el país las usa.
cityCiudad, pueblo o aldea.
countyCondado o distrito.
state, state_codeEstado, provincia o región, y su sufijo ISO 3166-2 cuando existe.
postcodeCódigo postal, con el formato que usa la autoridad postal.
country, country_codeNombre del país y código ISO 3166-1 alfa-2 en minúsculas.

Notas

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.

ProveedorHostRuta
Google Maps Platformgapi.mygeocode.com/maps/api/geocode/json?address=...
Bing Maps REST Servicesbing.mygeocode.com/REST/v1/Locations?q=...
/REST/v1/Locations?countryRegion=...&locality=...&addressLine=...
HERE Geocoding and Searchhere.mygeocode.com/v1/geocode?q=...
/v1/geocode?qq=street=...;city=...
Mapbox Geocodingmapbox.mygeocode.com/geocoding/v5/mapbox.places/{query}.json
/search/geocode/v6/forward?q=...
Geocode.Farmfarm.mygeocode.com/forward/?addr=...
/v3/json/forward/?addr=...
OpenStreetMap Nominatimosm.mygeocode.com/search?q=...&format=json
/search?street=...&city=...&country=...&format=json
OpenCageopencage.mygeocode.com/geocode/v1/json?q=...
/geocode/v1/geojson?q=...
LocationIQlocationiq.mygeocode.com/v1/search?q=...&format=json
Geoapifygeoapify.mygeocode.com/v1/geocode/search?text=...
TomTom Searchtomtom.mygeocode.com/search/2/geocode/{query}.json
/search/2/structuredGeocode.json?countryCode=...&streetName=...
MapQuest Geocodingmapquest.mygeocode.com/geocoding/v1/address?location=...
/geocoding/v1/batch?location=...&location=...
Geocodiogeocodio.mygeocode.com/v1.7/geocode?q=...
/v1.7/geocode (POST, JSON array)
PositionStackpositionstack.mygeocode.com/v1/forward?query=...

Consultas masivas

Envía por POST un cuerpo JSON a la misma ruta con queries, un array de hasta 100 direcciones, y la respuesta incluye un array results con una entrada por consulta en el orden enviado. Cada entrada cuenta como una solicitud, y un lote mayor que lo que queda de la cuota se rechaza entero.

$ curl -X POST "https://api.mygeocode.com/v1/forward" -H "Content-Type: application/json" -d '{"queries": ["Brandenburg Gate, Berlin", "Bahnhofstrasse 1, Zurich"]}'

Errores

400 invalid_request cuando no hay q, ni un campo estructurado ni place_id, cuando limit está fuera del rango de 1 a 10, o cuando bounds o proximity están mal formados. Consulta errores para el resto.