الترميز الجغرافي والاستعلام عن IP والمناطق الزمنية عبر واجهة API واحدة بسيطة تعمل بـ HTTP
حوّل العناوين إلى إحداثيات والعكس، واعرف موقع أي عنوان IPv4 أو IPv6، واحصل على المنطقة الزمنية أو الارتفاع لأي نقطة، وحلّل الرموز البريدية. أرسل طلب GET، واقرأ JSON. لا شيء لتثبيته.
2,500 طلب مجاني يوميًا من أي عنوان، دون مفتاح ودون حساب. تحتاج إلى المزيد؟ أنشئ حسابًا باسمك وبريدك الإلكتروني، وأضف رصيدًا مسبق الدفع بسعر 0.0001 € للطلب، أو احصل على مفتاح Unlimited مقابل 50 € شهريًا. نقبل البطاقات والعملات المشفرة.
$ 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" } } }
ثماني عمليات بحث، وعنوان URL أساسي واحد
كل نقطة نهاية موجودة تحت https://api.mygeocode.com/v1/، وتقبل معاملات الاستعلام، وتعيد JSON بالغلاف نفسه. تعلّم واحدة وستعرفها كلها.
واجهة API للترميز الجغرافي الأمامي
نقطة النهاية GET /v1/forwardأرسل عنوانًا أو اسم مكان أو وصفًا تقريبيًا، واحصل على الإحداثيات وعنوان منقّح وكل جزء من أجزائه.
التفاصيل والأمثلةواجهة API للترميز الجغرافي العكسي
نقطة النهاية GET /v1/reverseأرسل خط العرض وخط الطول واحصل على أقرب عنوان، مع المدينة والمنطقة والرمز البريدي والدولة مفصّلة.
التفاصيل والأمثلةواجهة API للإكمال التلقائي للعناوين
نقطة النهاية GET /v1/autocompleteاقترح العناوين أثناء الكتابة. كل اقتراح يأتي مع إحداثياته، لذا نادرًا ما تحتاج إلى استدعاء ثانٍ.
التفاصيل والأمثلةواجهة API للاستعلام عن IPv4
نقطة النهاية GET /v1/ipv4الدولة والمنطقة والمدينة والإحداثيات والمنطقة الزمنية ومالك الشبكة لأي عنوان IPv4، أو للمستدعي إذا لم تحدد عنوانًا.
التفاصيل والأمثلةواجهة API للاستعلام عن IPv6
نقطة النهاية GET /v1/ipv6التفاصيل نفسها لعناوين IPv6، إضافة إلى البادئة المعلنة التي ينتمي إليها العنوان.
التفاصيل والأمثلةواجهة API للاستعلام عن المنطقة الزمنية
نقطة النهاية GET /v1/timezoneاسم المنطقة الزمنية وفق IANA، وفارق التوقيت عن UTC، وحالة التوقيت الصيفي، والوقت المحلي لأي إحداثيات، الآن أو عند طابع زمني تختاره.
التفاصيل والأمثلةواجهة API للاستعلام عن الارتفاع
نقطة النهاية GET /v1/elevationالارتفاع فوق مستوى سطح البحر بالأمتار لنقطة واحدة، أو لما يصل إلى 100 نقطة في استدعاء واحد.
التفاصيل والأمثلةواجهة API للاستعلام عن الرمز البريدي
نقطة النهاية GET /v1/postcodeحوّل الرمز البريدي إلى اسم مكان ومنطقة وإحداثيات. يعمل مع رموز ZIP والرموز البريدية وما يعادلها في معظم الدول.
التفاصيل والأمثلةكل نتيجة تخبرك بمدى دقتها
أداة الترميز الجغرافي التي تعيد مركز المدينة حين تسأل عن رقم منزل أسوأ من أداة تخبرك بأنها لم تجد المنزل. كل نتيجة نعيدها تحمل الحقل precision بإحدى أربع قيم، حتى تقرر شيفرتك ما تفعله بالتطابق التقريبي بدلًا من التخمين.
التغطية ليست متماثلة في كل مكان، ونفضّل أن نريك ذلك على أن نطلق ادعاءً شاملًا. تعرض صفحة التغطية أفضل مستوى نصل إليه في كل دولة وإقليم من أصل 249.
| المستوى | ما تمثله النقطة |
|---|---|
house | المبنى أو قطعة الأرض نفسها. تقع النقطة على العقار. |
street | موضع على امتداد الشارع، محسوب بالاستيفاء من نطاق أرقام المنازل في ذلك المقطع. |
postcode | مركز منطقة الرمز البريدي. |
admin | مركز المدينة أو الحي أو المنطقة أو الدولة، أيها كان التطابق الأكثر تحديدًا الذي استطعنا الوصول إليه. |
تستخدم واجهة API لمزود آخر؟ غيّر اسم المضيف.
نشغّل مضيفات بديلة متوافقة تقبل المسارات والمعاملات نفسها التي تقبلها Google Maps وBing Maps وHERE وMapbox وGeocode.Farm وNominatim وأحد عشر مزودًا آخر، وتجيب بصيغة استجاباتها ببياناتنا. شيفرة التحليل لديك لا تتغير. ضع مفتاح My Geocode الخاص بك مكان المفتاح القديم.
$ 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"والفكرة نفسها تنطبق على مكتبات JavaScript. حمّل Google Maps JavaScript API من gapi.mygeocode.com وستستمر google.maps.Map وGeocoder وAutocomplete الخاصة بـ Places في العمل، مع تحميلات خرائط لا تكلف شيئًا. تتوفر أدوات تحميل لعنصر التحكم Bing Maps V8 وHERE Maps for JavaScript وMapQuest.js، وإعدادات لإضافات الترميز الجغرافي في MapLibre وMapbox GL وLeaflet.
- Google Maps
- Bing Maps
- HERE
- Mapbox
- Geocode.Farm
- Nominatim
- OpenCage
- LocationIQ
- Geoapify
- TomTom
- MapQuest
- Geocodio
- PositionStack
- ip-api
- ipinfo
- ipstack
- Open-Elevation
إذا كانت قادرة على إرسال طلب HTTP، فبإمكانها استخدام هذه الخدمة
لا حاجة إلى أي SDK. تحوّل هذه الأمثلة عنوانًا إلى إحداثيات وتطبعها. المكتبات الرسمية لكل لغة في الطريق، وستبقى أغلفة خفيفة حول الاستدعاءات نفسها.
$ 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"]})"عنوان بريد إلكتروني هو كل ما يتطلبه التسجيل
يحصل أي عنوان على 2,500 طلب مجاني يوميًا دون أي مفتاح على الإطلاق، عبر جميع نقاط النهاية والمضيفات البديلة المتوافقة، ويُحسب اليوم ابتداءً من 00:00 بتوقيت UTC. ويستغرق الحصول على مفتاح دقيقة واحدة حين تريده: أنشئ حسابًا باسمك وعنوان بريد إلكتروني وكلمة مرور، وسيظهر مفتاحك الأول على الشاشة. لا حاجة إلى شركة ولا إلى بطاقة. لكل مفتاح 2,500 طلب مجاني يوميًا خاصة به، والطلبات المرسلة دون مفتاح من الشبكة نفسها تتقاسم هذه الحصة، لذا يضيف الحساب الرصيد والباقات وسجل الاستخدام، لا حصة مجانية ثانية من 2,500 طلب.
ترتبط المفاتيح بالأجهزة التي تستخدمها. مفتاح الدفع حسب الاستخدام يخدم عنواني IP خلال أي 24 ساعة متتالية، ومفتاح Unlimited ثلاثة عناوين. يحتفظ كل عنوان بخانته لمدة 24 ساعة من أول طلب له ثم يحررها. والطلب القادم من عنوان إضافي يُرفض ولا يُحتسب، وهذا ما يمنع المفتاح المسرّب من أن يكون مفيدًا لأي شخص آخر. تحتاج إلى عناوين أكثر؟ أنشئ مفاتيح إضافية أو أضف باقات.
-
أنشئ حسابًا واحصل على مفتاح
بريد إلكتروني وكلمة مرور. يظهر المفتاح مرة واحدة؛ انسخه. 2,500 طلب يوميًا، مجانًا، من عنواني IP كحد أقصى.
-
أضف رصيدًا حين تحتاج إلى المزيد
اشحن الرصيد ابتداءً من 5 € بالبطاقة أو بالعملات المشفرة. الطلبات التي تتجاوز الحصة المجانية للمفتاح تُخصم بسعر 0.0001 € لكل طلب من الرصيد. الرصيد لا تنتهي صلاحيته أبدًا ولا يُحصَّل أي مبلغ تلقائيًا.
-
أو احصل على مفتاح Unlimited
مقابل 50 € شهريًا تحصل على مفتاح بلا رسوم على كل طلب، يمكن استخدامه من ثلاثة عناوين IP خلال كل 24 ساعة متتالية. اطلب عدد الباقات الذي يساوي عدد تطبيقاتك.
مجاني للبدء، وبسيط في الدفع
كل نقطة نهاية تكلف السعر نفسه. وكل مضيف بديل متوافق يُحتسب بالطريقة نفسها. لا فئات، ولا رسوم حسب المقعد، ولا عقد. الأسعار باليورو، والدفع بالبطاقة أو بالعملات المشفرة.
مفتاح مجاني
2,500 طلب يوميًا على كل مفتاح. أنشئ حسابًا باسمك وبريدك الإلكتروني؛ دون بطاقة. البيانات نفسها ونقاط النهاية نفسها المتاحة في الاستخدام المدفوع.
الرصيد
0.0001 € للطلب بعد الطلبات المجانية للمفتاح البالغة 2,500 كل يوم، تُخصم من رصيد تشحنه متى شئت. لا رسوم شهرية، ولا انتهاء صلاحية. 10,000 طلب في اليوم تستهلك 0.75 € من الرصيد.
مفتاح Unlimited
50 € شهريًا. مفتاح بلا رسوم على كل طلب عبر كل نقطة نهاية وكل مضيف بديل متوافق، من ثلاثة عناوين IP كحد أقصى خلال كل 24 ساعة متتالية.
مكتبات رسمية، واحدة لكل لغة، وكلها خفيفة
نكتب مكتبات عميل صغيرة لـ JavaScript وTypeScript وPython وPHP وGo وJava وC# وRuby وRust. ستمنحك كل منها استجابات محددة الأنواع، ومهلات معقولة، وإعادة محاولة عند 429 و503، ولا شيء غير ذلك. وعندما تجهز إحداها، تُضاف إلى صفحة SDK مع أمر تثبيتها.
هل أحتاج إلى مفتاح لتجربتها؟
لا. يحصل أي عنوان على 2,500 طلب يوميًا دون مفتاح ودون حساب. ترسل صفحة العرض التجريبي الطلبات مباشرة من المتصفح دون مفتاح. ويستغرق الحصول على مفتاح مجاني دقيقة واحدة حين تريد رصيدًا أو باقة Unlimited أو سجل استخدام.
ماذا يحدث عند الطلب رقم 2,501؟
إذا كان في حسابك رصيد، يمر الطلب ويستهلك 0.0001 € منه. وإذا لم يكن، تتلقى HTTP 402 حتى 00:00 بتوقيت UTC أو إلى أن تشحن الرصيد. أما على مفتاح Unlimited فلا يتغير شيء.
لماذا يقتصر المفتاح على عنوانين أو ثلاثة عناوين IP؟
المفاتيح مخصصة للخوادم، ويعني هذا الحد أن المفتاح الذي يتسرب إلى مستودع عام لا يمكن استخدامه من مئة جهاز. يحتفظ كل عنوان بخانته لمدة 24 ساعة من أول طلب له، ثم تتحرر الخانة. لمفتاح الدفع حسب الاستخدام خانتان، ولمفتاح Unlimited ثلاث خانات. ولأجهزة أكثر، أنشئ مفاتيح إضافية أو أضف باقات.
هل يمكنني تخزين النتائج؟
نعم. خزّنها مؤقتًا، واحفظها في قاعدة بياناتك، واعرضها على خريطة من مزود آخر. لا تطلب الشروط سوى ألا تعيد بيع البيانات الخام كخدمة ترميز جغرافي خاصة بك.
أرسل طلبك الأول الآن
يرسل العرض التجريبي طلبات حية من متصفحك بمفتاحك ويفتح استجابة JSON. لا يتطلب المفتاح المجاني سوى اسمك وعنوان بريد إلكتروني ودقيقة واحدة؛ وحين تتجاوز احتياجاتك 2,500 يوميًا، اشحن الرصيد أو أضف مفتاح Unlimited.