ВойтиРегистрация
На случай, если нужен Ваш текущий IP: 34.204.173.36

Хочу виджет на сайт

Документация 🧠

Подробная информация по каждому API

Переходы к разделам

IP API MITM Detection API Distance API

IP API: максимальная информация об IP-адресе (Geolocation)


Версия API

HTTPS/HTTP

Ключи

Используйте в запросе ключ project со значением названия проекта, чтобы статистика запросов отображала количество запросов по Вашему конкретному проекту (если название проекта будет содержать не только латинские буквы, не забудьте делать кодировку при запросе).
Защита API-ключа

Пример и описание данных из ответа

Пример URL на отправку запроса на получение базовой информации и ответ:
https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ
"as":"AS9009 M247 Ltd"
"city":"Zurich"
"country":"Switzerland"
"countryCode":"CH"
"isp":"M247 Europe"
"lat":"47.3769"
"lon":"8.54169"
"org":"M247 LTD"
"query":"37.120.137.58"
	"range": {
		"from":"37.120.137.0"
		"to":"37.120.137.255"
	}
	"deviceType": {
		"desktop":true
		"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0"
	}
"region":"ZH"
"regionName":"Zurich"
"reverse":""
"status":"success"
"timezone":"Europe/Zurich"
"zip":"8010"

В данном ответе Вы получаете информацию об IP-адресе, с которого был осуществлен запрос.
При добавлении ключей anonymity и/или info будут отправлены дополнительные платные запросы на получение информации об IP-адресе. При желании, укажите в ключе query конкретный IP-адрес.

Пример URL на отправку запроса на получение максимальной информации:
https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&anonymity=1&info=1
Пример URL на отправку запроса на получение максимальной информации по конкретному IP-адресу:
https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=8.8.8.8&anonymity=1&info=1

Все возможные данные из ответа IP API:
Название Описание Пример Тип
as AS номер (автономная система) AS9009 M247 Ltd String
city Город Zurich String
country Страна Switzerland String
countryCode Двухбуквенный код страны ISO 3166-1 alpha-2 CH String
isp Интернет-провайдер M247 Europe String
lat Latitude (широта) 47.3769 Float
lon Longitude (долгота) 8.54169 Float
org Организация, которой принадлежит IP-адрес M247 LTD String
query Запрос 37.120.137.58 String
range Диапазон IP-адресов провайдера
> from От 37.120.137.0 String
> to До 37.120.137.255 String
deviceType Тип пользовательского устройства и агент
> desktop Тип пользовательского устройства (mobile или desktop) true Bool
> userAgent Пользовательский агент Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0 String
region Регион / штат / кантон ZH String
regionName Полное название региона / штата / кантона Switzerland String
reverse Доменные имена в обратной зоне DNS String
status Статус запроса (fail - отклонен или success - выполнен) success String
zip zip / индекс 8010 String
anonymity Дополнительный запрос (ключ anonymity=1). Проверка (true или false) на принадлежность IP-адреса сервисам анонимизации (proxy или vpn). true Bool
anonymityType Тип анонимизации VPN String
anonymityProvider Компания, которая, возможно, предоставляет сервис анонимизации AS9009 M247 Ltd String
countryInfo Массив данных по дополнительному запросу по ключу info=1
> fullCountryName Полное название страны Switzerland String
> localizedName Название страны на главном государственном языке Schweiz String
> topLevelDomain Интернет-домены страны .ch [0],[1],[2],[...],[10] String
> alpha2Code Двухбуквенный код страны ISO 3166-1 alpha-2 CH String
> alpha3Code Трехухбуквенный код страны ISO 3166-1 alpha-3 CHE String
> numericCode Цифровой код страны 756 String
> currencies Государственная валюта CHE [0],[1],[2],[...],[10] String
> callingCodes Телефонный код страны 41 String
> capital Столица страны Bern String
> flagPng_100px Ссылка на изображение государственного флага в формате PNG 100x100px. При отправке запроса без HTTPS ссылка на флаг будет подгружаться с домена http://cdn-nossl.ip-api.ru/ https://cdn-ssl.ip-api.ru/flags/png100/ch.png String
> flagPng_250px Ссылка на изображение государственного флага в формате PNG 250x250px. При отправке запроса без HTTPS ссылка на флаг будет подгружаться с домена http://cdn-nossl.ip-api.ru/ https://cdn-ssl.ip-api.ru/flags/png250/ch.png String
> flagPng_1000px Ссылка на изображение государственного флага в формате PNG 1000x1000px. При отправке запроса без HTTPS ссылка на флаг будет подгружаться с домена http://cdn-nossl.ip-api.ru/ https://cdn-ssl.ip-api.ru/flags/png1000/ch.png String
> flagSvg Ссылка на изображение государственного флага в формате SVG. При отправке запроса без HTTPS ссылка на флаг будет подгружаться с домена http://cdn-nossl.ip-api.ru/ https://cdn-ssl.ip-api.ru/flags/svg/ch.svg String
> altSpellings Альтернативные правописания названия страны Swiss Confederation [0],[1],[2],[...],[10] String
> region Континент Europe String
> subRegion Принадлежность к группе государств Western Europe String
> language Государственные языки German [0],[1],[2],[...],[10] String
> languages Языковые коды ISO 639-1 de [0],[1],[2],[...],[10] String
> translations Название страны на различных мировых языках Svizzera [0],[1],[2],[...],[10] String
> population Население страны (данные обновляются раз в год) 8256000 Int
> latlon Широта и долгота Zurich 47.3769,8.54169
> demonym Этнохороним (Wiki) Swiss String
> borders Граничащие государства AUT [0],[1],[2],[...],[10] String
> area Площадь страны в км2 41284 Int
> gini Коэффициент Джини (Wiki) 33.7 Float
> timeZones Временные зоны страны UTC+01:00 [0],[1],[2],[...],[10] String
Использование API

