Надсилання запитів

/v1/search приймає той самий запит, який ви ввели б у поле пошуку, плюс кілька параметрів. Він відповідає на GET і на POST; параметри однакові в обох випадках.

Параметри

НазваЗа замовчуваннямЗначення
queryобов’язковийРядок пошуку. Синтаксис такий самий, як на сайті, - див. синтаксис запитів.
page1Нумерація з 1.
per_page100До ліміту рядків вашого тарифу, і так само page × per_page: тариф охоплює перші N рядків запиту, і листання за них не виходить (400 page_too_deep); /v1/account повідомляє це значення як max_per_page.
snippetsвимкнено1, щоб додати текст збігу. Витрачає ліміт фрагментів.
formatjsonОдин із шести - див. формати відповідей.
columnsзалежить від форматуПерелік через кому з domain, url, rank, ranked, snippets.
delimiter; / табуляціяДля csv і tsv.
headerвимкнено1, щоб додати рядок заголовків у csv і tsv.

GET

curl -H "Authorization: Bearer $KEY" \
     "https://api.publicwww.com/v1/search?query=%22angular.min.js%22&page=2&per_page=50"

Не забудьте закодувати запит для URL. Лапки, скісні риски й + мають значення.

POST

Ті самі параметри в тілі JSON. Використовуйте цей спосіб, коли запит довгий або містить кілька фраз: багаторядковий запит в URL упирається в обмеження довжини в проксі та клієнтах задовго до того, як це стане проблемою для сервера.

curl https://api.publicwww.com/v1/search \
     -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/json" \
     -d '{"query": ["\"angular.min.js\"", "\"bootstrap.min.css\""],
          "per_page": 50,
          "snippets": true}'

Масив фраз означає, що мають знайтися всі, - так само, як якби ви розділили їх переносами рядків у рядку query. У прикладі вище першу фразу містять 278 сайтів, а обидві - 99.

Типи JSON розпізнаються: true працює там, де рядку запиту потрібне 1. Якщо параметр задано і в URL, і в тілі, перевагу має тіло.

Відповідь

ПолеЗначення
totalСкільки сайтів відповідають запиту в усьому індексі. Справжня кількість, а не оцінка.
total_pagestotal, поділене на per_page й округлене вгору.
returnedСкільки рядків насправді містить ця сторінка.
truncatedЧи прибрав ліміт відкритих позицій вашого тарифу якісь із них.
took_msСкільки тривав пошук, у мілісекундах.
resultsРядки.

Рядок

ПолеЗначення
domainСайт.
urlСторінка, на якій знайдено збіг; для пошуку з depth: це не головна сторінка.
rankМісце в рейтингу: що менше число, то популярніший сайт. null, якщо в сайту немає рейтингу.
rankedfalse тоді й лише тоді, коли rank дорівнює null.
snippetsЛише з snippets=1. До п’яти пар {"text", "match"}, де match - те, що збіглося, а text - те саме разом з оточенням.

Листання й масове завантаження

Гортайте сторінки за допомогою page або запитайте все одразу з великим per_page - до max_per_page з /v1/account, що на платному тарифі становить мільйон. Окремого ендпоінта для експорту немає; відповідь віддається в міру формування, тож мільйон рядків не означає ще й мільйона рядків, що десь лежать у пам’яті.

Далі Формати відповідей