Extract one product page
Check page detection
Check bothis_product_page and product before reading fields:
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, andcategory; - commercial data:
price,regular_price,currency,billing_frequency, andpricing_model; - availability:
availabilityand free-formdimensionsstatements; - merchandising:
features,target_audience,tags,image_url, and up to sevenimages.
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.
Discover products from a site
The beta multi-product endpoint extracts up to 12 products from either a domain or one direct starting URL: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: 0for 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.millisecondsto bound the request, up to five minutes. Usebehavior: "return-partial"to accept a product after core extraction when remaining work, such as image processing, has not finished. Preserve the response’spartial: truemarker; see timeouts.
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.
408 unless timeoutOpts.behavior is "return-partial". This also applies to legacy timeoutMS. Read the catalog migration note before depending on partial catalogs.