Skip to content

Pricing data retrieval

Pricing works the same way as inventory: poll for the variants whose pricing changed, then apply what comes back.

A poller that asks Zentail for the variants whose pricing changed since it last asked, and applies each price and scheduled sale on your channel.

Request GET /v2/storefront/listing/variant/pricing/updated with the time of your last successful poll:

GET /v2/storefront/listing/variant/pricing/updated?since=2026-09-22T14:00:00.000Z
Parameter Type Description
since string ($date-time) Only variants whose pricing changed at or after this time.
cursor string The nextPageCursor from the previous page. Leave it out for the first page.

For pricing, read the pricing object on each variant:

{
"variants": [
{
"sku": "TSHIRT-RED-M",
"pricing": {
"enabled": true,
"attributes": [
{
"id": "purchasable.price",
"moneyValue": { "amount": "12.34", "currencyCode": "USD" },
"versionId": "91c2",
"updatedAt": "2026-09-22T14:03:11.000Z",
"submittedAt": "2026-09-21T09:00:00.000Z"
}
],
"updatedAt": "2026-09-22T14:03:11.000Z",
"sales": [
{
"strikeThroughPrice": 12.34,
"salePrice": 10.0,
"startAt": "2026-09-25T00:00:00.000Z",
"endAt": "2026-09-28T00:00:00.000Z"
}
]
}
}
],
"nextPageCursor": ""
}

Keep requesting with cursor set to nextPageCursor until it comes back empty.

The attributes array carries the attributes from your taxonomy that you classified as pricing attributes. Each attribute’s id is the attributeSpecId you set during taxonomy ingestion.

Each attribute also carries versionId, updatedAt and submittedAt. You send the versionId back when you record a submission.

Alongside the id is one value key, which depends on the attribute’s type. These six are the whole set:

"textValue": "string",
"numericValue": 0,
"numericWithUnitsValue": {
"numeric": 0,
"units": "string"
},
"multiTextValue": {
"values": [
"string"
]
},
"moneyValue": {
"amount": "string",
"currencyCode": "string"
},
"multiObjectValue": {
"items": [
{
"properties": {
"<sub-attribute name>": { /* one of these same value keys */ }
}
}
]
}

multiObjectValue carries an attribute you declared as TYPE_MULTI_OBJECT. Each item in items is one object, and each entry in its properties map is a sub-attribute whose value uses one of the keys above.

A seller can schedule a sale in Zentail: a short-term price cut. Every planned sale is in the sales array. When the current time is between startAt and endAt, show the sale on your channel.

Listing data is the last part of listing ingestion.

API changelog · Built 0c509dd3