Response Schema
Complete reference for every field in the /v1/parse response object.
Top-level fields
| Field | Type | Always present | Description |
|---|---|---|---|
title | string | ✓ | Product name |
brand | string | null | ✓ | Manufacturer or brand name |
sku | string | null | ✓ | Stock-keeping unit / product identifier |
description | string | null | ✓ | Full product description |
price | Price | ✓ | Primary unit price |
availability | string | ✓ | Stock status |
images | string[] | ✓ | Product image URLs (up to 10) |
variants | object[] | ✓ | Variant options (colour, size, storage, etc.) |
shipping | Shipping | null | ✓ | Shipping summary and ETA |
quantityBreaks | QuantityBreak[] | ✓ | Volume pricing tiers (B2B sites) |
source | Source | ✓ | Extraction metadata |
artifacts | Artifacts | null | ✓ | Screenshot and diagnostic artifacts |
meta | Meta | ✓ | Request metadata |
Price
{
"amount": 129.99,
"currency": "USD"
}
| Field | Type | Description |
|---|---|---|
amount | number | Price as a decimal number (always 2dp) |
currency | string | ISO 4217 currency code (USD, NZD, EUR, etc.) |
When a sale price is detected, amount reflects the current selling price. The original price is not in the schema — use extractionHint to request it as a custom field.
availability
One of the following string values, normalised from whatever text the site displays:
| Value | Meaning |
|---|---|
in_stock | Item is available to purchase |
out_of_stock | Item is not currently available |
preorder | Item can be ordered but hasn't shipped |
backorder | Item is on back-order |
discontinued | Item is no longer sold |
unknown | Status could not be determined |
variants
An array of objects, where each object contains one or more variant dimension keys. The keys are site-specific and inferred from the page.
[
{ "colour": "Midnight Black", "storage": "128GB" },
{ "colour": "Midnight Black", "storage": "256GB" },
{ "colour": "Natural Titanium", "storage": "128GB" }
]
Common keys: colour, color, size, storage, material, style, weight.
Shipping
{
"summary": "Free shipping over $75",
"eta": "3–5 business days"
}
| Field | Type | Description |
|---|---|---|
summary | string | null | Human-readable shipping offer text |
eta | string | null | Estimated delivery timeframe |
QuantityBreak
Populated on B2B and wholesale sites that display volume pricing tables.
[
{ "minQuantity": 1, "maxQuantity": 9, "unitPrice": 129.99 },
{ "minQuantity": 10, "maxQuantity": 49, "unitPrice": 114.99 },
{ "minQuantity": 50, "maxQuantity": null, "unitPrice": 99.99 }
]
| Field | Type | Description |
|---|---|---|
minQuantity | number | Minimum quantity for this tier |
maxQuantity | number | null | Maximum quantity (null = no upper limit) |
unitPrice | number | Per-unit price at this tier |
Source
Describes how and where the data was extracted.
{
"type": "jsonld",
"method": "fast-path",
"confidence": 0.98
}
| Field | Type | Description |
|---|---|---|
type | string | Data source type: jsonld, microdata, cached-script, adaptive, visual |
method | string | Execution path: fast-path, cached-script, adaptive-fallback, visual-extraction |
confidence | number | Extraction confidence score, 0–1 |
A confidence below 0.75 indicates the extraction was uncertain. Low-confidence results are flagged in the Pro dashboard for review.
Artifacts
Only present when includeScreenshot was requested.
{
"screenshotUrl": "https://cdn.productparse.dev/s/abc123.png",
"screenshotToken": "abc123"
}
| Field | Type | Description |
|---|---|---|
screenshotUrl | string | Public URL to the screenshot PNG (valid for 7 days) |
screenshotToken | string | Token for re-fetching via GET /v1/screenshots/:token |
Meta
{
"extractionTime": 312,
"requestId": "req_01j8x...",
"timestamp": "2025-05-12T10:24:18.000Z"
}
| Field | Type | Description |
|---|---|---|
extractionTime | number | Wall-clock extraction time in milliseconds |
requestId | string | Unique identifier for this request (use in support tickets) |
timestamp | string | ISO 8601 timestamp of when extraction completed |
Null fields
Fields that cannot be extracted are returned as null rather than being omitted. This makes schema validation predictable — you always get the same keys.
{
"sku": null,
"shipping": null,
"quantityBreaks": []
}