Docs / Precios actuales de un producto en cada tiendaCurrent prices of a product at every retailerMarkdown

Precios actuales de un producto en cada tienda

GEThttps://pricto.dev/v1/products/{product_id}/prices

One row per retailer offer matched to the product: in stock first, then by price ascending. Use as_of to get the prices that were in force on a past date.

CréditosMCP
1 per retailer offer returnedget_prices

Parámetros#

ParámetroEnTipoDescripción
product_id requeridopathstringCanonical product ID (prd_...). A GTIN is also accepted here and resolved.
max_creditsquerynumberSpend at most this many credits on this call. Results are cut to fit and meta.usage.truncated is true.
dry_runquerybooleanReturn the quote in meta.usage with data set to null, without charging. Default: false.
retailerquerystringOne or more retailer IDs, comma separated (e.g. cl-jumbo,cl-unimarc).
locationquerystringStore ID (str_...), administrative area as CL:13114 (country and comuna CUT code) or a place name ("Las Condes"). Only affects retailers whose prices vary by location; the resolved value is echoed in meta.location.
as_ofquerystring (date)Return the prices that were in force at the end of this date instead of the latest.
include_unavailablequerybooleanInclude offers that are out of stock. Default: true.
min_confidencequerynumberOnly include offers whose match confidence is at least this value. Default 0.85: below it an offer is not grouped with the product automatically. Default: 0.85.
match_kindsquerystringMatch kinds to include, comma separated. Default identical. Add pack for offers that are N units of the product (compare by unit price, see match.pack_ratio) and equivalent for declared substitutes (another brand or lab), which are not the same item. Default: identical.
langquerystringResponse language as a BCP 47 tag (es, es-CL, en, en-US...). Supported today: es, en. An unsupported language falls back to English with a warning, never an error. Falls back to Accept-Language, then to the account default. The resolved value is in meta.lang.
currencyquerystringAdd converted amounts in this ISO 4217 currency. local (default) returns source currency only. Default: local.

Respuesta#

200 Prices by retailer.

