Все запросы к API должны отправляться на урл вида:
https://serphunt.ru/версия/действие/объект[/данные]
Все данные нужно отправлять в кодировке UTF-8 с помощью метода POST, тип остылаемых данных - JSON.
Обязательные заголовки запроса:
Content-type: application/json; charset=UTF-8 Authorization: Bearer %apikey%
Заголовок Authorization требуется для авторизации пользователя в api. Ключ %apikey% можно взять в кабинете пользователя.
Ответ приходит в кодировке UTF-8 в формате JSON.
Возможные поля ответа:
| error | отдается в случае ошибки ( см. раздел обработка ошибок ) |
| message | cервисные сообщения |
| result | результат выполнения задания / проверки |
| task_id | идентификатор задания, возвращается в при добавлении проверки |
| balance yandex_xml |
информация о балансе пользователя и xml лимитах |
Более подробную информацию смотрите в описании объектов: проверки, биллинг
В одном запросе на получение данных можно запросить не более 5 000 результатов ( ключевых слов для проверки позиций или частотности, страниц для проверки индексации ). При превышении лимита, количество заправшиваемых данных обрезается.
С одного IP не более 5 одновременных запросов, иначе будет возвращена ошибка TOO_MANY_REQUESTS и код ответа сервера 429
В случае ошибки api возвращает ответ в формате:
{
"error" : {
"error_code" : "AUTHORISATION_ERROR",
"error_code" : "Ошибочный APIKEY",
}
}
| Код ошибки | Описание ошибки | Возможные причины |
|---|---|---|
| INVALID_URL | Ошибка запрашиваемого урл API | Неверно указан URL запросов к API |
| AUTHORISATION_ERROR | Ошибка авторизации | В запросе отсутствует заголовок Authorization
Неверно задан ключ доступа к API |
| TOO_MANY_REQUESTS | Слишком большое количество запросов | Количество соединений в секунду для данного IP превышает величину заданную в лимитах |
| REQUEST_ERROR | Ошибка отсылаемых к API данных | Пропущен или неверно задан один из параметров запроса к API |
| DATA_NOT_FOUND | Запрашиваемые данные не найдены | Данные были удалены |
| BILLING_ERROR | Ошибка биллинга | Недостаточно средств на баллансе
Данный вид проверки не разрешен Для данного тарифа работа с API не разрешена |
https://serphunt.ru/api/v1/add/check
| service |
Название сервиса: positions ( передается как строка ) "service": "positions" |
||||
| page |
Список страниц, которые надо проверить Может передаваться либо как массив ( один элемент и более ) "page": [ "https://serphunt.ru/positions/", "https://serphunt.ru/indexing/", "https://serphunt.ru/frequency/" ] либо как строка (ключевые слова соединяются символом переноса строки "\n" "page": "https://serphunt.ru/positions/ https://serphunt.ru/indexing/ https://serphunt.ru/frequency/" |
||||
| subdomains |
Проверять или нет субдомены ( передается как число 0 или 1 ) "subdomains": 0 |
||||
| keywords |
Ключевые слова. Могут передаваться либо как массив ( один элемент и более ) "keywords": [ "ключевое слово 1", "ключевое слово 2", "ключевое слово 3" ] либо как строка (ключевые слова соединяются символом переноса строки "\n") "keywords": "ключевое слово 1 ключевое слово 2 ключевое слово 3" |
||||
| search_engine |
Данные передаются массивом ( один элемент и более ) "search_engine": [ "yandex", "google" ] |
||||
| google_search_depth |
Возможные значения: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 "google_search_depth": 40 |
||||
| region |
Список кодов регионов ( при одновременном снятии позиций в яндекс и google )
Передаются массивом ( один элемент и более ) "region": [ 216, 225 ] |
||||
| device |
Передаются массивом ( один элемент и более ) "device": [ "mobile", "desktop" ] |
||||
| language |
Язык пользователей ( передается как строка ). Список кодов языков. "language": "ru" |
Пример запроса
{
"service": "positions",
"page": [ "https://serphunt.ru/positions/", "https://serphunt.ru/indexing/", "https://serphunt.ru/frequency/" ],
"subdomains": false,
"keywords": [ "ключевое слово 1", "ключевое слово 2", "ключевое слово 3" ],
"search_engine": [ "yandex", "google" ],
"region": [ 216, 225 ],
"device": [ "mobile", "desktop" ],
"language": "ru"
}
| task_id | идентификатор задания, который необходимо использовать при получении результатов проверки |
{ "task_id" : "922f9e59ff84ea387c0748301a7cf3e5" }
Историю проверок можно посмотреть в кабинете пользователя.
Данные храняться в течении одного года.
https://serphunt.ru/api/v1/get/check/result
| task_id | идентификатор задания |
{ "task_id" : "922f9e59ff84ea387c0748301a7cf3e5" }
Если задание еще не выполнено, ответ будет следующим:
{
"message" : {
"code" : "TASK_IN_PROGRESS",
"description" : "Задание в обработке"
}
}
Примеры ответов, в случае успешного выполнения задания для проверки.
{
"result" : {
"225_mobile_ru" : {
"анализ позиций сайта" : {
"google" : {
"https://serphunt.ru/positions/" : {
"position" : 3,
"relevance_url" : "https://serphunt.ru/positions/"
}
},
"yandex" : {
"https://serphunt.ru/positions/" : {
"position" : 1,
"relevance_url" : "https://serphunt.ru/positions/"
}
}
},
"проверка позиций в поисковых системах" : {
"google" : {
"https://serphunt.ru/positions/" : {
"position" : 2,
"relevance_url" : "https://serphunt.ru/positions/"
}
},
"yandex" : {
"https://serphunt.ru/positions/" : {
"position" : 6,
"relevance_url" : "https://serphunt.ru/positions/"
}
}
}
},
"225_desktop_ru" : {
"анализ позиций сайта" : {
"google" : {
"https://serphunt.ru/positions/" : {
"position" : 2,
"relevance_url" : "https://serphunt.ru/positions/"
}
},
"yandex" : {
"https://serphunt.ru/positions/" : {
"position" : 4,
"relevance_url" : "https://serphunt.ru/positions/"
}
}
},
"проверка позиций в поисковых системах" : {
"google" : {
"https://serphunt.ru/positions/" : {
"position" : 3,
"relevance_url" : "https://serphunt.ru/positions/"
}
},
"yandex" : {
"https://serphunt.ru/positions/" : {
"position" : 1,
"relevance_url" : "https://serphunt.ru/positions/"
}
}
}
}
}
}
https://serphunt.ru/api/v1/get/billing/balance
{
"balance" : 568
"yandex_xml" : 454
}