Парсинг AI-выдачи: ответ Алисы, AI Overview и Copilot через API
· парсинг · AI
Над обычными десятью ссылками поисковики всё чаще показывают блок нейросети: она читает найденные страницы и пишет по ним связный ответ со ссылками на источники. У Яндекса это «Быстрый ответ Алисы AI», у Google — AI Overview, у Bing — ответ Copilot. Для SEO это новая сущность в выдаче: у неё свой набор процитированных доменов, и он не совпадает с топ-10 под ним.
Собрать её вместе с органикой можно одним параметром — ai=1. Он работает во всех трёх
поисковых методах: /api/yandex, /api/google и
/api/bing.
Зачем вообще парсить AI-ответ
Пока трекеры считают позиции, часть внимания читателя уходит выше — в текст, который отвечает на вопрос сразу. Кликать по ссылкам после такого ответа станут реже, зато ссылки внутри него сами стали местом в выдаче. Отсюда три задачи, которых год назад не было:
- Проверить, цитируют ли вас. Сайт может стоять третьим в органике и не попасть в ответ вовсе — и наоборот, страница с восьмого места оказывается единственным источником абзаца.
- Посмотреть, кого цитируют вместо вас. Список источников — это готовый ответ на вопрос, какие страницы поисковик считает достаточно содержательными по теме.
- Прочитать сам ответ. Он показывает, какие подтемы модель считает обязательными: если в ответе про выбор ноутбука три абзаца про экран, а на вашей странице про экран полторы строки, это заметный пробел в содержании.
Есть и четвёртый сценарий, не про SEO: AI-ответ — это уже готовая выжимка по запросу, и её удобно забирать в свои пайплайны вместо того, чтобы гонять топ-10 через собственную модель.
Один параметр на три поисковика
Формат ответа общий, поэтому код, который читает aiAnswer, писать под каждый поисковик
отдельно не нужно:
https://jsonseo.ru/api/yandex?key=ВАШ_КЛЮЧ&text=чем+ipv6+отличается+от+ipv4&lr=213&ai=1
https://jsonseo.ru/api/google?key=ВАШ_КЛЮЧ&q=чем+ipv6+отличается+от+ipv4&ai=1
https://jsonseo.ru/api/bing?key=ВАШ_КЛЮЧ&q=чем+ipv6+отличается+от+ipv4&ai=1
Рядом с results появляется aiAnswer:
"aiAnswer": {
"markdown": "IPv6 отличается от IPv4 длиной адреса: 128 бит против 32. [`1`](https://example.ru/ipv6)",
"sources": [
{
"id": 1,
"url": "https://example.ru/ipv6",
"domain": "example.ru",
"title": "Чем IPv6 отличается от IPv4",
"description": "Разбираем адресацию, заголовок пакета и NAT",
"citations": 1
}
],
"followUps": ["Почему IPv6 внедряется так медленно?"]
}
Текст приходит в markdown, а сноски в нём — обычные ссылки, подпись каждой равна id
источника. Так что «процитирован ли домен» считается по sources одной строкой, без
разбора текста: у процитированного источника citations больше нуля, у показанного, но
не упомянутого — ноль.
Ответ приходит целиком или не приходит вовсе. Про обрыв генерации на полуслове думать не нужно: мы дожидаемся конца, а если не дождались — отвечаем ошибкой, и об этом ниже.
Блок живёт над выдачей и только на первой странице, поэтому ai=1 вместе со смещением —
page или родным p, start, first — возвращает
ошибку, а не пустой ответ.
Чем поисковики всё-таки различаются
Форма одна, но наполняют её по-разному — это свойство самих выдач, а не парсера:
| Поле | Яндекс | Bing | |
|---|---|---|---|
| Сноски внутри текста | есть | нет | есть |
citations |
есть | нет | есть |
description источника |
есть | нет | нет |
followUps |
есть | нет | всегда пусто |
Главное расхождение — верхняя строка. У Яндекса и Bing каждое утверждение подписано источником прямо в тексте, и по ним видно, на чём именно основан абзац. Google на этом формате источники вешает общим списком под обзором, без привязки к предложениям, — поэтому у него нет ни сносок, ни счётчика цитирований. Для мониторинга «процитирован ли домен» это неважно, а вот «на каком именно утверждении» по Google не ответить.
Заголовки источников Google к тому же обрезает многоточием прямо в выдаче — полного там нет ни у кого, и достать его неоткуда.
Почему свой парсер здесь ломается чаще обычного
Общие беды парсинга (капча, выгорающие подсети, реклама вперемешку с органикой) разобраны в статье про парсер выдачи Яндекса. У AI-блока к ним добавляются свои, и у каждого поисковика они свои.
Яндекс: текста в разметке нет. В отданной странице на месте ответа обычно заглушка: генерация запускается, только когда читатель раскроет блок, и тогда страница сама начинает опрашивать отдельную ручку, пока текст не допишется. Парсер, который просто скачал HTML и поискал в нём абзацы, найдёт пустоту и решит, что ответа нет. Дождаться генерации — это около пяти секунд и девять обращений к ручке против 0.8 секунды на саму выдачу.
Яндекс: текст приходит частями. Отдельная ловушка: ручка отвечает и на середине генерации, и ответ на этот момент выглядит совершенно нормальным — просто обрывается на полуслове. Понять, что он неполный, можно только по отдельному флагу в её ответе. Парсер, который забирает первый непустой текст, будет молча собирать огрызки.
Bing: карточку показывают не всякому. Штатному клиенту парсера Copilot почти никогда не отвечает — блок приходит свежему мобильному браузеру. Поменять клиента у самой выдачи нельзя, на нём держится пагинация, поэтому ответ приходится забирать отдельным запросом с другим профилем, но с того же IP: два разных адреса на один запрос выглядят для Bing как два разных пользователя.
Google: раскладка. Обзор едет в той же странице, что и выдача, — но только если попросить её в нужном виде. В облегчённой мобильной раскладке, которую обычно и просят парсеры, блока нет вовсе.
Все трое: селекторы по классам живут до ближайшего эксперимента. Оформление карточки сидит на A/B-флагах, а часть классов носит хеш сборки. Парсер на CSS-селекторах после раскатки очередного эксперимента не падает — он тихо начинает возвращать половину ответа.
Яндекс: сноски нумерованы не так, как кажется. Готовая строка ответа ссылается на источники внутренними номерами документов, и они не совпадают с номерами самих источников. На одной живой странице по запросу про IPv6 в тексте стояли сноски 1, 2, 5, 6, 7, 8, 9, 16, а процитированы были источники 1, 2, 3, 6, 8, 9, 13, 16 — без какого-либо постоянного сдвига. Если взять эту строку как есть, каждая вторая ссылка на источник будет вести не туда.
Сколько стоит
Одинаково у всех трёх: AI-ответ считается как ещё одна страница выдачи, 0.01 ₽ сверх обычной цены запроса. Важнее другое правило — если блока в выдаче нет, надбавка не списывается. Просить его вслепую безопасно: ответ есть далеко не по каждому запросу, а навигационные, погода и курсы валют не получают его вовсе, и такие запросы обходятся в обычные 0.01 ₽ за страницу.
| Запрос | Есть ли AI-ответ | Цена |
|---|---|---|
pages=1, без ai |
не запрашивали | 0.01 ₽ |
pages=1&ai=1 |
нет | 0.01 ₽ |
pages=1&ai=1 |
есть | 0.02 ₽ |
pages=10&ai=1 |
есть | 0.11 ₽ |
pages=1&ai=1 |
есть, но получить не удалось | 0 ₽, ошибка 503 |
Последняя строка — отдельное правило, и оно стоит объяснения. Если ответ у поисковика есть, а до нас он
не доехал, мы не отдаём выдачу «хотя бы без него»: запрос заканчивается ошибкой, и не списывается
ничего, включая страницы. Так честнее ровно из-за того, как этим параметром пользуются. За AI-ответом
приходят с pages=1: нужен ответ, а страница идёт прицепом. Отдать такому запросу одну
страницу — это счёт за то, чего не просили, и снаружи он неотличим от «у поисковика ответа нет».
Платить стоит не деньгами, а временем: у Яндекса и Bing ответ забирается отдельно, поэтому запрос
занимает секунды вместо долей секунды. У Google обзор едет вместе с выдачей, и на время он почти не
влияет. Если гоняете большое ядро, закладывайте это в таймауты и не ставьте ai=1 там,
где ответ вам не нужен.
Что с этим делать на практике
Мониторинг цитируемости. Берёте те же запросы, по которым снимаете позиции, добавляете
ai=1 и раз в неделю пишете в таблицу два числа: есть ли ответ по запросу и попал ли в
sources ваш домен. Получается вторая кривая рядом с позициями — и она движется отдельно
от них. По трём поисковикам сразу это особенно наглядно: цитируют везде разных.
Разбор конкурентов. Соберите sources по кластеру запросов и посчитайте
домены. Список получится короче топ-10 и заметно устойчивее: в ответ попадают страницы, которые
отвечают на вопрос текстом, а не карточками и листингами.
Расширение семантики. В followUps у Яндекса лежат уточняющие вопросы,
которые он сам предлагает под ответом. Это готовые формулировки для подзаголовков и FAQ, причём взятые
не из частотности, а из того, что модель считает следующим логичным шагом. Как складывать их с
Вордстатом, разобрано в статье про
сбор семантического ядра.
Всё это удобно делать не только скриптом: те же данные доступны модели через наш MCP-сервер, если вы работаете из Claude Code или другого клиента.
Чего ждать не стоит
AI-ответ не детерминирован. Два запроса подряд по одной и той же фразе могут дать разный текст и частично разный список источников — это свойство генерации, а не парсинга. Поэтому сравнивать имеет смысл не тексты, а факты: был ли блок, какие домены процитированы, сколько раз. По той же причине не стройте алертов на изменение формулировки — сработает каждый день.
И ещё: наличие блока меняется от региона и устройства. Замеряя цитируемость, фиксируйте регион и устройство так же строго, как при проверке позиций по регионам, иначе получите шум вместо динамики.
Частые вопросы
Как получить AI-ответ поисковика через API?
Добавьте ai=1 к обычному запросу на /api/yandex, /api/google или
/api/bing. Ответ придёт полем aiAnswer рядом с органикой: текст в markdown и
список источников.
Сколько стоит парсинг AI-выдачи?
0.01 ₽ — как ещё одна страница выдачи, сверх стоимости самого запроса, одинаково у всех трёх поисковиков. Если по запросу ответа нет, надбавка не списывается. Если ответ есть, но получить его не удалось, запрос заканчивается ошибкой и не списывается вовсе, включая страницы.
Что будет, если ответ не получится собрать?
Вы получите ошибку 503, а деньги за запрос не спишутся — ни за ответ, ни за страницы выдачи. Мы не
отдаём выдачу вместо ответа: тот, кто ставит ai=1, приходит за ответом, а страница у него
обычно идёт прицепом. Достаточно повторить запрос, а если выдачи хватает — убрать ai.
Почему по моему запросу нет AI-ответа?
Так и должно быть по многим запросам. Блок показывают в основном на информационных вопросах; навигационные («вконтакте вход»), витальные и запросы с быстрым фактическим ответом вроде погоды его не получают. Ещё блок зависит от региона и устройства, и три поисковика показывают его по разным запросам — совпадения тут скорее исключение.
Можно ли получить AI-ответ в XML?
Нет. XML-формат повторяет схему Яндекс XML, и такого блока в ней не предусмотрено. Параметр
ai на XML-адресах отклоняется с ошибкой, чтобы не списывать за него деньги впустую —
ответ отдаётся только в JSON.
Это тот же ответ, что видит обычный пользователь?
Да, это тот же блок из той же выдачи, с теми же источниками. Мы дожидаемся генерации ровно так же, как это делает браузер, когда читатель раскрывает блок, и отдаём текст только целиком.