Download the PHP package jsonseo/php-sdk without Composer

On this page you can find all versions of the php package jsonseo/php-sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package php-sdk

JSON SEO PHP SDK

Официальный PHP-клиент JSON SEO API: выдача Яндекса, Google и Bing, картинки и видео, поисковые подсказки, Яндекс Вордстат, прогноз показов Директа и геолокация по IP.

Установка

Ключ берётся в личном кабинете.

Быстрый старт

Если у метода один обязательный параметр, его можно передать просто строкой:


Примеры запросов

Позиции сайта в Яндексе

break_domain останавливает сбор на нужном домене — платить за страницы ниже найденной позиции незачем.

В ответе:

Выдача Google по нужному городу

Регион задаётся числовым ID из справочника — сервис сам соберёт uule и подставит gl.

Если Google схлопнул часть результатов как «очень похожие», причина придёт в filter_description, а вернуть их можно параметром filter:

Выдача Bing

Реклама на странице выдачи

Приходит отдельным массивом, органика не меняется. Стоит +0.01 ₽ за страницу, на которой реклама нашлась.

block — где стоял блок: top до органики, bottom после неё, inline между результатами. Пустой массив ads значит «рекламу просили, но её не было», а отсутствие поля — «не просили».

Ответ нейросети над выдачей

Стоит +0.01 ₽ и только когда ответ есть: если поисковик его не показал, запрос обойдётся в обычную цену. Доступен только с первой страницы.

Картинки

Те же параметры работают у googleImages() и bingImages() — SDK переводит общий фильтр в родной параметр движка. Если у поисковика такого значения нет, придёт ошибка 422 с указанием, чем заменить.

Видео

Поле duration приходит в секундах, но не всегда: у прямых эфиров вместо длины стоит LIVE. Отбор вида duration < 600 молча выбросит такие ролики — ориентируйтесь на durationText, он на месте всегда.

Поисковые подсказки

Есть у всех трёх поисковиков: yandexSuggest(), googleSuggest(), bingSuggest().

Справочник регионов

Бесплатно, но ключ нужен: по нему считается лимит запросов в минуту. У googleRegions() в ответе дополнительно приходит готовая строка uule.

Вордстат: частота запроса

Вид частотности задаётся параметром kind, кавычки и операторы расставит сервис — фразу передавайте как есть:

kind Что считает
base Базовая: фраза как есть
phrase Фразовая: "фраза"
exact Точная: "!слово !слово" — для прогноза трафика берут её
superexact Сверхточная: "[!слово !слово]"

Вордстат: расширение семантики

popular — что ищут вместе с фразой, associations — соседняя семантика.

Вордстат: сезонность

month и week отдают историю с 2018 года, day — последние 60 дней.

Вордстат: география спроса

popularity — affinity-индекс: 100 означает средний по стране интерес, выше — повышенный. В каждой строке приходит region_id, его можно сразу подставить в region других методов.

Прогноз показов Яндекс Директа

Рекламный кабинет не нужен. Список фраз передаётся массивом — SDK склеит его сам.

Вид частотности задаётся операторами прямо во фразе: ремонт айфона — базовая, "ремонт айфона" — фразовая, "!ремонт !айфона" — точная.

Стоимость — 0.01 ₽ за пачку до 4000 символов, это около 150 обычных фраз. За один запрос принимается до 1000 фраз, на аккаунт — не больше 100 запросов в час.

Геолокация по IP

ID региона тот же, что у Яндекса, — его можно сразу подставить в region методов выдачи и Вордстата:

Баланс


Справочник методов

Метод Путь API Что делает
yandex($params) /yandex Органическая выдача Яндекса
yandexSuggest($params) /yandex/suggest Поисковые подсказки
yandexRegions($params) /yandex/regions Справочник регионов, бесплатно
yandexImages($params) /yandex/images Поиск по картинкам
yandexVideo($params) /yandex/video Поиск по видео
google($params) /google Органическая выдача Google
googleSuggest($params) /google/suggest Подсказки
googleRegions($params) /google/regions Регионы и готовый uule, бесплатно
googleImages($params) /google/images Поиск по картинкам
googleVideo($params) /google/video Поиск по видео
bing($params) /bing Органическая выдача Bing
bingSuggest($params) /bing/suggest Подсказки
bingImages($params) /bing/images Поиск по картинкам
bingVideo($params) /bing/video Поиск по видео
wordstat($params) /wordstat Популярные и похожие запросы
wordstatFrequency($params) /wordstat/frequency Частота запроса одним числом
wordstatGraph($params) /wordstat/graph Динамика по месяцам, неделям, дням
wordstatMap($params) /wordstat/map География показов
direct($params) /direct Прогноз показов Яндекс Директа
geoip($params) /geoip Геолокация по IPv4, бесплатно
balance() /balance Остаток на счёте, бесплатно