CampoTipoDescripción
data requeridoobject
data.product requeridoProductSummary
data.product.id requeridostring
data.product.name requeridostring
data.product.brand requeridoBrandRef
data.product.brand.id requeridostring
data.product.brand.name requeridostring
data.product.category requeridoCategoryRef
data.product.category.id requeridostring
data.product.category.label requeridostring
data.product.category.pathstring[]
data.product.sizeobject
data.product.gtinstring[]
data.product.image_urlstring | null
data.product.price_summary requeridoPriceSummary
data.product.price_summary.currency requeridostring
data.product.price_summary.min requeridonumber | null
data.product.price_summary.max requeridonumber | null
data.product.price_summary.mediannumber | null
data.product.price_summary.offers_count requeridointeger
data.product.price_summary.retailers_count requeridointeger
data.product.price_summary.bestobject | null
data.product.price_summary.observed_atstring (date-time) | null
data.product.price_summary.convertedobject
data.product.scorenumberRelevance score, search only.
data.prices requeridoRetailerPrice[]
data.prices[].currency requeridostring
data.prices[].price requeridonumber
data.prices[].list_price requeridonumber
data.prices[].sale_pricenumber | null
data.prices[].card_pricenumber | nullConvenience: the lowest price in conditional_prices that requires a payment method or membership.
data.prices[].card_labelstring | null
data.prices[].conditional_pricesConditionalPrice[]Every price that requires a condition other than quantity (payment method, loyalty tier, app, coupon), as published.
data.prices[].conditional_prices[].kind requeridostringValores / values: payment_method, membership, app_only, coupon, other.
data.prices[].conditional_prices[].label requeridostringAs shown by the retailer.
data.prices[].conditional_prices[].price requeridonumber
data.prices[].conditional_prices[].payment_methodstring | null
data.prices[].conditional_prices[].membership_tierstring | null
data.prices[].conditional_prices[].installments_countinteger | null
data.prices[].conditional_prices[].interest_freeboolean | null
data.prices[].unit_priceobject | null
data.prices[].unit_price.amount requeridonumber
data.prices[].unit_price.per requeridostringValores / values: kg, l, unit, m, m2.
data.prices[].promotionsPromotion[]
data.prices[].promotions[].type requeridostringValores / values: multi_buy, nth_unit, percent_off, amount_off, bundle, gift, other.
data.prices[].promotions[].label requeridostringAs shown by the retailer, e.g. "2 x $2.990".
data.prices[].promotions[].min_quantityinteger | null
data.prices[].promotions[].effective_unit_pricenumber | nullPrice per item when the promotion applies.
data.prices[].promotions[].requires_cardstring | nullPayment method required, if any.
data.prices[].promotions[].valid_untilstring (date) | null
data.prices[].availability requeridostringValores / values: in_stock, out_of_stock, limited, unknown.
data.prices[].tax_includedbooleanAs shown by the retailer (observed).
data.prices[].tax_ratenumber | nullDerived. Main VAT rate for this country and category, null when not known.
data.prices[].price_ex_taxnumber | nullDerived from price and tax_rate. Null when tax_rate is null.
data.prices[].tax_rule_idstring | nullVersioned rule used to derive tax_rate.
data.prices[].other_taxes_includedboolean | nullTrue when other taxes remain in price_ex_tax (e.g. Chile IABA on sweetened drinks).
data.prices[].installmentsobject
data.prices[].observed_at requeridostring (date-time)
data.prices[].observed_local_datestring (date)Capture date in the retailer time zone. Daily series use this date.
data.prices[].capture_method requeridostringHow 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_statusstringwarning when a validation flagged the observation (price jump, zero, unusual unit). Quarantined observations are never served. Valores / values: ok, warning.
data.prices[].quality_flagsstring[]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[].correctedbooleanTrue when the observation was amended after capture (the original is kept).
data.prices[].convertedConverted
data.prices[].converted.currency requeridostring
data.prices[].converted.price requeridonumber
data.prices[].converted.list_pricenumber | null
data.prices[].converted.card_pricenumber | null
data.prices[].converted.unit_pricenumber | null
data.prices[].converted.fx_rate requeridonumberUnits of target currency per unit of source currency.
data.prices[].converted.fx_date requeridostring (date)Publication date of the rate used (last published on or before the observation date).
data.prices[].converted.fx_sourcestring
data.prices[].converted.fx_methodstringValores / values: direct, cross.
data.prices[].retailer requeridoRetailerRef
data.prices[].retailer.id requeridostring
data.prices[].retailer.name requeridostring
data.prices[].offer_id requeridostring
data.prices[].store_idstring | nullNull when the price is national/online.
data.prices[].url requeridostring (uri)
data.prices[].title_original requeridostring
data.prices[].sellerSellerWho 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 requeridostring
data.prices[].seller.name requeridostring | null
data.prices[].seller.is_retailer_itself requeridoboolean
data.prices[].match requeridoMatchHow the offer was linked to the canonical product.
data.prices[].match.method requeridostringsingleton: the offer matched nothing else and is its own product. Valores / values: gtin, rules, model, manual, singleton.
data.prices[].match.confidence requeridonumber
data.prices[].match.kind requeridostringidentical: 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_rationumber | nullUnits of the product in the offer, for kind pack.
data.summary requeridoPriceSummary
data.summary.currency requeridostring
data.summary.min requeridonumber | null
data.summary.max requeridonumber | null
data.summary.mediannumber | null
data.summary.offers_count requeridointeger
data.summary.retailers_count requeridointeger
data.summary.bestobject | null
data.summary.best.retailerRetailerRef
data.summary.best.offer_idstring
data.summary.best.pricenumber
data.summary.observed_atstring (date-time) | null
data.summary.convertedobject
data.summary.converted.currencystring
data.summary.converted.minnumber | null
data.summary.converted.maxnumber | null
data.summary.converted.fx_ratenumber
data.summary.converted.fx_datestring (date)
data.summary.converted.fx_sourcestring
data.summary.converted.fx_methodstringValores / values: direct, cross.
meta requeridoMeta

