Надсилання запитів
/v1/search приймає той самий запит, який ви ввели б у поле
пошуку, плюс кілька параметрів. Він відповідає на GET і на
POST; параметри однакові в обох випадках.
Параметри
| Назва | За замовчуванням | Значення |
|---|---|---|
query | обов’язковий | Рядок пошуку. Синтаксис такий самий, як на сайті, - див. синтаксис запитів. |
page | 1 | Нумерація з 1. |
per_page | 100 | До ліміту рядків вашого тарифу, і так само page × per_page: тариф охоплює перші N рядків запиту, і листання за них не виходить (400 page_too_deep); /v1/account повідомляє це значення як max_per_page. |
snippets | вимкнено | 1, щоб додати текст збігу. Витрачає ліміт фрагментів. |
format | json | Один із шести - див. формати відповідей. |
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_pages | total, поділене на per_page й округлене вгору. |
returned | Скільки рядків насправді містить ця сторінка. |
truncated | Чи прибрав ліміт відкритих позицій вашого тарифу якісь із них. |
took_ms | Скільки тривав пошук, у мілісекундах. |
results | Рядки. |
Рядок
| Поле | Значення |
|---|---|
domain | Сайт. |
url | Сторінка, на якій знайдено збіг; для пошуку з depth: це не головна сторінка. |
rank | Місце в рейтингу: що менше число, то популярніший сайт. null, якщо в сайту немає рейтингу. |
ranked | false тоді й лише тоді, коли rank дорівнює null. |
snippets | Лише з snippets=1. До п’яти пар {"text", "match"}, де match - те, що збіглося, а text - те саме разом з оточенням. |
Листання й масове завантаження
Гортайте сторінки за допомогою page або запитайте все одразу з
великим per_page - до max_per_page з
/v1/account, що на платному тарифі становить мільйон. Окремого
ендпоінта для експорту немає; відповідь віддається в міру формування, тож
мільйон рядків не означає ще й мільйона рядків, що десь лежать у пам’яті.