OpenStreetMap地理编码无密钥逆地理编码 地理位置与网络定位

Nominatim地理编码API

Nominatim是OpenStreetMap官方的地理编码服务,支持地址搜索与逆地理编码。使用OSM数据完全免费,但必须带有效User-Agent/Referer、严格限制每秒1次,并遵守OSM署名要求。

查看官方文档 ↗

接入教程

GET https://nominatim.openstreetmap.org/search?q=Beijing&format=json&limit=1

1. 搜索地址返回坐标列表:
2. 逆地理编码:/reverse?lat=39.9&lon=116.4&format=json。
3. 必须设置有效User-Agent或Referer标识你的应用。
4. 严格遵守每秒1次请求限制,长时间运行的脚本降至每分钟4次。
5. 展示结果时必须标注 OpenStreetMap 署名。

Python 地址搜索

python
import requests
headers = {"User-Agent":"MyApp/1.0 (my@email.com)"}
url = "https://nominatim.openstreetmap.org/search"
r = requests.get(url, params={"q":"Beijing","format":"json","limit":1}, headers=headers)
print(r.json()[0]["lat"], r.json()[0]["lon"])

PHP 地址搜索

php
<?php
$ctx = stream_context_create(["http"=>["header"=>"User-Agent: MyApp/1.0 (my@email.com)\r\n"]]);
$url = "https://nominatim.openstreetmap.org/search?q=Beijing&format=json&limit=1";
$d = json_decode(file_get_contents($url, false, $ctx), true);
echo $d[0]["lat"] . "," . $d[0]["lon"];

JavaScript 地址搜索

javascript
// 浏览器端无法设置自定义User-Agent,建议服务端调用
const data = await fetch("https://nominatim.openstreetmap.org/search?q=Beijing&format=json&limit=1", {
  headers: {"User-Agent": "MyApp/1.0"}
}).then(r => r.json());
console.log(data[0].lat, data[0].lon);

常见问题

使用限制是什么?

严格每秒1次请求,长脚本每秒0.06次(4次/分),必须带有效User-Agent/Referer。

需要署名吗?

需要。使用OSM数据必须标注OpenStreetMap署名,符合ODbL许可。

相似接口推荐

高德地图Web服务API

高德地图Web服务API提供地理编码、逆地理编码、IP定位、行政区域查询、路径规划与静态地图等服务。个人认证开发者基础服务每天5000次免费配额。

免费增值
ipinfo.io IP信息查询API

ipinfo.io提供高精度IP地理定位、ASN、归属企业与隐私数据。无需Token免费每天1000次(按IP),注册免费Token后提升到每月50000次。

免费增值
ip-api.com IP查询

ip-api.com是一个免费IP地理位置接口,可查询IPv4/IPv6地址或域名的国家、地区、城市、经纬度、ISP与ASN信息。无需Key与注册,免费HTTP接口每分钟45次。

免费
腾讯位置服务

腾讯位置服务提供地址解析、逆地址解析、地点搜索、IP定位与静态地图等WebService接口。个人开发者每天10000次免费调用,并发限制5次/秒。

免费增值