Géocodage, recherche d'IP et de fuseau horaire via une seule API HTTP simple

Convertissez des adresses en coordonnées et inversement, découvrez où se situe une adresse IPv4 ou IPv6, obtenez le fuseau horaire ou l'altitude de n'importe quel point et résolvez des codes postaux. Envoyez une requête GET, lisez le JSON. Rien à installer.

2 500 requêtes gratuites par jour depuis n'importe quelle adresse, sans clé et sans compte. Besoin de plus ? Inscrivez-vous avec votre nom et votre e-mail, ajoutez du crédit prépayé à 0,0001 € la requête ou prenez une clé Unlimited à 50 € par mois. Cartes et cryptomonnaies acceptées.

$ 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"
    }
  }
}
2 500requêtes gratuites par jour, sur chaque clé
0,0001 €par requête en crédit prépayé
50 €par mois pour une clé Unlimited
17hôtes compatibles (drop-in) avec les API d'autres fournisseurs
Endpoints

Huit recherches, une seule URL de base

Chaque endpoint se trouve sous https://api.mygeocode.com/v1/, accepte des paramètres de requête et renvoie du JSON avec la même enveloppe. Apprenez-en un et vous les connaissez tous.

API de géocodage direct

GET /v1/forward

Envoyez une adresse, un nom de lieu ou une description approximative et obtenez des coordonnées, une adresse normalisée et chacun de ses éléments.

Détails et exemples

API de géocodage inverse

GET /v1/reverse

Envoyez une latitude et une longitude et obtenez l'adresse la plus proche, avec la ville, la région, le code postal et le pays détaillés.

Détails et exemples

API de saisie semi-automatique d'adresses

GET /v1/autocomplete

Suggérez des adresses pendant la saisie. Chaque suggestion est accompagnée de coordonnées, vous avez donc rarement besoin d'un second appel.

Détails et exemples

API de recherche IPv4

GET /v1/ipv4

Pays, région, ville, coordonnées, fuseau horaire et propriétaire du réseau pour toute adresse IPv4, ou pour l'appelant si vous l'omettez.

Détails et exemples

API de recherche IPv6

GET /v1/ipv6

Les mêmes informations pour les adresses IPv6, plus le préfixe annoncé auquel appartient l'adresse.

Détails et exemples

API de fuseau horaire

GET /v1/timezone

Nom du fuseau horaire IANA, décalage UTC, statut de l'heure d'été et heure locale pour toute coordonnée, maintenant ou à l'horodatage de votre choix.

Détails et exemples

API d'altitude

GET /v1/elevation

Altitude au-dessus du niveau de la mer en mètres pour un point, ou jusqu'à 100 points en un seul appel.

Détails et exemples

API de code postal

GET /v1/postcode

Convertissez un code postal en nom de lieu, région et coordonnées. Fonctionne avec les ZIP codes, les postcodes et leurs équivalents dans la plupart des pays.

Détails et exemples
Précision

Chaque résultat indique sa précision

Un géocodeur qui renvoie le centre d'une ville quand vous demandiez un numéro de rue est pire qu'un géocodeur qui indique qu'il n'a pas trouvé la maison. Chaque résultat que nous renvoyons comporte un champ precision avec l'une de quatre valeurs, pour que votre code décide quoi faire d'une correspondance approximative au lieu de deviner.

La couverture n'est pas la même partout, et nous préférons vous la montrer plutôt que de faire une affirmation générale. La page de couverture indique le meilleur niveau que nous atteignons dans chacun des 249 pays et territoires.

Voir le niveau pour chaque pays

NiveauCe que représente le point
houseLe bâtiment ou la parcelle lui-même. Le point se trouve sur la propriété.
streetUne position le long de la rue, interpolée à partir de la plage de numéros de ce pâté de maisons.
postcodeLe centre de la zone du code postal.
adminLe centre de la ville, du quartier, de la région ou du pays, selon la correspondance la plus précise que nous avons pu établir.
Migration

Vous utilisez déjà l'API de quelqu'un d'autre ? Changez le nom d'hôte.

Nous exploitons des hôtes compatibles (drop-in) qui acceptent les mêmes chemins et paramètres que Google Maps, Bing Maps, HERE, Mapbox, Geocode.Farm, Nominatim et onze autres, et qui répondent dans leur format de réponse avec nos données. Votre code d'analyse ne change pas. Placez votre clé My Geocode là où se trouvait l'ancienne clé.

Avant
$ curl "https://maps.googleapis.com/maps/api/geocode/json?address=10+Downing+St+London&key=GOOGLE_KEY"
Après
$ curl "https://gapi.mygeocode.com/maps/api/geocode/json?address=10+Downing+St+London&key=MYGEOCODE_KEY"

Le même principe s'applique aux bibliothèques JavaScript. Chargez la Google Maps JavaScript API depuis gapi.mygeocode.com et google.maps.Map, Geocoder et Places Autocomplete continuent de fonctionner, avec des chargements de carte qui ne coûtent rien. Il existe des chargeurs pour le contrôle Bing Maps V8, HERE Maps for JavaScript et MapQuest.js, ainsi que des réglages pour les plugins de géocodage MapLibre, Mapbox GL et Leaflet.

  • Google Maps
  • Bing Maps
  • HERE
  • Mapbox
  • Geocode.Farm
  • Nominatim
  • OpenCage
  • LocationIQ
  • Geoapify
  • TomTom
  • MapQuest
  • Geocodio
  • PositionStack
  • ip-api
  • ipinfo
  • ipstack
  • Open-Elevation

Hôtes compatibles REST Remplacements JavaScript compatibles

Tous les langages

S'il peut envoyer une requête HTTP, il peut l'utiliser

