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가 미치지 못할 때만 트리거됩니다. 페이지 유형에 따라 Schema를 선택하고, Zod로 엄격하게 검증합니다.
  3. Readability + Markdown 보완 — 항상 실행되며, 앞의 두 단계에서 채워지지 않은 최상위 필드를 보완합니다.
URL 중복 요청은 Redis 결과 캐시에 의해 처리되며, <1 ms 내에 반환됩니다.

신청 절차

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/ 접두사 변형;
  • 중첩된 OfferAggregateOffer (후자는 lowPrice로 읽음);
  • 상대 이미지 URL (최종 URL에 따라 절대적으로 해석됨).

LLM 유형화 스키마

enable_llm: true 그리고 schema.org에 primary가 없을 때, 추출기는 URL 휴리스틱 (또는 expected_type 힌트)에 따라 아래 중 하나의 Zod 스키마 검증 모델 출력을 선택합니다: LLM 성공 시에도 최상위 필드에 “last-resort”로 다시 채워집니다:
  • articledescription / byline / publishedAt / language
  • productdescription
  • discussiondescription(= body의 처음 280자)/ byline(= author)/ publishedAt(= postedAt)
  • recipedescription / byline(= author)
  • videodescription / byline(= channel)/ publishedAt(= uploadDate)
  • jobdescription / byline(= company)/ publishedAt(= datePosted)
다시 채우기는 결정적인 데이터 소스가 해당 필드를 채우지 않았을 때만 발생합니다 —— LLM은 항상 마지막 보루입니다.

캐시

동일한 요청은 동일한 Redis 키로 해시됩니다: webextrator:cache:extract:<sha256(canonical-json)>。캐시 키는 무시합니다 asyncbypass_cachecache_ttl_seconds(이는 작동 스위치이며, 응답에 영향을 미치지 않습니다)。cookies / headers 분리된 캐시로 저장됩니다. 캐시 적중 응답은 data.cached: truedata.cacheStoredAt: <unix-ms>를 포함합니다.

비동기 모드 및 콜백

async: true를 설정하여 비동기 모드로 전환합니다 (또한 callback_url을 제공하면 자동으로 전환됩니다). 플랫폼은 즉시 반환합니다 (HTTP 200):
작업이 완료되면 전체 envelope을 callback_urlPOST합니다 (구성된 경우). 또한 나중에 /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.primarynull이라면, 페이지가 우리가 매핑한 적이 없는 @type을 사용한 것입니다 — 이슈를 제기하면 추가하겠습니다.
  • structured.llmError는 정보성입니다. 요청은 여전히 성공적이며, 유도적 결과는 여전히 반환됩니다. llmError.error를 확인하여 원인을 파악하세요 (타임아웃, JSON 파싱 실패, Zod 검증 실패).
  • 비기사 페이지의 links[]는 관련성 정렬을 하지 않습니다. “최대 100개 + 유효하지 않은 프로토콜 필터링”에 따라 최선을 다해 정리합니다.
  • 캐시 적중도 요금이 부과됩니다. 캐시는 지연 및 브라우저 풀 보호를 위해 존재하며, 비용 절감을 위한 것이 아닙니다.