Precios de muchos productos u ofertas en una llamada
POST
https://pricto.dev/v1/prices/batchFor integrations that refresh a list of SKUs. Up to 500 items.
| Créditos | MCP |
|---|---|
| 1 per offer price returned; items not found cost 0 | — |
Parámetros#
| Parámetro | En | Tipo | Descripción |
|---|---|---|---|
currency | query | string | Add converted amounts in this ISO 4217 currency. local (default) returns source currency only. Default: local. |
Cuerpo#
| Campo | Tipo | Descripción |
|---|---|---|
items requerido | ItemRef[] | |
items[].product_id | string | |
items[].gtin | string | |
items[].offer_id | string | |
items[].quantity | integer | Compare only. |
retailers | string[] | |
max_credits | number | |
dry_run | boolean | |
min_confidence | number | |
match_kinds | string[] |
Respuesta#
200 One result per requested item, in the same order.
| Campo | Tipo | Descripción |
|---|---|---|
data requerido | object[] | |
data[].input requerido | ItemRef | Exactly one of product_id, gtin or offer_id. |
data[].input.product_id | string | |
data[].input.gtin | string | |
data[].input.offer_id | string | |
data[].input.quantity | integer | Compare only. |
data[].found requerido | boolean | |
data[].product_id | string | null | |
data[].prices | RetailerPrice[] | |
data[].prices[].currency requerido | string | |
data[].prices[].price requerido | number | |
data[].prices[].list_price requerido | number | |
data[].prices[].sale_price | number | null | |
data[].prices[].card_price | number | null | Convenience: the lowest price in conditional_prices that requires a payment method or membership. |
data[].prices[].card_label | string | null | |
data[].prices[].conditional_prices | ConditionalPrice[] | Every price that requires a condition other than quantity (payment method, loyalty tier, app, coupon), as published. |
data[].prices[].conditional_prices[].kind requerido | string | Valores / values: payment_method, membership, app_only, coupon, other. |
data[].prices[].conditional_prices[].label requerido | string | As shown by the retailer. |
data[].prices[].conditional_prices[].price requerido | number | |
data[].prices[].conditional_prices[].payment_method | string | null | |
data[].prices[].conditional_prices[].membership_tier | string | null | |
data[].prices[].conditional_prices[].installments_count | integer | null | |
data[].prices[].conditional_prices[].interest_free | boolean | null | |
data[].prices[].unit_price | object | null | |
data[].prices[].unit_price.amount requerido | number | |
data[].prices[].unit_price.per requerido | string | Valores / values: kg, l, unit, m, m2. |
data[].prices[].promotions | Promotion[] | |
data[].prices[].promotions[].type requerido | string | Valores / values: multi_buy, nth_unit, percent_off, amount_off, bundle, gift, other. |
data[].prices[].promotions[].label requerido | string | As shown by the retailer, e.g. "2 x $2.990". |
data[].prices[].promotions[].min_quantity | integer | null | |
data[].prices[].promotions[].effective_unit_price | number | null | Price per item when the promotion applies. |
data[].prices[].promotions[].requires_card | string | null | Payment method required, if any. |
data[].prices[].promotions[].valid_until | string (date) | null | |
data[].prices[].availability requerido | string | Valores / values: in_stock, out_of_stock, limited, unknown. |
data[].prices[].tax_included | boolean | As shown by the retailer (observed). |
data[].prices[].tax_rate | number | null | Derived. Main VAT rate for this country and category, null when not known. |
data[].prices[].price_ex_tax | number | null | Derived from price and tax_rate. Null when tax_rate is null. |
data[].prices[].tax_rule_id | string | null | Versioned rule used to derive tax_rate. |
data[].prices[].other_taxes_included | boolean | null | True when other taxes remain in price_ex_tax (e.g. Chile IABA on sweetened drinks). |
data[].prices[].installments | object | |
data[].prices[].observed_at requerido | string (date-time) | |
data[].prices[].observed_local_date | string (date) | Capture date in the retailer time zone. Daily series use this date. |
data[].prices[].capture_method requerido | string | How the price was obtained, part of the provenance with url and observed_at. public_page: read from the retailer's public web page (HTML, JSON-LD or the page payload). public_api: an open, unauthenticated JSON endpoint of the retailer's own site. retailer_feed: delivered by the retailer under an agreement. open_data: a public dataset published by a government or third party. Valores / values: public_page, public_api, retailer_feed, open_data. |
data[].prices[].quality_status | string | warning when a validation flagged the observation (price jump, zero, unusual unit). Quarantined observations are never served. Valores / values: ok, warning. |
data[].prices[].quality_flags | string[] | Why the price was flagged. The price is delivered as published, never corrected. discount_over_85: more than 85% off the list price. round_price_low: a round price of CLP 1,000 or less. Both often mean a placeholder price or a store error. |
data[].prices[].corrected | boolean | True when the observation was amended after capture (the original is kept). |
data[].prices[].converted | Converted | |
data[].prices[].converted.currency requerido | string | |
data[].prices[].converted.price requerido | number | |
data[].prices[].converted.list_price | number | null | |
data[].prices[].converted.card_price | number | null | |
data[].prices[].converted.unit_price | number | null | |
data[].prices[].converted.fx_rate requerido | number | Units of target currency per unit of source currency. |
data[].prices[].converted.fx_date requerido | string (date) | Publication date of the rate used (last published on or before the observation date). |
data[].prices[].converted.fx_source | string | |
data[].prices[].converted.fx_method | string | Valores / values: direct, cross. |
data[].prices[].retailer requerido | RetailerRef | |
data[].prices[].retailer.id requerido | string | |
data[].prices[].retailer.name requerido | string | |
data[].prices[].offer_id requerido | string | |
data[].prices[].store_id | string | null | Null when the price is national/online. |
data[].prices[].url requerido | string (uri) | |
data[].prices[].title_original requerido | string | |
data[].prices[].seller | Seller | Who sells the offer. On marketplaces it is a third party; name is null when the seller is a natural person (no personal data). |
data[].prices[].seller.id requerido | string | |
data[].prices[].seller.name requerido | string | null | |
data[].prices[].seller.is_retailer_itself requerido | boolean | |
data[].prices[].match requerido | Match | How the offer was linked to the canonical product. |
data[].prices[].match.method requerido | string | singleton: the offer matched nothing else and is its own product. Valores / values: gtin, rules, model, manual, singleton. |
data[].prices[].match.confidence requerido | number | |
data[].prices[].match.kind requerido | string | identical: the same item. pack: the offer is N units of the product (pack_ratio), comparable by unit price. equivalent: a declared substitute of another brand or lab, not the same item. Valores / values: identical, pack, equivalent. |
data[].prices[].match.pack_ratio | number | null | Units of the product in the offer, for kind pack. |
meta requerido | Meta |
meta trae el costo, la fuente para citar, el idioma, la moneda y los avisos (ver Convenciones).
Errores#
Current prices for many products or offers in one call
POST
https://pricto.dev/v1/prices/batchFor integrations that refresh a list of SKUs. Up to 500 items.
| Credits | MCP |
|---|---|
| 1 per offer price returned; items not found cost 0 | — |
Parameters#
| Parameter | In | Type | Description |
|---|---|---|---|
currency | query | string | Add converted amounts in this ISO 4217 currency. local (default) returns source currency only. Default: local. |
Body#
| Field | Type | Description |
|---|---|---|
items required | ItemRef[] | |
items[].product_id | string | |
items[].gtin | string | |
items[].offer_id | string | |
items[].quantity | integer | Compare only. |
retailers | string[] | |
max_credits | number | |
dry_run | boolean | |
min_confidence | number | |
match_kinds | string[] |
Response#
200 One result per requested item, in the same order.
| Field | Type | Description |
|---|---|---|
data required | object[] | |
data[].input required | ItemRef | Exactly one of product_id, gtin or offer_id. |
data[].input.product_id | string | |
data[].input.gtin | string | |
data[].input.offer_id | string | |
data[].input.quantity | integer | Compare only. |
data[].found required | boolean | |
data[].product_id | string | null | |
data[].prices | RetailerPrice[] | |
data[].prices[].currency required | string | |
data[].prices[].price required | number | |
data[].prices[].list_price required | number | |
data[].prices[].sale_price | number | null | |
data[].prices[].card_price | number | null | Convenience: the lowest price in conditional_prices that requires a payment method or membership. |
data[].prices[].card_label | string | null | |
data[].prices[].conditional_prices | ConditionalPrice[] | Every price that requires a condition other than quantity (payment method, loyalty tier, app, coupon), as published. |
data[].prices[].conditional_prices[].kind required | string | Valores / values: payment_method, membership, app_only, coupon, other. |
data[].prices[].conditional_prices[].label required | string | As shown by the retailer. |
data[].prices[].conditional_prices[].price required | number | |
data[].prices[].conditional_prices[].payment_method | string | null | |
data[].prices[].conditional_prices[].membership_tier | string | null | |
data[].prices[].conditional_prices[].installments_count | integer | null | |
data[].prices[].conditional_prices[].interest_free | boolean | null | |
data[].prices[].unit_price | object | null | |
data[].prices[].unit_price.amount required | number | |
data[].prices[].unit_price.per required | string | Valores / values: kg, l, unit, m, m2. |
data[].prices[].promotions | Promotion[] | |
data[].prices[].promotions[].type required | string | Valores / values: multi_buy, nth_unit, percent_off, amount_off, bundle, gift, other. |
data[].prices[].promotions[].label required | string | As shown by the retailer, e.g. "2 x $2.990". |
data[].prices[].promotions[].min_quantity | integer | null | |
data[].prices[].promotions[].effective_unit_price | number | null | Price per item when the promotion applies. |
data[].prices[].promotions[].requires_card | string | null | Payment method required, if any. |
data[].prices[].promotions[].valid_until | string (date) | null | |
data[].prices[].availability required | string | Valores / values: in_stock, out_of_stock, limited, unknown. |
data[].prices[].tax_included | boolean | As shown by the retailer (observed). |
data[].prices[].tax_rate | number | null | Derived. Main VAT rate for this country and category, null when not known. |
data[].prices[].price_ex_tax | number | null | Derived from price and tax_rate. Null when tax_rate is null. |
data[].prices[].tax_rule_id | string | null | Versioned rule used to derive tax_rate. |
data[].prices[].other_taxes_included | boolean | null | True when other taxes remain in price_ex_tax (e.g. Chile IABA on sweetened drinks). |
data[].prices[].installments | object | |
data[].prices[].observed_at required | string (date-time) | |
data[].prices[].observed_local_date | string (date) | Capture date in the retailer time zone. Daily series use this date. |
data[].prices[].capture_method required | string | How the price was obtained, part of the provenance with url and observed_at. public_page: read from the retailer's public web page (HTML, JSON-LD or the page payload). public_api: an open, unauthenticated JSON endpoint of the retailer's own site. retailer_feed: delivered by the retailer under an agreement. open_data: a public dataset published by a government or third party. Valores / values: public_page, public_api, retailer_feed, open_data. |
data[].prices[].quality_status | string | warning when a validation flagged the observation (price jump, zero, unusual unit). Quarantined observations are never served. Valores / values: ok, warning. |
data[].prices[].quality_flags | string[] | Why the price was flagged. The price is delivered as published, never corrected. discount_over_85: more than 85% off the list price. round_price_low: a round price of CLP 1,000 or less. Both often mean a placeholder price or a store error. |
data[].prices[].corrected | boolean | True when the observation was amended after capture (the original is kept). |
data[].prices[].converted | Converted | |
data[].prices[].converted.currency required | string | |
data[].prices[].converted.price required | number | |
data[].prices[].converted.list_price | number | null | |
data[].prices[].converted.card_price | number | null | |
data[].prices[].converted.unit_price | number | null | |
data[].prices[].converted.fx_rate required | number | Units of target currency per unit of source currency. |
data[].prices[].converted.fx_date required | string (date) | Publication date of the rate used (last published on or before the observation date). |
data[].prices[].converted.fx_source | string | |
data[].prices[].converted.fx_method | string | Valores / values: direct, cross. |
data[].prices[].retailer required | RetailerRef | |
data[].prices[].retailer.id required | string | |
data[].prices[].retailer.name required | string | |
data[].prices[].offer_id required | string | |
data[].prices[].store_id | string | null | Null when the price is national/online. |
data[].prices[].url required | string (uri) | |
data[].prices[].title_original required | string | |
data[].prices[].seller | Seller | Who sells the offer. On marketplaces it is a third party; name is null when the seller is a natural person (no personal data). |
data[].prices[].seller.id required | string | |
data[].prices[].seller.name required | string | null | |
data[].prices[].seller.is_retailer_itself required | boolean | |
data[].prices[].match required | Match | How the offer was linked to the canonical product. |
data[].prices[].match.method required | string | singleton: the offer matched nothing else and is its own product. Valores / values: gtin, rules, model, manual, singleton. |
data[].prices[].match.confidence required | number | |
data[].prices[].match.kind required | string | identical: the same item. pack: the offer is N units of the product (pack_ratio), comparable by unit price. equivalent: a declared substitute of another brand or lab, not the same item. Valores / values: identical, pack, equivalent. |
data[].prices[].match.pack_ratio | number | null | Units of the product in the offer, for kind pack. |
meta required | Meta |
meta carries the cost, the source line to quote, the language, the currency and notices (see Conventions).