Aucun SDK n'est nécessaire. Ces exemples géocodent une adresse et affichent ses coordonnées. Des bibliothèques officielles pour chaque langage sont en préparation et resteront de fines surcouches autour de ces mêmes appels.

$ 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"]})"

Voir les projets de SDK et les exemples complets pour chaque langage

Les clés sont facultatives

Une adresse e-mail suffit pour s'inscrire

Toute adresse dispose de 2 500 requêtes gratuites par jour sans aucune clé, sur tous les endpoints et hôtes compatibles, comptées à partir de 00:00 UTC. Une clé ne prend qu'une minute quand vous en voulez une : inscrivez-vous avec votre nom, une adresse e-mail et un mot de passe, et votre première clé s'affiche à l'écran. Pas d'entreprise, pas de carte. Chaque clé dispose de ses propres 2 500 requêtes gratuites par jour, et les requêtes effectuées sans clé depuis le même réseau partagent ce quota : un compte apporte donc du crédit, des forfaits et un historique d'utilisation, et non 2 500 requêtes gratuites supplémentaires.

Les clés sont liées aux machines qui les utilisent. Une clé en paiement à l'usage sert deux adresses IP sur toute période glissante de 24 heures, une clé Unlimited trois. Chaque adresse conserve son emplacement pendant 24 heures à partir de sa première requête, puis le libère. Une requête provenant d'une adresse supplémentaire est refusée et n'est pas comptée, ce qui empêche une clé divulguée d'être utile à quelqu'un d'autre. Besoin de plus d'adresses ? Créez d'autres clés ou ajoutez des forfaits.

  1. Inscrivez-vous, obtenez une clé

    Un e-mail et un mot de passe. La clé ne s'affiche qu'une fois ; copiez-la. 2 500 requêtes par jour, gratuitement, depuis deux adresses IP au maximum.

  2. Ajoutez du crédit quand il vous en faut plus

    Rechargez à partir de 5 € par carte ou en cryptomonnaie. Les requêtes au-delà du quota gratuit d'une clé coûtent chacune 0,0001 €, prélevés sur le solde. Le crédit n'expire jamais et rien n'est facturé automatiquement.

  3. Ou prenez une clé Unlimited

    Pour 50 € par mois, vous obtenez une clé sans frais par requête, utilisable depuis trois adresses IP par période glissante de 24 heures. Commandez autant de forfaits que vous avez d'applications.

Tarifs

Gratuit pour commencer, simple à payer

Chaque endpoint coûte le même prix. Chaque hôte compatible compte de la même façon. Pas de paliers, pas de frais par utilisateur, pas de contrat. Prix en euros, payés par carte ou en cryptomonnaie.

Clé gratuite

2 500 requêtes par jour sur chaque clé. Inscrivez-vous avec votre nom et votre e-mail ; aucune carte. Les mêmes données et les mêmes endpoints que l'utilisation payante.

Crédit

0,0001 € par requête au-delà des 2 500 gratuites d'une clé chaque jour, prélevés sur un solde que vous rechargez quand vous le souhaitez. Pas d'abonnement mensuel, pas d'expiration. 10 000 requêtes dans une journée consomment 0,75 € de crédit.

Clé Unlimited

50 € par mois. Une clé sans frais par requête sur chaque endpoint et chaque hôte compatible, depuis trois adresses IP au maximum par période glissante de 24 heures.

Tarifs complets et exemples chiffrés

SDK

Des bibliothèques officielles, une par langage, toutes légères

Nous écrivons de petites bibliothèques clientes pour JavaScript et TypeScript, Python, PHP, Go, Java, C#, Ruby et Rust. Chacune vous apportera des réponses typées, des délais d'expiration raisonnables, de nouvelles tentatives sur 429 et 503, et rien d'autre. Quand l'une d'elles est prête, elle rejoint la page des SDK avec sa commande d'installation.

Suivre l'avancement des SDK

Ai-je besoin d'une clé pour essayer ?

Non. Toute adresse dispose de 2 500 requêtes par jour sans clé et sans compte. La page de démo envoie des requêtes directement depuis le navigateur sans clé. Une clé gratuite ne prend qu'une minute quand vous voulez du crédit, un forfait Unlimited ou un historique d'utilisation.

Que se passe-t-il à la requête 2 501 ?

Si votre compte dispose de crédit, la requête passe et en consomme 0,0001 €. Sinon, vous recevez une erreur HTTP 402 jusqu'à 00:00 UTC ou jusqu'à ce que vous rechargiez. Avec une clé Unlimited, rien ne change.

Pourquoi une clé est-elle limitée à deux ou trois adresses IP ?

Les clés sont destinées aux serveurs, et cette limite signifie qu'une clé divulguée dans un dépôt public ne peut pas être utilisée depuis cent machines. Chaque adresse conserve son emplacement pendant 24 heures à partir de sa première requête, puis l'emplacement se libère. Une clé en paiement à l'usage dispose de deux emplacements, une clé Unlimited de trois. Pour davantage de machines, créez d'autres clés ou ajoutez des forfaits.

Puis-je stocker les résultats ?

Oui. Mettez-les en cache, enregistrez-les dans votre base de données, affichez-les sur une carte d'un autre fournisseur. Les conditions demandent seulement que vous ne revendiez pas les données brutes sous la forme de votre propre service de géocodage.

Envoyez votre première requête maintenant

La démo envoie de vraies requêtes depuis votre navigateur avec votre clé et ouvre la réponse JSON. Une clé gratuite demande votre nom, une adresse e-mail et une minute ; quand 2 500 par jour ne vous suffisent plus, rechargez du crédit ou ajoutez une clé Unlimited.