meta trae el costo, la fuente para citar, el idioma, la moneda y los avisos (ver Convenciones).

Errores#

Current prices of a product at every retailer

GEThttps://pricto.dev/v1/products/{product_id}/prices

One row per retailer offer matched to the product: in stock first, then by price ascending. Use as_of to get the prices that were in force on a past date.

CreditsMCP
1 per retailer offer returnedget_prices

Parameters#

ParameterInTypeDescription
product_id requiredpathstringCanonical product ID (prd_...). A GTIN is also accepted here and resolved.
max_creditsquerynumberSpend at most this many credits on this call. Results are cut to fit and meta.usage.truncated is true.
dry_runquerybooleanReturn the quote in meta.usage with data set to null, without charging. Default: false.
retailerquerystringOne or more retailer IDs, comma separated (e.g. cl-jumbo,cl-unimarc).
locationquerystringStore ID (str_...), administrative area as CL:13114 (country and comuna CUT code) or a place name ("Las Condes"). Only affects retailers whose prices vary by location; the resolved value is echoed in meta.location.
as_ofquerystring (date)Return the prices that were in force at the end of this date instead of the latest.
include_unavailablequerybooleanInclude offers that are out of stock. Default: true.
min_confidencequerynumberOnly include offers whose match confidence is at least this value. Default 0.85: below it an offer is not grouped with the product automatically. Default: 0.85.
match_kindsquerystringMatch kinds to include, comma separated. Default identical. Add pack for offers that are N units of the product (compare by unit price, see match.pack_ratio) and equivalent for declared substitutes (another brand or lab), which are not the same item. Default: identical.
langquerystringResponse language as a BCP 47 tag (es, es-CL, en, en-US...). Supported today: es, en. An unsupported language falls back to English with a warning, never an error. Falls back to Accept-Language, then to the account default. The resolved value is in meta.lang.
currencyquerystringAdd converted amounts in this ISO 4217 currency. local (default) returns source currency only. Default: local.

Response#

200 Prices by retailer.

