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 Token для резервного копирования. Если вы еще не вошли в систему или не зарегистрированы, вы будете автоматически перенаправлены на страницу входа, приглашающую вас зарегистрироваться и войти в систему, после чего вы будете автоматически возвращены на текущую страницу. Один API Token позволяет вызывать все сервисы платформы, не нужно подавать отдельные заявки на каждый сервис. При первой подаче заявки предоставляется бесплатный лимит, чтобы вы могли бесплатно протестировать; при недостатке лимита вы можете пополнить общий баланс в консоли.
📘 Полная документация: Страница сервиса 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).

Типизированная схема LLM

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

Кэширование

Одинаковые запросы будут хэшироваться в один и тот же ключ Redis: webextrator:cache:extract:<sha256(canonical-json)>. Ключ кэша игнорирует 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 не имеет primary, поэтому по умолчанию это также безопасно.
  • При отладке сначала смотрите rawSignals.hasJsonLd. Если это true, но structured.schemaOrg.primary равно null, это означает, что страница использует тип @type, который еще не охвачен нашим маппером — создайте issue, мы добавим.
  • structured.llmError является информационным. Запрос все равно успешен, эвристические результаты все равно возвращаются. Смотрите llmError.error, чтобы определить причину (тайм-аут, ошибка разбора JSON, ошибка проверки Zod).
  • Ссылки на не-статьи links[] не будут сортироваться по релевантности. Только по “максимум 100 записей + фильтрация недействительных протоколов” стараемся очистить.
  • Кэширование также учитывается в расчетах. Кэш предназначен для уменьшения задержек и защиты пула браузеров, а не для экономии.