$.ajax({
  	url: 'https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1',
  	/*HTTP url: 'http://nossl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&anonymity=0 или 1&info=0 или 1', */    
  	dataType: 'json',
    success: function(data) {
        alert(data.query + '\n' + data.isp + '\n' + data.country + '\n' + data.city);
    }
});
const request = require('request-promise')
request('https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1')
/* HTTP request('http://nossl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&anonymity=0 или 1&info=0 или 1') */

  .then(response => console.log(JSON.parse(response)))
  .catch(err => console.log(err))
$data = json_decode(file_get_contents('https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1'));
/* HTTP $data = json_decode(file_get_contents('http://nossl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1')); */
var_dump($data);
requests.get('https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1')
/* HTTP requests.get('http://nossl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1') */
require 'json'
require 'open-uri'

JSON.parse(open('https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1').read)
/* HTTP JSON.parse(open('http://nossl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1').read) */
val result = URL("https://ssl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1").readText()
/* HTTP val result = URL("http://nossl.ip-api.ru/ip-api.json?apiKey=ваш-api-ключ&query=конкретный-IP-адрес&anonymity=0 или 1&info=0 или 1").readText() */

Боты IP API в Telegram @ipapi_bot и ВКонтакте, которые умеют показывать много информации об IP-адресе.
При создании этих ботов были использованы стандартные API-ключи и возможности IP-API.
Хотите показывать посетителю краткую информацию об IP-адресе?
Установите к себе на сайт бесплатный виджет.

MITM Detection API: проверяет клиента на использование MITM


Что такое MITM (Man In The Middle, "посредник", "человек посередине" или https interception)?

MITM атака — вид атаки в криптографии, когда злоумышленник тайно ретранслирует и при необходимости изменяет связь между двумя сторонами, которые считают, что они общаются друг с другом. Является методом компрометации канала связи, при котором взломщик, подключившись к каналу между контрагентами, осуществляет вмешательство в протокол передачи (подмена сертификатов), удаляя или искажая информацию Википедия.
Узнайте больше на специальной странице.

Версия API

HTTPS

Ключи и заголовки

Ограничения

Для использования MITM Detection API требуется отдельный лицензионный ключ, который покупается через форму обратной связи на необходимый Вам срок.
Пример и описание данных из ответа

Пример URL на отправку запроса на получение информации:
https://customerservice.ip-api.ru/~лицензионный-ключ/md-api.json
{
"client_ip":"172.103.129.177",
"client_tls_version":"tls1.2",
"isMiddleman":false
}

В данном ответе Вы получаете клиентский IP-адрес (client_ip), версию криптографического протокола TLS (client_tls_version) и результат проверки клиента на MITM (isMiddleman).

Все возможные данные из ответа MITM Detection API:

Название Описание Пример Тип
client_ip Клиентский IP-адрес 172.103.129.177 String
client_tls_version Версия криптографического протокола TLS tls1.2 String
isMiddleman Результат проверки клиента на атаку MITM false Bool
Вы можете посмотреть на работу MITM Detection API на демонстрационной странице.
Использование API

$.ajax({
  	url: 'https://customerservice.ip-api.ru/~лицензионный-ключ/md-api.json',
  	dataType: 'json',
    success: function(data) {
    	if(data.isMiddleman == true) {
        	$('#element-id').text('MITM атака');
        } else {
         	$('#element-id').text('Обычное соединение');       
        }
    }
});
let config = URLSessionConfiguration.default
config.httpAdditionalHeaders = ["User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Mobile/15E148 Safari/604.1"]

let session = URLSession(configuration: config)
        
let url = URL(string: "https://customerservice.ip-api.ru/~лицензионный-ключ/md-api.json")!
let task = session.dataTask(with: url) { data, response, error in
            
	guard let data = data else { return }
	guard let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) else { return }
	guard let jsonObj = json as? [String: Any] else { return }
                
	guard let isMiddleMan = jsonObj["isMiddleman"] as? Bool else { return }
                
	print("Middleman: \(isMiddleMan)")
    /* после получения значения создаем условный оператор if else */
    if isMiddleMan == true {
    	// закрываем доступ к приложению
    } else {
    	// открываем доступ к приложению
    }      
}

task.resume()

