एक सादे HTTP API पर जियोकोडिंग, IP और समय क्षेत्र लुकअप

पतों को निर्देशांक में बदलें और निर्देशांक को वापस पतों में, पता करें कि कोई IPv4 या IPv6 पता कहाँ स्थित है, किसी भी बिंदु का समय क्षेत्र या ऊँचाई जानें, और पिन कोड हल करें। एक GET अनुरोध भेजें, JSON पढ़ें। कुछ भी इंस्टॉल करने की ज़रूरत नहीं।

किसी भी पते से प्रतिदिन 2,500 मुफ़्त अनुरोध, बिना कुंजी और बिना खाते के। ज़्यादा चाहिए? अपने नाम और ईमेल से साइन अप करें, €0.0001 प्रति अनुरोध की दर से प्रीपेड क्रेडिट जोड़ें, या €50 प्रति माह में Unlimited कुंजी लें। कार्ड और क्रिप्टो स्वीकार किए जाते हैं।

$ 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,500प्रतिदिन मुफ़्त अनुरोध, हर कुंजी पर
€0.0001प्रति अनुरोध, प्रीपेड क्रेडिट में
€50प्रति माह, Unlimited कुंजी के लिए
17दूसरे प्रोवाइडरों के API के लिए ड्रॉप-इन होस्ट
एंडपॉइंट

आठ लुकअप, एक बेस URL

हर एंडपॉइंट https://api.mygeocode.com/v1/ के अंतर्गत है, क्वेरी पैरामीटर लेता है और एक ही एनवलप के साथ JSON लौटाता है। एक को सीख लें, तो आप सभी को जान लेंगे।

फ़ॉरवर्ड जियोकोडिंग API

GET /v1/forward एंडपॉइंट

कोई पता, जगह का नाम या मोटा विवरण भेजें और निर्देशांक, साफ़ किया गया पता और उसका हर हिस्सा पाएँ।

विवरण और उदाहरण

रिवर्स जियोकोडिंग API

GET /v1/reverse एंडपॉइंट

अक्षांश और देशांतर भेजें और सबसे नज़दीकी पता पाएँ, जिसमें शहर, क्षेत्र, पिन कोड और देश अलग-अलग दिए गए हों।

विवरण और उदाहरण

पता ऑटोकम्प्लीट API

GET /v1/autocomplete एंडपॉइंट

किसी के टाइप करते समय पते सुझाएँ। हर सुझाव के साथ निर्देशांक आते हैं, इसलिए दूसरी कॉल की ज़रूरत शायद ही पड़ती है।

विवरण और उदाहरण

IPv4 लुकअप API

GET /v1/ipv4 एंडपॉइंट

किसी भी IPv4 पते के लिए देश, क्षेत्र, शहर, निर्देशांक, समय क्षेत्र और नेटवर्क का मालिक, या अगर आप पता न दें तो कॉल करने वाले के लिए।

विवरण और उदाहरण

IPv6 लुकअप API

GET /v1/ipv6 एंडपॉइंट

IPv6 पतों के लिए वही विवरण, साथ में वह घोषित प्रीफ़िक्स जिससे पता संबंधित है।

विवरण और उदाहरण

समय क्षेत्र लुकअप API

GET /v1/timezone एंडपॉइंट

किसी भी निर्देशांक के लिए IANA समय क्षेत्र का नाम, UTC ऑफ़सेट, DST स्थिति और स्थानीय समय, अभी का या आपके चुने किसी टाइमस्टैम्प का।

विवरण और उदाहरण

ऊँचाई लुकअप 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 और Places Autocomplete काम करते रहते हैं, और मैप लोड का कोई खर्च नहीं होता। 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

REST ड्रॉप-इन JavaScript ड्रॉप-इन

कोई भी भाषा

अगर वह 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"]})"

हर भाषा के लिए SDK योजनाएँ और पूरे उदाहरण देखें

कुंजियाँ वैकल्पिक हैं

साइनअप के लिए बस एक ईमेल पता चाहिए

किसी भी पते को बिना किसी कुंजी के प्रतिदिन 2,500 मुफ़्त अनुरोध मिलते हैं, सभी एंडपॉइंट और ड्रॉप-इन होस्ट पर, जिनकी गिनती 00:00 UTC से होती है। जब आप कुंजी चाहें, तो उसमें एक मिनट लगता है: अपने नाम, ईमेल पते और पासवर्ड से साइन अप करें, और आपकी पहली कुंजी स्क्रीन पर होगी। न कंपनी, न कार्ड। हर कुंजी के अपने प्रतिदिन 2,500 मुफ़्त अनुरोध होते हैं, और उसी नेटवर्क से बिना कुंजी के किए गए अनुरोध उसी कोटा को साझा करते हैं, इसलिए खाता दूसरे मुफ़्त 2,500 के बजाय क्रेडिट, पैकेज और उपयोग का इतिहास जोड़ता है।

