AMBER_API_KEY and
AMBER_BRAND, and save the shared Node.js client
as amber-client.mjs. The script below requires Node.js 22 or later.
1
Inspect one page
items contains Parent Product summaries, including id,
code, and name. Continue with nextCursor until it is null.
/products supports limit and cursor; it has no product-code search or
updatedSince filter. Use the returned IDs in later requests.2
Export the collections once per brand
Save this as The final file is replaced only when the script succeeds. Requests run
sequentially and honor
export-catalog.mjs. Each output line is a JSON object with
resource and record, so different resource shapes remain distinguishable.export-catalog.mjs
429 responses through the shared client. An empty
collection contributes no lines. A successful run can produce an empty file.3
Join records using IDs
/options defines attributes; it does not return Product Options.
Option-value definitions carry optionId, and dimension-value definitions
carry dimensionId. Keep these library IDs to resolve labels.Assignment records may have no id. Key option prices by
(productOptionId, kind, currency), option-value assignments by
(productOptionId, optionValueId), and SKU dimensions by
(skuId, dimensionValueId). Include brand and resource in your local keys.Narrow the export to one Parent Product
Use a real Parent Product ID from step 1:productId filter works on /skus and /product-option-prices.
To retrieve one Product Option’s SKUs, use /skus?productOptionId={id}.
Every filtered collection still needs pagination.