REST API

REST API позволяет с помощью простого запроса по HTTP или HTTPS получить наиболее актуальную и расширенную информацию об IP, используя самую свежую базу данных Sypex Geo Max.

Каждому пользователю без регистрации предоставляется 10 000 запросов в месяц (идентификация по IP и REFERER). При регистрации на сайте выдается уникальный ключ для учета запросов, а также на счет добавляются бонусные запросы (30 000 в месяц). Неиспользованные бонусные запросы не переносятся на следующий месяц. В то же время, оплаченные запросы не имеют ограничений по времени. Для пользователей которые купили запросы, сначала расходуются бесплатные бонусные запросы, а после того как они закончатся - начнут расходоваться платные. Таким образом, если у Вас расход 40 000 запросов в месяц, то порции из 100 тысяч платных запросов Вам хватит на 10 месяцев.

REST API позволяет получить данные в JSON, JSONP, XML и MessagePack форматах. Все данные в кодировке UTF-8. За один запрос можно получить информацию до 100 IP. Следует иметь ввиду, что в пакетном режиме (когда запрашивается больше одного IP за раз), будут списываться запросы за каждый IP-адрес в пакете.

Описание

Отправьте GET запрос на

api.sypexgeo.net/{format}/[{ip}][?callback={callback}]

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

ru.sxgeo.city/{format}/[{ip}][?callback={callback}]

API поддерживает запросы на HTTP и на HTTPS.

Поддерживаемые форматы xml, json, jsonp и msg.

В ip можно указывать, как один IPv4, так и несколько IPv4 разделенных запятой, точкой с запятой, пробелом или переводом строки.

Если не указан ни один IP то выводится информация о вашем IP, с которого делается запрос к API.

callback - JSON ответ заворачивается в callback-функцию. Если callback функция не указана, то автоматически добавляется функция console.dir.

Также можно использовать POST запросы, в таком случае нужные IP должны быть указаны в параметре ip.

Для зарегистрированных пользователей указывается ключ (key):

api.sypexgeo.net/{key}/{format}/[{ip}][?callback={callback}]

Внимание! Обязательно учитывайте, что на сайт "ходят" не только обычные посетители, но и поисковые боты, которые могут создавать много запросов к сайту и соответственно к API.

Поэтому обязательно фильтруйте запросы от поисковых ботов. Это можно сделать простейшим регулярным выражением, вида:

<?php
// Фильтруем ботов, чтобы не было лишних запросов к API
$is_bot = empty($_SERVER['HTTP_USER_AGENT']) || preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl|request|Guzzle|Java)~i",
$_SERVER['HTTP_USER_AGENT']
);
$geo = !$is_bot ? json_decode(
file_get_contents('http://api.sypexgeo.net/json/' . $_SERVER['REMOTE_ADDR']),
true) : [];
// Все данные о IP
print_r($geo);

// Выбираем нужные данные
if ($is_bot) {
echo 'Привет Google Bot, и другие боты';
}
elseif ($geo->country->iso == 'UA'){
switch($geo->city->name_en) {
case 'Kyiv': echo 'Ваш город - Киев'; break;
case 'Lviv': echo 'Ваш город - Львов'; break;
default: echo 'Другой город Украины';
}
}
else {
echo 'Вы не из Украины';
}

Также следует кэшировать результаты запросов для пользователей, чтобы при посещении пользователем 100 страниц сайта, не делать 100 запросов к API.

Региональные сервера Sypex Geo API

В 2016 году были запущены дополнительные сервера Sypex Geo API. Сервера расположены в разных странах и городах. Благодаря чему можно значительно уменьшить пинг (ping) до сервера, а соответственно и время доступа к API.

В данный момент доступны 14 серверов:

Восточная Европа и Азия:

  • ua.sxgeo.city - Украина, Хмельницкий (GMhost)
  • ru.sxgeo.city - Россия, Москва (Ihor)
  • ru2.sxgeo.city - Россия, Санкт-Петербург (Vscale)
  • ru3.sxgeo.city - Россия, Екатеринбург (NetAngels)

Западная Европа:

  • de.sxgeo.city - Германия, Фалькенштайн (Hetzner)
  • nl.sxgeo.city - Нидерланды, Амстердам (Vultr)
  • fr.sxgeo.city - Франция, Гравлин (OVH)
  • it.sxgeo.city - Италия, Ареццо (ArubaCloud)
  • uk.sxgeo.city - Англия, Лондон (ArubaCloud)

Северная Америка:

  • us.sxgeo.city - США, Нью-Йорк (DigitalOcean)
  • us2.sxgeo.city - США, Маями (VPSServer)
  • us3.sxgeo.city - США, Сан-Хосе (Upcloud)

Азия:

  • jp.sxgeo.city - Япония, Токио (Amazon)
  • sg.sxgeo.city - Сингапур (Amazon)

Примеры использования

GET http://api.sypexgeo.net/

Выводит информацию о вашем IP в JSON.

GET http://api.sypexgeo.net/json/123.45.67.89

Выводит информацию в JSON об IP 123.45.67.89.

GET http://api.sypexgeo.net/json/123.45.67.89,12.34.56.78

Выводит информацию в JSON об IP 123.45.67.89 и 12.34.56.78.

GET http://api.sypexgeo.net/xml/123.45.67.89

Выводит информацию в XML об IP 123.45.67.89.

GET http://api.sypexgeo.net/jsonp/123.45.67.89?callback=alert

Выводит информацию в JSONP об IP 123.45.67.89, c callback-функцией alert.

Примеры результатов

Результат обращения к API в JSON

GET http://api.sypexgeo.net/json/123.45.67.89
{"ip":"123.45.67.89",
"city":{"id":1835848,"lat":37.566,"lon":126.9784,
 "name_ru":"Сеул","name_en":"Seoul","okato":""},
"region":{"id":1835847,"lat":37.58,"lon":127,"name_ru":"Сеул",
 "name_en":"Seoul","iso":"KR-11","timezone":"Asia/Seoul","okato":""
},
"country":{"id":119,"iso":"KR","continent":"AS","lat":36.5,"lon":127.75,
 "name_ru":"Южная Корея","name_en":"South Korea","timezone":"Asia/Seoul"
}}

Результат обращения к API в XML

GET http://api.sypexgeo.net/xml/123.45.67.89
<?xml version="1.0" encoding="UTF-8"?>
<sxgeo>
<ip num="123.45.67.89">
<city>
<id>1835848</id>
<lat>37.566</lat>
<lon>126.9784</lon>
<name_ru>Сеул</name_ru>
<name_en>Seoul</name_en>
<okato></okato>
</city>
<region>
<id>1835847</id>
<lat>37.58</lat>
<lon>127</lon>
<name_ru>Сеул</name_ru>
<name_en>Seoul</name_en>
<iso>KR-11</iso>
<timezone>Asia/Seoul</timezone>
<okato></okato>
</region>
<country>
<id>119</id>
<iso>KR</iso>
<continent>AS</continent>
<lat>36.5</lat>
<lon>127.75</lon>
<name_ru>Южная Корея</name_ru>
<name_en>South Korea</name_en>
<timezone>Asia/Seoul</timezone>
</country>
</ip>
</sxgeo>