Skip to main content
Use the Product API to turn public product-page evidence into a normalized record. A non-product page is a valid result, and individual product fields can be missing.

Extract one product page

The endpoint costs 10 credits.

Check page detection

Check both is_product_page and product before reading fields:
A category page, homepage, article, or other non-product URL can return 200 with is_product_page: false and product: null. That is different from an invalid request or an inaccessible target. The optional platform value is amazon, tiktok_shop, etsy, generic, or null. It describes the detected page platform; it is not a guarantee that every page on that platform can be extracted.

Read product fields

The product object can include:
  • identity: name, description, url, sku, and category;
  • commercial data: price, regular_price, currency, billing_frequency, and pricing_model;
  • availability: availability and free-form dimensions statements;
  • merchandising: features, target_audience, tags, image_url, and up to seven images.
price, regular_price, currency, availability, billing fields, URL, category, and images can be absent or null. Preserve that uncertainty:
  • Do not convert a missing price to zero.
  • Do not interpret a missing availability as in stock.
  • Keep the source URL and extraction time with the record.
  • Verify current price and inventory at purchase time.
  • Treat descriptions and features as page-derived content, not independently verified claims.
See the single-product API reference for exact enums and required response fields.

Discover products from a site

The beta multi-product endpoint extracts up to 12 products from either a domain or one direct starting URL:
Pass exactly one of domain and directUrl. maxProducts accepts 1 to 12. This endpoint returns a discovered sample bounded by maxProducts; do not describe it as a complete catalog unless you independently reconcile it against the site’s catalog or sitemap. For larger catalogs, discover candidate URLs with the Sitemap API, filter likely product-detail pages, and extract each page. Sitemap coverage depends on what the site publishes, so reconcile the results against a known catalog when completeness matters.

Control freshness and latency

Both Product endpoints cache matching requests for seven days by default. Set:
  • maxAgeMs: 0 for a fresh extraction; the selected cache age is passed through to the underlying page scrapes;
  • a value up to 30 days when reuse matters more than freshness;
  • timeoutOpts.milliseconds to bound the request, up to five minutes. Use behavior: "return-partial" to accept a product after core extraction when remaining work, such as image processing, has not finished. Preserve the response’s partial: true marker; see timeouts.
Use the returned cache_metadata to record actual cache behavior. If price or availability is consequential, a fresh extraction is still not a transactional inventory guarantee.

Handle errors

Do not turn these request failures into is_product_page: false; they carry different operational meaning.

Production checklist

  • The input is an allowed public URL.
  • Non-product, partial-product, and request-error states are distinct.
  • Price, currency, and availability remain nullable.
  • Source URL, cache status, and extraction time are retained.
  • Multi-product output is not presented as exhaustive without reconciliation.
  • Product copy and images are used only with appropriate rights.

Next steps

Discover website URLs

Find candidate product pages in a site’s public sitemaps.

Scrape websites in batches

Collect raw page content with asynchronous scraping.

Product API reference

Review the product extraction request and response contract.
For the multi-product catalog API, explicit deadlines now fail with an unbilled 408 unless timeoutOpts.behavior is "return-partial". This also applies to legacy timeoutMS. Read the catalog migration note before depending on partial catalogs.