REST API

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

Кожному користувачеві без реєстрації надається 10 000 запитів на місяць (ідентифікація по IP і REFERER). При реєстрації на сайті видається унікальний ключ для обліку запитів, а також на рахунок додаються бонусні запити (30000 на місяць). Невикористані бонусні запити не переносяться на наступний місяць. У той же час оплачені запити не мають обмежень за часом. Для користувачів, які купили запити, спочатку витрачаються безкоштовні бонусні запити, а після того, як вони закінчаться, почнуть витрачатися платні. Таким чином, якщо у Вас витрати 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)
  • ua.sxgeo.city - Росія, Москва (Ihor)
  • ua2.sxgeo.city - Росія, Санкт-Петербург (Vscale)
  • ua3.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, з 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>