FieldTypeDescription
data requiredobject
data.product requiredProductSummary
data.product.id requiredstring
data.product.name requiredstring
data.product.brand requiredBrandRef
data.product.brand.id requiredstring
data.product.brand.name requiredstring
data.product.category requiredCategoryRef
data.product.category.id requiredstring
data.product.category.label requiredstring
data.product.category.pathstring[]
data.product.sizeobject
data.product.gtinstring[]
data.product.image_urlstring | null
data.product.price_summary requiredPriceSummary
data.product.price_summary.currency requiredstring
data.product.price_summary.min requirednumber | null
data.product.price_summary.max requirednumber | null
data.product.price_summary.mediannumber | null
data.product.price_summary.offers_count requiredinteger
data.product.price_summary.retailers_count requiredinteger
data.product.price_summary.bestobject | null
data.product.price_summary.observed_atstring (date-time) | null
data.product.price_summary.convertedobject
data.product.scorenumberRelevance score, search only.
data.prices requiredRetailerPrice[]
data.prices[].currency requiredstring
data.prices[].price requirednumber
data.prices[].list_price requirednumber
data.prices[].sale_pricenumber | null
data.prices[].card_pricenumber | nullConvenience: the lowest price in conditional_prices that requires a payment method or membership.
data.prices[].card_labelstring | null
data.prices[].conditional_pricesConditionalPrice[]Every price that requires a condition other than quantity (payment method, loyalty tier, app, coupon), as published.
data.prices[].conditional_prices[].kind requiredstringValores / values: payment_method, membership, app_only, coupon, other.
data.prices[].conditional_prices[].label requiredstringAs shown by the retailer.
data.prices[].conditional_prices[].price requirednumber
data.prices[].conditional_prices[].payment_methodstring | null
data.prices[].conditional_prices[].membership_tierstring | null
data.prices[].conditional_prices[].installments_countinteger | null
data.prices[].conditional_prices[].interest_freeboolean | null
data.prices[].unit_priceobject | null
data.prices[].unit_price.amount requirednumber
data.prices[].unit_price.per requiredstringValores / values: kg, l, unit, m, m2.
data.prices[].promotionsPromotion[]
data.prices[].promotions[].type requiredstringValores / values: multi_buy, nth_unit, percent_off, amount_off, bundle, gift, other.
data.prices[].promotions[].label requiredstringAs shown by the retailer, e.g. "2 x $2.990".
data.prices[].promotions[].min_quantityinteger | null
data.prices[].promotions[].effective_unit_pricenumber | nullPrice per item when the promotion applies.
data.prices[].promotions[].requires_cardstring | nullPayment method required, if any.
data.prices[].promotions[].valid_untilstring (date) | null
data.prices[].availability requiredstringValores / values: in_stock, out_of_stock, limited, unknown.
data.prices[].tax_includedbooleanAs shown by the retailer (observed).
data.prices[].tax_ratenumber | nullDerived. Main VAT rate for this country and category, null when not known.
data.prices[].price_ex_taxnumber | nullDerived from price and tax_rate. Null when tax_rate is null.
data.prices[].tax_rule_idstring | nullVersioned rule used to derive tax_rate.
data.prices[].other_taxes_includedboolean | nullTrue when other taxes remain in price_ex_tax (e.g. Chile IABA on sweetened drinks).
data.prices[].installmentsobject
data.prices[].observed_at requiredstring (date-time)
data.prices[].observed_local_datestring (date)Capture date in the retailer time zone. Daily series use this date.
data.prices[].capture_method requiredstringHow 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_statusstringwarning when a validation flagged the observation (price jump, zero, unusual unit). Quarantined observations are never served. Valores / values: ok, warning.
data.prices[].quality_flagsstring[]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[].correctedbooleanTrue when the observation was amended after capture (the original is kept).
data.prices[].convertedConverted
data.prices[].converted.currency requiredstring
data.prices[].converted.price requirednumber
data.prices[].converted.list_pricenumber | null
data.prices[].converted.card_pricenumber | null
data.prices[].converted.unit_pricenumber | null
data.prices[].converted.fx_rate requirednumberUnits of target currency per unit of source currency.
data.prices[].converted.fx_date requiredstring (date)Publication date of the rate used (last published on or before the observation date).
data.prices[].converted.fx_sourcestring
data.prices[].converted.fx_methodstringValores / values: direct, cross.
data.prices[].retailer requiredRetailerRef
data.prices[].retailer.id requiredstring
data.prices[].retailer.name requiredstring
data.prices[].offer_id requiredstring
data.prices[].store_idstring | nullNull when the price is national/online.
data.prices[].url requiredstring (uri)
data.prices[].title_original requiredstring
data.prices[].sellerSellerWho 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 requiredstring
data.prices[].seller.name requiredstring | null
data.prices[].seller.is_retailer_itself requiredboolean
data.prices[].match requiredMatchHow the offer was linked to the canonical product.
data.prices[].match.method requiredstringsingleton: the offer matched nothing else and is its own product. Valores / values: gtin, rules, model, manual, singleton.
data.prices[].match.confidence requirednumber
data.prices[].match.kind requiredstringidentical: 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_rationumber | nullUnits of the product in the offer, for kind pack.
data.summary requiredPriceSummary
data.summary.currency requiredstring
data.summary.min requirednumber | null
data.summary.max requirednumber | null
data.summary.mediannumber | null
data.summary.offers_count requiredinteger
data.summary.retailers_count requiredinteger
data.summary.bestobject | null
data.summary.best.retailerRetailerRef
data.summary.best.offer_idstring
data.summary.best.pricenumber
data.summary.observed_atstring (date-time) | null
data.summary.convertedobject
data.summary.converted.currencystring
data.summary.converted.minnumber | null
data.summary.converted.maxnumber | null
data.summary.converted.fx_ratenumber
data.summary.converted.fx_datestring (date)
data.summary.converted.fx_sourcestring
data.summary.converted.fx_methodstringValores / values: direct, cross.
meta requiredMeta

meta carries the cost, the source line to quote, the language, the currency and notices (see Conventions).

Errors#