PHP code example of jsonseo / php-sdk
1. Go to this page and download the library: Download jsonseo/php-sdk library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jsonseo / php-sdk example snippets
nt = new JsonSeo\Client('YOUR_KEY');
$serp = $client->yandex([
'text' => 'купить ноутбук',
'region' => 213,
]);
foreach ($serp['results'] as $position => $result) {
echo ($position + 1) . '. ' . $result['domain'] . ' — ' . $result['title'] . PHP_EOL;
}
$client->yandex('купить ноутбук');
$client->geoip('77.88.55.242');
$client->wordstatFrequency('ремонт айфона');
$serp = $client->yandex([
'text' => 'ремонт айфона',
'region' => 213, // Москва
'pages' => 10, // до 100 позиций
'break_domain' => 'example.com',
]);
foreach ($serp['results'] as $index => $result) {
if (stripos($result['domain'], 'example.com') !== false) {
echo 'Позиция: ' . ($index + 1) . PHP_EOL;
break;
}
}
echo 'Собрано страниц: ' . $serp['pages'] . PHP_EOL;
echo 'Нашлось всего: ' . $serp['found_human'] . PHP_EOL;
$serp = [
'pages' => 3,
'exhausted' => false,
'breakDomainHit' => true, // остановились на нужном домене
'query' => 'ремонт айфона',
'rawQuery' => 'ремонт айфона',
'found' => 28000000,
'found_human' => 'нашлось 28 млн результатов',
'lr' => 213,
'url' => 'https://yandex.ru/search/?text=...',
'results' => [
[
'url' => 'https://example.com/remont-iphone/',
'domain' => 'example.com',
'title' => 'Ремонт айфонов в Москве',
'passage' => 'Починим за 30 минут...',
'breadcrumbs' => 'example.com › услуги',
],
],
];
$regions = $client->googleRegions('Казань');
$kazan = $regions['regions'][0]['id'];
$serp = $client->google([
'q' => 'заказать пиццу',
'region' => $kazan,
'hl' => 'ru',
'device' => 'desktop',
'pages' => 2,
]);
$serp = $client->google(['q' => 'заказать пиццу', 'filter' => 0]);
$serp = $client->bing([
'q' => 'buy a laptop',
'mkt' => 'en-US',
'pages' => 2,
]);
echo $serp['mkt'] . ' / ' . $serp['lang'] . PHP_EOL; // фактический рынок и язык
$serp = $client->yandex([
'text' => 'пластиковые окна',
'region' => 213,
'ads' => true,
]);
foreach ($serp['ads'] as $ad) {
echo $ad['block'] . ' #' . $ad['position'] . ' — ' . $ad['domain'] . PHP_EOL;
echo ' ' . $ad['title'] . PHP_EOL;
}
$serp = $client->yandex([
'text' => 'чем отличается osb от фанеры',
'ai' => true,
]);
if (isset($serp['aiAnswer'])) {
echo $serp['aiAnswer']['markdown'] . PHP_EOL;
foreach ($serp['aiAnswer']['sources'] as $source) {
echo '[' . $source['id'] . '] ' . $source['domain'] . PHP_EOL;
}
}
$images = $client->yandexImages([
'q' => 'скандинавский интерьер',
'orientation' => 'horizontal',
'size' => 'large',
'format' => 'jpg',
'pages' => 2,
]);
foreach ($images['results'] as $image) {
echo $image['width'] . '×' . $image['height'] . ' ' . $image['url'] . PHP_EOL;
echo ' источник: ' . $image['sourceUrl'] . PHP_EOL;
}
$videos = $client->googleVideo([
'q' => 'как заменить ремень грм',
'duration' => 'long',
'hl' => 'ru',
]);
foreach ($videos['results'] as $video) {
echo $video['title'] . ' — ' . $video['durationText'] . PHP_EOL;
echo ' ' . $video['url'] . ' (' . $video['provider'] . ')' . PHP_EOL;
}
$suggest = $client->yandexSuggest(['text' => 'купить кв', 'region' => 213]);
print_r($suggest['results']);
// ['купить квартиру в москве', 'купить квартиру в новостройке', ...]
$regions = $client->yandexRegions('Казань');
foreach ($regions['regions'] as $region) {
echo $region['id'] . ' — ' . $region['name'] . ' (' . $region['subname'] . ')' . PHP_EOL;
}
// 43 — Казань (Республика Татарстан)
$frequency = $client->wordstatFrequency([
'text' => 'ремонт айфона',
'kind' => 'exact', // точная частотность: "!ремонт !айфона"
'region' => 213,
]);
echo $frequency['results']['totalValue'] . PHP_EOL; // 27356
$wordstat = $client->wordstat(['text' => 'ремонт айфона', 'region' => [213, 2]]);
foreach ($wordstat['results']['popular'] as $phrase) {
echo $phrase['value'] . "\t" . $phrase['text'] . PHP_EOL;
}
foreach ($wordstat['results']['associations'] as $phrase) {
echo $phrase['value'] . "\t" . $phrase['text'] . PHP_EOL;
}
$graph = $client->wordstatGraph([
'text' => 'купить ёлку',
'graph_type' => 'month',
]);
foreach ($graph['results']['graph'] as $point) {
echo $point['text'] . "\t" . $point['absolute'] . PHP_EOL;
}
// июнь 2026 9042
// июль 2026 11780
$map = $client->wordstatMap(['text' => 'купить ноутбук', 'map_type' => 'regions']);
foreach ($map['results']['rows'] as $row) {
echo $row['text'] . "\t" . $row['absolute'] . "\tиндекс " . $row['popularity'] . PHP_EOL;
}
$forecast = $client->direct([
'phrases' => ['ремонт айфона', 'замена экрана iphone', '"ремонт айфона"'],
'region' => 213,
'period' => 'month',
]);
foreach ($forecast['results'] as $row) {
echo $row['phrase'] . ': ' . $row['shows'] . ' показов' . PHP_EOL;
foreach ($row['positions'] as $place => $bid) {
echo ' ' . $place . ': ставка ' . $bid['bid'] . ' ₽, бюджет ' . $bid['budget'] . ' ₽'
. ', кликов ' . $bid['clicks'] . PHP_EOL;
}
}
$location = $client->geoip('77.88.55.242');
echo $location['country']['name'] . ', ' . $location['region']['name'] . PHP_EOL;
echo $location['latitude'] . ', ' . $location['longitude'] . PHP_EOL;
$serp = $client->yandex([
'text' => 'доставка пиццы',
'region' => $location['region']['id'],
]);
$balance = $client->balance();
echo $balance['balance'] . ' ' . $balance['currency'] . PHP_EOL; // 123.45 RUB
$client->call('новый/метод', ['параметр' => 'значение']); // разберёт JSON
$client->callRaw('новый/метод', ['параметр' => 'значение']); // вернёт тело как есть
$client->direct(['ремонт айфона', 'ремонт телефона', 'замена экрана']);
$client->wordstat(['text' => 'ремонт', 'region' => [213, 2], 'device' => ['desktop', 'phone']]);
$client->yandex(['text' => 'купить ноутбук', 'ai' => true, 'ads' => true]);
use JsonSeo\Exception\PaymentRequiredException;
use JsonSeo\Exception\RateLimitException;
use JsonSeo\Exception\ValidationException;
try {
$serp = $client->yandex(['text' => 'купить ноутбук', 'pages' => 50]);
} catch (ValidationException $e) {
foreach ($e->errors() as $field => $messages) {
echo $field . ': ' . implode(', ', $messages) . PHP_EOL;
}
} catch (PaymentRequiredException $e) {
echo 'Баланс кончился: ' . $client->balance()['balance'] . PHP_EOL;
} catch (RateLimitException $e) {
echo 'Вернуться через ' . $e->retryAfter() . ' с' . PHP_EOL;
}
$client = new JsonSeo\Client('YOUR_KEY', [
'attempts' => 5, // всего попыток, вместе с первой
'retry_delay' => 2.0, // стартовая пауза
'max_retry_delay' => 60.0, // потолок паузы
]);
$client = new JsonSeo\Client('YOUR_KEY', [
'base_url' => 'https://jsonseo.ru/api', // адрес API
'timeout' => 300.0, // сколько ждать ответа на попытку, секунд
'connect_timeout' => 10.0, // сколько ждать соединения, секунд
'attempts' => 3, // всего попыток, вместе с первой
'retry_delay' => 1.0, // стартовая пауза между попытками
'max_retry_delay' => 30.0, // потолок паузы
'auth' => JsonSeo\Client::AUTH_HEADER, // или AUTH_QUERY — ключ в параметре key
'user_agent' => 'мой-проект/1.0',
'transport' => $transport, // свой JsonSeo\Transport\TransportInterface
]);
use JsonSeo\Transport\Response;
use JsonSeo\Transport\TransportInterface;
class GuzzleTransport implements TransportInterface
{
public function send($method, $url, array $headers, $body, array $options)
{
$response = $this->guzzle->request($method, $url, [
'headers' => $headers,
'body' => $body,
'timeout' => $options['timeout'],
'connect_timeout' => $options['connect_timeout'],
'http_errors' => false,
]);
$headers = [];
foreach ($response->getHeaders() as $name => $values) {
$headers[strtolower($name)] = implode(', ', $values);
}
return new Response($response->getStatusCode(), $headers, (string) $response->getBody());
}
}
bash
composer