Smart Scrape — контент страницы одним запросом
Передайте URL — получите типизированный источник, Markdown, ссылки или SEO-данные. Сервис сам выбирает самый дешёвый способ: кэш, сохранённая копия из поискового кэша, прямой HTTP — и только при необходимости headless-браузер.
Один эндпоинт вместо связки «запросить — отрендерить — очистить — конвертировать». Каскад стратегий добывает документ самым дешёвым доступным способом, а поле contentKind говорит, что именно пришло: очищенный HTML, либо точный исходник JSON, XML или текста. Поля strategy и attempted показывают, какой путь сработал.
Возможности
Каскад стратегий
Общий 12-часовой кэш документов → сохранённая копия из поискового кэша → прямой HTTP → headless Chromium. Каждый уровень пробуется только если предыдущий не дал пригодный документ.
Типизированный источник
Поле contentKind (html / json / xml / text / pdf / spreadsheet) присваивается в момент получения ответа. HTML приходит очищенным, JSON, XML и текст — точным исходником, PDF и таблицы — извлечённым текстом.
Готовые форматы
Markdown для LLM, список ссылок, SEO-данные (title, canonical, заголовки, JSON-LD), скриншот и PDF — в одном запросе, без отдельного пайплайна.
Честная тарификация
Кэш, сохранённая копия и прямой HTTP — 10 ₽ за 1000. Запуск Chromium — 100 ₽ за 1000, и только когда он действительно понадобился. Уровень виден по ответу.
Свежесть под контролем
Cache-Control: no-cache пропускает кэши и идёт сразу к источнику; заголовок X-Cache показывает HIT, MISS или BYPASS. Свежий результат обновляет кэш для следующих запросов.
Прозрачные неудачи
Если документ добыть не удалось — HTTP 200 с ok: false, диагностическим message и статусом, заголовками и редиректами последней попытки. Ничего не приходится угадывать.
Пример запроса
curl -X POST "https://proxy.unoapi.ru/v1/browser/smart-scrape?timeout=30000" \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "formats": ["content", "markdown"]}'const res = await fetch('https://proxy.unoapi.ru/v1/browser/smart-scrape?timeout=30000', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.UNOAPI_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com',
formats: ['content', 'markdown'],
}),
});
const data = await res.json();
if (data.ok) {
console.log(data.contentKind); // "html" | "json" | "xml" | "text"
console.log(data.markdown);
}import httpx, os
r = httpx.post(
"https://proxy.unoapi.ru/v1/browser/smart-scrape",
params={"timeout": 30000},
json={"url": "https://example.com", "formats": ["content", "markdown"]},
headers={"Authorization": f"Bearer {os.environ['UNOAPI_KEY']}"},
timeout=35,
)
data = r.json()
if data["ok"]:
print(data["contentKind"]) # "html" | "json" | "xml" | "text"
print(data["markdown"])Сравнение
| Параметр | УноАПИ.ru | Международные сервисы |
|---|---|---|
| Типизированный источник | ✓ contentKind: html / json / xml / text | Обычно только HTML → Markdown |
| Каскад перед браузером | ✓ кэш → поисковый кэш → HTTP | Обычно сразу рендер |
| Сохранённая копия из поискового кэша | ✓ | — |
| Цена без браузера | 10 ₽ / 1000 | Единая цена за рендер |
| Markdown / ссылки / SEO | ✓ в одном запросе | Зависит от вендора |
| Оплата | Рубли, по факту | USD, подписка |
Часто задаваемые вопросы
За что именно я плачу?
Запрос, закрытый кэшем, сохранённой копией из поискового кэша или прямым HTTP, стоит 10 ₽ за 1000. Если понадобился запуск Chromium — 100 ₽ за 1000, включая неудачную попытку рендера. Уровень определяет сервис по ходу каскада, выбрать или подделать его в запросе нельзя.
Что означает поле contentKind?
Как читать content: html — очищенный HTML после извлечения, json / xml / text — точный исходник без очистки, pdf и spreadsheet — текст, извлечённый из файла. Ветвиться нужно по contentKind, а не по Content-Type. Поле возвращается всегда, когда документ получен.
А PDF и Excel-файлы?
Да. Для PDF возвращается извлечённый текстовый слой (contentKind: pdf), для xlsx и xls — данные листов в CSV (contentKind: spreadsheet), а markdown отдаёт их как таблицы. Файлы до 10 МиБ, всё на дешёвом уровне без запуска браузера. Скан без текстового слоя честно вернёт ok: false с пояснением.
Что вернётся для JSON API?
Точный исходник ответа с contentKind: json — без обёрток и переформатирования, большие числа и порядок ключей сохраняются. Markdown при этом — тот же исходник в код-блоке.
Как получить гарантированно свежие данные?
Отправьте заголовок Cache-Control: no-cache — запрос пропустит кэш ответов и кэш документов и пойдёт сразу к источнику. В ответе будет X-Cache: BYPASS, а свежий результат обновит кэш.
Можно ли получить скриншот или PDF?
Да, форматы screenshot и pdf. Визуальные форматы идут сразу в браузер и тарифицируются по browser-уровню; PNG и PDF приходят в base64 внутри JSON-ответа.
Это совместимо с Browserless Smart Scrape?
Запросы — да: формат html принимается как псевдоним content, поле proxy игнорируется. Ответ — надмножество Browserless: добавлено обязательное поле contentKind, по которому нужно ветвиться. Одно отличие: content для HTML-документов приходит очищенным, а не сырым. В документации есть короткая инструкция по миграции.
Сколько стоит один запрос?
Актуальные цены — на /pricing: 10 ₽ за 1000 запросов без браузера, 100 ₽ за 1000 с запуском Chromium. Есть ежемесячные бесплатные кредиты.
Готовы попробовать?
Бесплатные месячные кредиты — без карты, без подписки.