कुंजियाँ उन मशीनों से जुड़ी होती हैं जो उनका उपयोग करती हैं। उपयोग के अनुसार भुगतान वाली कुंजी किसी भी रोलिंग 24 घंटों में दो IP पतों को सेवा देती है, Unlimited कुंजी तीन को। हर पता अपने पहले अनुरोध से 24 घंटों तक अपना स्लॉट रखता है और फिर उसे खाली कर देता है। किसी और पते से आया अनुरोध अस्वीकार किया जाता है और गिना नहीं जाता, और यही चीज़ लीक हुई कुंजी को किसी और के लिए बेकार बना देती है। ज़्यादा पते चाहिए? और कुंजियाँ बनाएँ या पैकेज जोड़ें।

  1. साइन अप करें, कुंजी पाएँ

    ईमेल और पासवर्ड। कुंजी एक ही बार दिखती है; इसे कॉपी कर लें। प्रतिदिन 2,500 अनुरोध, मुफ़्त, अधिकतम दो IP पतों से।

  2. ज़्यादा चाहिए तो क्रेडिट जोड़ें

    कार्ड या क्रिप्टो से €5 से रिचार्ज करें। किसी कुंजी के मुफ़्त कोटा से ऊपर के अनुरोध बैलेंस से हर एक के लिए €0.0001 लेते हैं। क्रेडिट कभी एक्सपायर नहीं होता और अपने आप कोई शुल्क नहीं लिया जाता।

  3. या Unlimited कुंजी लें

    €50 प्रति माह में ऐसी कुंजी मिलती है जिस पर प्रति अनुरोध कोई शुल्क नहीं, और जिसका उपयोग हर रोलिंग 24 घंटों में तीन IP पतों से किया जा सकता है। जितने आपके एप्लिकेशन हैं, उतने पैकेज ऑर्डर करें।

मूल्य निर्धारण

शुरुआत मुफ़्त, भुगतान आसान

हर एंडपॉइंट की कीमत एक जैसी है। हर ड्रॉप-इन होस्ट की गिनती एक जैसी है। न कोई स्तर, न प्रति सीट शुल्क, न कोई कॉन्ट्रैक्ट। कीमतें यूरो में, भुगतान कार्ड या क्रिप्टो से।

मुफ़्त कुंजी

हर कुंजी पर प्रतिदिन 2,500 अनुरोध। अपने नाम और ईमेल से साइन अप करें; कोई कार्ड नहीं। सशुल्क उपयोग जैसा ही डेटा और वही एंडपॉइंट।

क्रेडिट

किसी कुंजी के हर दिन के मुफ़्त 2,500 से ऊपर €0.0001 प्रति अनुरोध, जो उस बैलेंस से लिया जाता है जिसे आप जब चाहें रिचार्ज करते हैं। कोई मासिक शुल्क नहीं, कोई एक्सपायरी नहीं। एक दिन में 10,000 अनुरोध €0.75 का क्रेडिट इस्तेमाल करते हैं।

Unlimited कुंजी

€50 प्रति माह। हर एंडपॉइंट और हर ड्रॉप-इन होस्ट पर बिना प्रति अनुरोध शुल्क वाली कुंजी, हर रोलिंग 24 घंटों में अधिकतम तीन IP पतों से।

पूरा मूल्य निर्धारण और हल किए गए उदाहरण

SDK

आधिकारिक लाइब्रेरी, हर भाषा के लिए एक, सभी पतली

हम JavaScript और TypeScript, Python, PHP, Go, Java, C#, Ruby और Rust के लिए छोटी क्लाइंट लाइब्रेरी लिख रहे हैं। हर एक आपको टाइप किए गए रिस्पॉन्स, समझदार टाइमआउट, 429 और 503 पर रीट्राई देगी, और इसके अलावा कुछ नहीं। जब कोई लाइब्रेरी तैयार होगी, तो वह अपनी इंस्टॉल कमांड के साथ SDK पेज पर आ जाएगी।

SDK की प्रगति पर नज़र रखें

क्या इसे आज़माने के लिए मुझे कुंजी चाहिए?

नहीं। किसी भी पते को बिना कुंजी और बिना खाते के प्रतिदिन 2,500 अनुरोध मिलते हैं। डेमो पेज बिना कुंजी के सीधे ब्राउज़र से अनुरोध भेजता है। जब आपको क्रेडिट, Unlimited पैकेज या उपयोग का इतिहास चाहिए, तो मुफ़्त कुंजी में एक मिनट लगता है।

अनुरोध संख्या 2,501 पर क्या होता है?

अगर आपके खाते में क्रेडिट है, तो अनुरोध पूरा होता है और उसमें से €0.0001 इस्तेमाल होता है। अगर नहीं है, तो आपको 00:00 UTC तक या रिचार्ज करने तक HTTP 402 मिलता है। Unlimited कुंजी पर कुछ नहीं बदलता।

एक कुंजी दो या तीन IP पतों तक सीमित क्यों है?

कुंजियाँ सर्वरों के लिए बनी हैं, और इस सीमा का मतलब है कि किसी सार्वजनिक रिपॉज़िटरी में लीक हुई कुंजी का सौ मशीनों से उपयोग नहीं हो सकता। हर पता अपने पहले अनुरोध से 24 घंटों तक अपना स्लॉट रखता है, फिर स्लॉट खाली हो जाता है। उपयोग के अनुसार भुगतान वाली कुंजी में दो स्लॉट होते हैं, Unlimited कुंजी में तीन। ज़्यादा मशीनों के लिए और कुंजियाँ बनाएँ या पैकेज जोड़ें।

क्या मैं परिणाम सहेज सकता हूँ?

हाँ। उन्हें कैश करें, अपने डेटाबेस में सहेजें, किसी दूसरे प्रोवाइडर के मैप पर दिखाएँ। शर्तें बस इतना कहती हैं कि आप कच्चे डेटा को अपनी खुद की जियोकोडिंग सेवा के रूप में दोबारा न बेचें।

अपना पहला अनुरोध अभी भेजें

डेमो आपकी कुंजी के साथ आपके ब्राउज़र से लाइव अनुरोध भेजता है और JSON रिस्पॉन्स खोलता है। मुफ़्त कुंजी के लिए आपका नाम, एक ईमेल पता और एक मिनट चाहिए; जब प्रतिदिन 2,500 कम पड़ने लगें, तो क्रेडिट रिचार्ज करें या Unlimited कुंजी जोड़ें।