Полный список параметров каждого метода — в документации и в PHPDoc самих методов: IDE подскажет имена прямо на месте вызова.

Появился метод, которого ещё нет в SDK? Его можно вызвать напрямую:

Как SDK помогает с параметрами

Списки передаются массивами. Фразы для Директа склеиваются переводом строки, остальные списки — запятой:

Флаги принимаются флагами. true и false уезжают как 1 и 0:

null и пустой массив не отправляются. Необязательный параметр, который вы ещё не посчитали, можно не вычищать из массива руками.

Ошибки

Всё, что бросает SDK, наследуется от JsonSeo\Exception\JsonSeoException.

Исключение Статус Когда
ValidationException 422 Параметры не приняты. errors() вернёт сообщения по полям
UnauthorizedException 403, 401 Ключ не передан или недействителен
PaymentRequiredException 402 На счёте не хватает средств
RateLimitException 429 Превышен лимит частоты
ServiceUnavailableException 503 Выдачу получить не вышло. Деньги не списаны
ApiException прочие Любой другой отказ сервиса

У всех отказов сервиса есть status(), body(), разобранный payload() и retryAfter() — срок, который назвал сервис, если он его назвал.

Исключение Когда
TransportException До сервиса не достучались: сеть, DNS, TLS
TimeoutException Ответа не дождались за отведённое время
IncompleteResponseException Соединение оборвалось посреди тела
InvalidArgumentException SDK забраковал аргументы, запрос не отправлялся

Повторы

У каждого запроса три попытки по умолчанию: одна основная и две повторных. Если сервис затупил и выдачу собрать не вышло (503), SDK сам сходит ещё дважды, и обычно этого хватает.

429, 5xx и обрывы связи повторяются автоматически — это ровно те отказы, за которые сервис денег не берёт. Отказы по ключу, балансу и параметрам не повторяются: сами они не изменятся.

Таймаут и оборвавшееся посреди тела соединение не повторяются, и это намеренно: работу на стороне сервиса обрыв у клиента не отменяет — выдача будет собрана и оплачена, а повтор стоил бы ещё раз. Если ответ не успевает прийти, поднимайте timeout, а не attempts.

Пауза между попытками удваивается и разбавляется случайной добавкой. Если сервис прислал Retry-After, SDK не вернётся раньше названного срока. Когда сервис просит ждать дольше max_retry_delay, SDK не ждёт вовсе, а отдаёт исключение с retryAfter() — решение остаётся за вами.

'attempts' => 1 отключает повторы совсем.

Настройки клиента

Таймаут по умолчанию намеренно большой: многостраничный запрос выдачи собирается минутами, и обрыв на стороне клиента не отменяет запрос на стороне сервиса — деньги за него уже списаны. Считается он на каждую попытку отдельно, а не на весь вызов.

Ключ по умолчанию едет в заголовке Authorization: Bearer, а не в адресе: так он не оседает в логах прокси и серверов. AUTH_QUERY нужен там, где заголовки до API не доходят.

Свой транспорт

Если HTTP в проекте уже ходит через Guzzle, Symfony HttpClient или что-то своё, SDK можно отдать этот клиент — достаточно объекта с одним методом:

Тот же приём годится для тестов: подмените транспорт заглушкой, и запросы никуда не пойдут.

Разработка

Тесты идут без внешней сети: часть подменяет транспорт заглушкой, часть поднимает свой сервер на loopback.

Лицензия

MIT.


All versions of php-sdk with dependencies

PHP Build Version
Package Version
Requires php Version >=7.1
ext-json Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package jsonseo/php-sdk contains the following files

Loading the files please wait ...