Distance API: расчет дистанции между точками a и b


Версия API

  • 4.0 (от 04 июля 2019 года).
HTTPS/HTTP

  • Поддержка HTTPS осуществляется через адрес https://ssl.ip-api.ru/;
  • Поддержка HTTP осуществляется через адрес http://nossl.ip-api.ru/.
Ключи

  • Обязательным ключем является apiKey - Ваш уникальный API-ключ для доступа к сервису;
  • Distance API поддерживает следующие ключи, с которыми необходимо делать запросы: a (откуда), b (куда);
  • Дополнительные ключи: litersPer100, pricePerLiter и project;
  • Ключи a и b могут содержать страну, город, улицу, шоссе, проспект, переулок, тупик, проезд, номер дома, строение, корпус, литер и владение. Кроме того, значениями ключей могут быть и названия аэропортов, торговых центров и других объектов массового притяжения людей.
  • Ключ litersPer100 должен иметь значение расхода топлива на 100 км;
  • Ключ pricePerLiter должен иметь значение стоимости топлива за 1 литр.
Используйте в запросе ключ project со значением названия проекта, чтобы статистика запросов отображала количество запросов по Вашему конкретному проекту (если название проекта будет содержать не только латинские буквы, не забудьте делать кодировку при запросе).
Пример и описание данных из ответа

Пример URL на отправку запроса на получение информации с учетом расхода топлива и ответ:
https://ssl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=Россия, Москва, шоссе Энтузиастов 36&b=Россия, Санкт-Петербург, Невский проспект 20&litersPer100=11&pricePerLiter=48.29
{
"status":"success",
"trackDistanceKilometers":"727",
"distanceTime":"10:34:00",
"trackDistanceMiles":"452",
"lineDistanceKilometers":"639",
"a":"Россия, Москва, шоссе Энтузиастов 36",
"b":"Россия, Санкт-Петербург, Невский проспект 20",
	"fuelInfo": {
		"litersPer100":"11",
		"pricePerLiter":"48.29",
		"trackDistanceLiters":"79.97",
		"trackDistanceFuelPrice":"3861.75"
	}
}

В данном ответе Вы получаете дистанцию от точки a и b в километрах (trackDistanceKilometers), милях (trackDistanceMiles), по прямой в километрах (lineDistanceKilometers), примерное время в пути (distanceTime) без учета пробок, расчет расхода топлива на 100 км (trackDistanceLiters) и его стоимость (trackDistanceFuelPrice) в рублях РФ.

Для удобства расчета дистанции на Вашем сайте у нас есть приложение-виджет distanceWidget. distanceWidget - это готовое решение, которое встраивается на Ваш сайт через html-тег iframe. Вся необходимая информация для установки располагается в Панели управления > Настройки > Приложения.

Все возможные данные из ответа Distance API:
Название Описание Пример Тип
status Статус запроса (fail - отклонен или success - выполнен) success String
trackDistanceKilometers Дистанция в километрах 727 String
distanceTime Время преодоления дистанции (без учета пробок) 10:34:00 String
trackDistanceMiles Дистанция в милях 452 String
lineDistanceKilometers Дистанция в километрах по прямой 639 String
a Откуда Россия, Москва, шоссе Энтузиастов 36 String
b Куда Россия, Санкт-Петербург, Невский проспект 20 String
fuelInfo Массив данных по при ключах litersPer100 и pricePerLiter
> litersPer100 Расход топлива на 100 км 11 String
> pricePerLiter Стоимость топлива за 1 литр 48.29 String
> trackDistanceLiters Расход топлива на всю дистанцию 79.9 String
> trackDistanceFuelPrice Полная стоимость топлива на всю дистанцию 3858.37 String
Использование API

$.ajax({
  	url: 'https://ssl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда',
  	/*HTTP url: 'http://nossl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда', */   
  	dataType: 'json',
    success: function(data) {
        alert(data.a + ' - ' + data.b + '\n' + data.trackDistanceKilometers + '\n' + data.trackDistanceMiles);
    }
});
const request = require('request-promise')
request('https://ssl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда')
/* HTTP request('http://nossl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда') */

  .then(response => console.log(JSON.parse(response)))
  .catch(err => console.log(err))
$data = json_decode(file_get_contents('https://ssl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда'));
/* HTTP $data = json_decode(file_get_contents('http://nossl.ip-api.ru/distance-api.json?apiKey=apiKey=ваш-api-ключ&a=откуда&b=куда')); */
var_dump($data);
requests.get('https://ssl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда')
/* HTTP requests.get('http://nossl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда') */
require 'json'
require 'open-uri'

JSON.parse(open('https://ssl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда').read)
/* HTTP JSON.parse(open('http://nossl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда').read) */
val result = URL("https://ssl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда").readText()
/* HTTP val result = URL("http://nossl.ip-api.ru/distance-api.json?apiKey=ваш-api-ключ&a=откуда&b=куда").readText() */

После регистрации Вам будет доступен демо API-ключ для тестирования сервиса.

Создать учетную запись
Top.Mail.Ru