Бесплатный API геолокации

API для разработчиков для получения информации о геолокации и IP-адресах.

Загрузка...

Маршруты

https://geo.cmds.media/ip?ip={ip}

Полезно для общей информации.

30 запросов за 60 секунд
api/ip

Примеры кода

import requests

response = requests.get("https://geo.cmds.media/ip?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/ip?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/ip?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Пример ответа

{
  "accuracy": 1000,
  "asn": 15169,
  "asn_org": "GOOGLE",
  "city": null,
  "continent": "North America",
  "continent_code": "NA",
  "country": "United States",
  "country_iso": "US",
  "currency": "usd",
  "currency_symbol": "$",
  "ip": "8.8.8.8",
  "latitude": 37.751,
  "longitude": -97.822,
  "postal": null,
  "region": null,
  "region_iso": null,
  "success": true,
  "timezone": "America/Chicago",
  "tz_offset": -4.0
}
https://geo.cmds.media/currency?ip={ip}

Полезно для интернет-магазинов с локализованной валютой.

90 запросов за 60 секунд
api/currency

Примеры кода

import requests

response = requests.get("https://geo.cmds.media/currency?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/currency?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/currency?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Пример ответа

{
  "country": "United States",
  "country_iso": "US",
  "currency": "usd",
  "currency_symbol": "$",
  "ip": "8.8.8.8",
  "success": true
}
https://geo.cmds.media/client?ip={ip}&ua={user_agent}

Возвращает геолокацию, а также информацию об устройстве, браузере и ОС. Использует заголовок User-Agent.

30 запросов за 60 секунд
api/client

Примеры кода

import requests

headers = {
    "User-Agent": "Mozilla/5.0"
}

response = requests.get(
    "https://geo.cmds.media/client?ip=8.8.8.8",
    headers=headers
)

data = response.json()
print(data)
curl "https://geo.cmds.media/client?ip=8.8.8.8" \
-H "User-Agent: Mozilla/5.0"
const response = await fetch("https://geo.cmds.media/client?ip=8.8.8.8", {
    headers: {
        "User-Agent": navigator.userAgent
    }
});

const data = await response.json();
console.log(data);

Пример ответа

{
  "asn": 15169,
  "asn_org": "GOOGLE",
  "browser": {
    "name": "Chrome",
    "version": "145.0.0"
  },
  "city": "Mountain View",
  "continent": "North America",
  "continent_code": "NA",
  "country": "United States",
  "country_iso": "US",
  "device": {
    "brand": null,
    "model": null
  },
  "device_type": "desktop",
  "ip": "8.8.8.8",
  "latitude": 37.4056,
  "longitude": -122.0775,
  "os": {
    "name": "Windows",
    "version": "10"
  },
  "postal": "94043",
  "region": "California",
  "region_iso": "CA",
  "success": true,
  "timezone": "America/Los_Angeles",
  "accuracy": 1000
}
https://geo.cmds.media/geo?ip={ip}

Подробная информация о геолокации, включая координаты и ASN.

40 запросов за 60 секунд
api/geo

Примеры кода

import requests

response = requests.get("https://geo.cmds.media/geo?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/geo?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/geo?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Пример ответа

{
  "accuracy": 1000,
  "asn": 15169,
  "asn_org": "GOOGLE",
  "city": "Mountain View",
  "continent": "North America",
  "continent_code": "NA",
  "country": "United States",
  "country_iso": "US",
  "ip": "8.8.8.8",
  "latitude": 37.4056,
  "longitude": -122.0775,
  "postal": "94043",
  "region": "California",
  "region_iso": "CA",
  "success": true,
  "timezone": "America/Los_Angeles",
  "tz_offset": -7.0
}
https://geo.cmds.media/country?ip={ip}

Минимальный поиск на уровне страны для проверок соответствия и гео-ограничений.

120 запросов за 60 секунд
api/country

Примеры кода

import requests

response = requests.get("https://geo.cmds.media/country?ip=8.8.8.8")
data = response.json()
print(data)
curl "https://geo.cmds.media/country?ip=8.8.8.8"
const response = await fetch("https://geo.cmds.media/country?ip=8.8.8.8");
const data = await response.json();
console.log(data);

Пример ответа

{
  "region": "California",
  "region_iso": "CA",
  "country": "United States",
  "country_iso": "US",
  "continent": "NA",
  "in_eu": false,
  "ip": "8.8.8.8",
  "success": true
}

Как работает ограничение запросов?

Наш API использует алгоритм token-bucket для ограничения запросов. У каждого эндпоинта есть определённое количество токенов, которые пополняются с фиксированной скоростью за период. При выполнении запроса используется один токен из соответствующего бакета. Если токены закончились, вы получите ответ 429 Too Many Requests с заголовком Retry-After, указывающим, когда можно повторить запрос.

Как обрабатываются ошибки?

Если запрос не удался, мы возвращаем JSON-ответ с полем "success", установленным в false, и полем "error", содержащим сообщение с описанием проблемы. Всегда проверяйте поле "success" перед обработкой данных ответа.

Если поле не применимо к конкретному IP-адресу (например, "city" для IP, который определяется только до страны), оно будет возвращено как null.

FAQ

Этот API действительно бесплатный?

Конечно! Наш API полностью бесплатен с щедрыми лимитами запросов. Мы не требуем API-ключ или какую-либо аутентификацию.

Откуда вы берёте данные геолокации?

Мы используем сочетание публичных и частных источников данных, включая базы данных GeoIP2 от MaxMind, чтобы обеспечить максимально широкий охват.

Можно ли использовать этот API в коммерческих целях?

Да, вы можете использовать наш API как для личных, так и для коммерческих проектов без ограничений.

Как часто обновляются данные геолокации?

Мы обновляем данные геолокации по мере появления новых данных.

Есть ли платный тариф или более высокие лимиты?

В настоящее время у нас нет платного тарифа. Возможно, мы рассмотрим его в будущем при достаточном спросе, но сейчас хотим сохранить API бесплатным для всех. Для увеличения лимитов вы можете связаться с нами и описать ваш сценарий использования через нашу форму поддержки.

Можно ли использовать другие языки программирования, кроме указанных?

Да, вы можете использовать любой язык программирования, который умеет выполнять HTTP-запросы для взаимодействия с нашим API. Примеры приведены лишь для старта.

Что делать, если я столкнулся с ошибкой?

Если у вас возникли проблемы или есть вопросы, свяжитесь с нами через нашу форму поддержки.

У меня есть предложение по новой функции или эндпоинту. Как поделиться?

Мы приветствуем отзывы и предложения. Пожалуйста, поделитесь своими идеями через нашу форму обратной связи.

У меня есть другой вопрос, которого здесь нет.

Если у вас есть другие вопросы, пожалуйста, свяжитесь с нами через нашу форму поддержки. Мы готовы помочь.