Pricing data retrieval
Pricing works the same way as inventory: poll for the variants whose pricing changed, then apply what comes back.
What you’ll build
Section titled “What you’ll build”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.
Before you start
Section titled “Before you start”- You have created your taxonomy,
including the attributes you classified as
CLASSIFICATION_PRICING. - You have built the inventory poller. Run this one on the same strategy.
1. Poll for pricing changes
Section titled “1. Poll for pricing changes”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.
2. Read the pricing attributes
Section titled “2. Read the pricing attributes”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.
3. Apply scheduled sales
Section titled “3. Apply scheduled sales”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.
Next steps
Section titled “Next steps”Listing data is the last part of listing ingestion.
See also
Section titled “See also”API changelog · Built 0c509dd3