Бесплатный 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);

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

{
  "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. Примеры приведены лишь для старта.

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

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