API
API выполняет тот же поиск, что и сайт, и отдаёт результаты в виде данных: по умолчанию в JSON, а также в XML, CSV, TSV, NDJSON и простым текстом. Все вызовы только читают - ничего не создают и не изменяют.
Базовый URL
https://api.publicwww.com
Одной командой
curl -H "Authorization: Bearer $KEY" \
"https://api.publicwww.com/v1/search?query=%22angular.min.js%22&per_page=3"
{
"query": "\"angular.min.js\"",
"page": 1,
"per_page": 3,
"total": 278,
"total_pages": 93,
"returned": 3,
"truncated": false,
"took_ms": 2,
"results": [
{ "domain": "imgbox.com", "url": "https://imgbox.com/", "rank": 4187, "ranked": true }
]
}
Эндпоинты
| Эндпоинт | Методы | Что делает |
|---|---|---|
/v1/search |
GET, POST | Выполняет поиск. Параметры, форматы. |
/v1/account |
GET | Тариф, лимиты и ограничения. Ничего не расходует. |
/mcp |
POST | MCP-сервер для ИИ-ассистентов и агентов: тот же поиск в виде инструмента, с тем же токеном. |
/ |
GET | Самоописание API, включая коды ошибок. Ключ не нужен. |
/openapi.json |
GET | То же в виде описания OpenAPI 3.1 - для импорта в Postman, n8n, Make, Power Automate и другие инструменты. Ключ не нужен. |
Отдельного эндпоинта для выгрузки нет. Массовая выгрузка - это
/v1/search с большим per_page: на платном тарифе
до миллиона строк, причём ответ передаётся потоком по мере готовности.
Что гарантируется
-
Результаты никогда не урезаются молча. Когда у посетителя сайта кончается
суточный лимит, сайт незаметно переходит на ограничения бесплатного тарифа
и показывает меньше. Скрипт этого не заметит, поэтому API в таком случае
возвращает ошибку -
429 quota_exceeded, а не урезанный ответ, который выглядит полным. -
Неполный ответ помечается как неполный - полем
truncatedв теле и заголовкомX-Truncated, в любом формате. -
Сайты без места в рейтинге так и помечены -
rank: nullиranked: false, а не внутренней заглушкой, которую клиент мог бы принять за настоящее, очень большое место. -
Лучше сказать «подождите», чем заставлять ждать. Если запросы идут
слишком часто, ответ с заголовком
Retry-Afterприходит сразу, а соединение не держится открытым.
Как получить ключ
Выпустите токен в профиле или позвольте приложению
получить его за вас через OAuth 2.1.
Нужен платный тариф; см. тарифы. Существующие
скрипты, которые обращаются к старым адресам ?export=, работают
без изменений - см. старые адреса выгрузки.