Skip to main content
POST https://api.acedata.cloud/webextrator/extract WebExtrator Інтелектуальний API перетворює URL на типізовані структуровані результати — статті, товари, рецепти, відео, обговорення, вакансії тощо, одночасно надаючи очищений Markdown та чистий текст. Коли вам потрібні “чисті структуровані дані”, а не сирий HTML, це інтерфейс, який слід використовувати. В основі лежить трирівнева система:
  1. schema.org JSON-LD мапер — детермінований, нульова вартість LLM. Охоплює Wikipedia / BestBuy / AllRecipes / YouTube / більшість новин / більшість товарних сторінок.
  2. Типізоване LLM витягування — спрацьовує лише тоді, коли schema.org не спрацьовує. Вибір схеми за типом сторінки, строгий контроль Zod.
  3. Readability + Markdown підстрахування — завжди працює, заповнюючи верхні поля, які не були заповнені першими двома рівнями.
Повторні запити URL будуть кешуватися результатами Redis, <1 мс повернення.

Процес подачі заявки

Щоб використовувати сторінку послуг WebExtrator, спочатку перейдіть до консолі Ace Data Cloud для отримання вашого API токена, залиште його на випадок потреби. Якщо ви ще не увійшли або не зареєструвалися, вас автоматично перенаправлять на сторінку входу, запрошуючи вас зареєструватися та увійти, після чого ви автоматично повернетеся на цю сторінку. Один API токен дозволяє викликати всі послуги платформи, не потрібно окремо подавати заявку на кожну послугу. Перша заявка надає безкоштовний ліміт, ви можете безкоштовно випробувати; при недостатньому ліміті ви можете поповнити загальний баланс на консолі.
📘 Повна документація: Сторінка послуг WebExtrator →

Аутентифікація

Параметри запиту

Extract приймає всі Render API параметри (url, user_agent, timeout, wait_until, delay, wait_for_selector, block_resources, headers, cookies, callback_url, bypass_cache, cache_ttl_seconds, async), плюс два спеціальних поля Extract:
Коли сторінка має schema.org JSON-LD, enable_llm не діє — детермінований мапер безпосередньо видає результати, ніколи не витрачаючи виклик LLM. Ви безкоштовно отримуєте типізовані результати.

Синхронна відповідь

Верхні поля

Підполя data.structured

Покриття мапера schema.org

Сортовано за пріоритетом (якщо спрацьовує, то як structured.schemaOrg.primary): Обробка мапера:
  • Контейнер @graph (рекурсивне розгортання);
  • Масив @type (наприклад, ["Recipe", "NewsArticle"] — обидва розпізнаються, пріоритет за першим);
  • Варіанти з префіксом http://schema.org/;
  • Вкладені Offer та AggregateOffer (остання читає lowPrice);
  • Відносні URL зображень (перетворюються на абсолютні за finalUrl).

Типізований Schema LLM

Коли enable_llm: true і schema.org не має primary, парсер за URL використовує евристичний (або підказку expected_type) для вибору одного з моделей валідації Zod: Успішний LLM також заповнить “останній резерв” для верхніх полів:
  • articledescription / byline / publishedAt / language
  • productdescription
  • discussiondescription (перші 280 символів тіла) / byline (автор) / publishedAt (дата публікації)
  • recipedescription / byline (автор)
  • videodescription / byline (канал) / publishedAt (дата завантаження)
  • jobdescription / byline (компанія) / publishedAt (дата публікації)
Заповнення відбувається лише тоді, коли впевнений джерело даних не заповнило відповідні поля — LLM завжди є останнім резервом.

Кешування

Один і той же запит буде хешуватися в один і той же Redis Key: webextrator:cache:extract:<sha256(canonical-json)>. Кеш Key ігнорує async, bypass_cache, cache_ttl_seconds (це перемикач, не впливає на відповідь). cookies / headers будуть кешуватися в окремих відрах. Відповіді, що потрапили в кеш, будуть містити data.cached: true та data.cacheStoredAt: <unix-ms>.

Асинхронний режим та зворотний виклик

Встановіть async: true, щоб увійти в асинхронний режим (надання callback_url також автоматично активує). Платформа негайно повертає (HTTP 200):
Коли завдання завершено, повний envelope POST на ваш callback_url (якщо налаштовано). Також можна потім активно запитати через /webextrator/tasks.

Приклад

1. Стаття Wikipedia (спрацьовує schema.org, LLM не потрібен)

Ключові поля data.structured.schemaOrg.primary:

2. Сторінка товару BestBuy (schema.org виявлено)

schema.org виявлення:

3. Сторінка рецепту AllRecipes (з харчуванням та етапами)

schema.org виявлення:

4. Сторінка обговорення HN (без JSON-LD —— потрібно увімкнути LLM)

data.structured.llm.data
Верхні поля також були заповнені: byline = "alice"publishedAt = "..."

5. Сторінка товару Amazon (Amazon без JSON-LD —— потрібно увімкнути LLM)

data.structured.llm.data(типізований product):

Python (requests)

Node.js (fetch)

Поради та підводні камені

  • Якщо можливо, передайте expected_type. Безкоштовна порада, пропустіть евристичне визначення, особливо корисно для сторінок, URL-адреси яких не входять до вбудованого списку.
  • enable_llm: true на сторінках з виявленим schema.org безкоштовно. LLM викликається лише тоді, коли schema.org не має первинного, тому за замовчуванням це також безпечно.
  • Під час налагодження спочатку перевірте rawSignals.hasJsonLd. Якщо це true, але structured.schemaOrg.primary є null, це означає, що сторінка використовує тип, який наш мапер ще не покрив — створіть issue, ми додамо.
  • structured.llmError є інформаційним. Запит все ще успішний, евристичний результат все ще повертається. Перегляньте llmError.error, щоб визначити причину (тайм-аут, помилка парсингу JSON, помилка валідації Zod).
  • Посилання links[] на не-сторінках статей не будуть відсортовані за релевантністю. Лише за “максимум 100 записів + фільтрація недійсних протоколів” намагайтеся очистити.
  • Кешування також підлягає оплаті. Кеш призначений для затримки та захисту пулу браузерів, а не для економії.