Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the KuantoKusta API page →
E-commerce & Marketplaces

KuantoKusta API & Scraper

KuantoKusta (kuantokusta.pt) is Portugal's largest price comparison site and also a marketplace: some offers are bought on the shop's own site, others through KuantoKusta's checkout.

6 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

This API reads it as JSON, in euros, logged out. `search` takes product words and returns products with their lowest price, number of offers, brand and whether they can be bought on KuantoKusta; price range, brand, marketplace and good-deal filters and five sorts are available, with facet counts in the same response. `category` lists one category with the same filters plus brand and feature ids, and `categories` walks the category tree. `offers` returns every offer for one product: the store, the store's own offer title, the price, the shipping cost and the total the site prints (price plus shipping), the delivery window, and whether the row is a store offer or a KuantoKusta marketplace offer. The cheapest offer and the cheapest total are computed from the rows; the highlighted buy box and featured rows are flagged, because neither is the cheapest by rule. `price_history` is the site's own daily lowest and average price for the last 30 or 90 days, checked against the product's page on every call. `product` adds EAN and SKU codes, the spec sheet, the description, colour and storage variations and refurbished alternatives.

Reference

What a KuantoKusta field actually contains

Fields that read differently from how they look. Every row was measured against the live site on 2026-10-15.

FieldWhat it holds
price_min (search, category, product)The lowest offer price for the product, in euros. It equalled the cheapest row of the offer list on 10 of 10 products, and the price on the product page on 10 of 10 search rows and 5 of 5 category rows.
offers[].offer_typestore: bought on the shop's own website. marketplace: bought through KuantoKusta's checkout ("Comprar no KuantoKusta"), with a delivery window and loyalty points. 8 of 10 sampled products had both kinds.
offers[].total_priceprice + shipping_cost, the same Total the product page prints ("1.649,00 € Envio + 3,90 € Total 1.652,90 €"). Every Total printed on 6 product pages (up to 15 per page) was found among the API's totals: 0 mismatches.
offers[].shipping_cost, free_shippingThe shipping the store publishes (its minimum). free_shipping is true when that is 0 €, which is what the page prints as "Envio Grátis!". free_shipping_programme is the site's separate free-shipping badge: Fnac Portugal charged 0 € without it.
buy_box_offer, is_featuredThe highlighted "Comprar no KuantoKusta" box and the featured rows the page shows first. Neither is the cheapest by rule: on an iPhone 18 Pro Max the buy box was 1,799 € while the cheapest store sold at 1,596 €. Use cheapest_offer and cheapest_total_offer.
total, total_capped, matching_totalThe site's search total stops at 1,000 (21 pages of 48). "iphone 17" printed 1,000 while the site's own section counts add up to 42,203; total_capped marks it and matching_total carries the full count. Category totals are not capped (Smartphones 1,979).
price_history.points[]One point per day: min_price (the day's lowest offer) and avg_price (the day's average offer). The site states that Amazon.es prices are not included. Each call is checked against the product page's own published average price; colour variants of one phone share 0 of 31 points, so the series is per product, not per product family.
variations, refurbishedColour and storage siblings and the refurbished grade of the same model, each with its own product_id that works in product, offers and price_history (3 of 3 checked in each of two runs).

Prices are in euros as the site prints them for Portugal.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/kuantokusta/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "iphone 17"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "kuantokusta",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1449.9,
    "record_count": 48,
    "bytes": 108113,
    "cache_hit": false,
    "total": 1000,
    "upstream_requests": 1,
    "charged_credits": 2,
    "version": "0.1.0",
    "request_id": "32e9a8827303410d",
    "queue_ms": 1.7,
    "fetched_at": "2026-10-15T17:02:55.387Z"
  },
  "data": {
    "results": [
      {
        "row_type": "product",
        "product_id": "11928783",
        "title": "Apple iPhone 17 Pro Max 6.9\" 256GB Silver",
        "brand": "Apple",
        "category": "Smartphones",
        "url": "https://www.kuantokusta.pt/p/11928783/apple-iphone-17-pro-max-69-256gb-silver",
        "image": "https://s1.kuantokusta.pt/img_upload/produtos_comunicacoes/1540131_2_apple-iphone-17-pro-max-6-9-256gb-silver.jpg",
        "price_min": 1187.49,
        "currency": "EUR",
        "offer_count": 25,
        "marketplace_available": true,
        "split_payment": false,
        "adult_only": false,
        "badges": [
          "isBestSeller"
        ],
        "rating_count": 5,
        "review_count": 6
      },
      {
        "row_type": "product",
        "product_id": "11928759",
        "title": "Apple iPhone 17 6.3\" 256GB White",
        "brand": "Apple",
        "category": "Smartphones",
        "url": "https://www.kuantokusta.pt/p/11928759/apple-iphone-17-63-256gb-white",
        "image": "https://s1.kuantokusta.pt/img_upload/produtos_comunicacoes/1540107_2_apple-iphone-17-6-3-256gb-white.jpg",
        "price_min": 910,
        "currency": "EUR",
        "offer_count": 30,
        "marketplace_available": true,
        "split_payment": false,
        "adult_only": false,
        "badges": [],
        "rating_count": 0,
        "review_count": 0
      },
      {
        "row_type": "product",
        "product_id": "11928769",
        "title": "Apple iPhone 17 Pro 6.3\" 256GB Silver",
        "brand": "Apple",
        "category": "Smartphones",
        "url": "https://www.kuantokusta.pt/p/11928769/apple-iphone-17-pro-63-256gb-silver",
        "image": "https://s1.kuantokusta.pt/img_upload/produtos_comunicacoes/1540117_2_apple-iphone-17-pro-6-3-256gb-silver.jpg",
        "price_min": 1106,
        "currency": "EUR",
        "offer_count": 24,
        "marketplace_available": true,
        "split_payment": false,
        "adult_only": false,
        "badges": [],
        "rating_count": 5,
        "review_count": 2
      }
    ],
    "count": 48,
    "total": 1000,
    "total_capped": true,
    "matching_total": 42312,
    "page": 1,
    "pages": 21,
    "has_more": true,
    "facets": {
      "attributes": [
        {
          "name": "Tamanho de Ecrã",
          "field": "tamanho_de_ecra_s",
          "values": [
            "[trimmed-depth]",
            "[trimmed-depth]"
          ]
        },
        {
          "name": "Cor",
          "field": "cor_s",
          "values": [
            "[trimmed-depth]",
            "[trimmed-depth]",
            "[trimmed-depth]"
          ]
        },
        {
          "name": "Conetividade",
          "field": "conectividade_s",
          "values": [
            "[trimmed-depth]",
            "[trimmed-depth]"
          ]
        }
      ],
      "purchase_options": [
        {
          "label": "Comprar no KuantoKusta",
          "value": "isMarketplace",
          "count": 34146,
          "active": false
        },
        {
          "label": "Boa compra",
          "value": "isHotDeal",
          "count": 2271,
          "active": false
        },
        {
          "label": "Pagamento em 3 ou 4x",
          "value": "hasSplitPayment",
          "count": 367,
          "active": false
        }
      ],
      "area": [
        {
          "label": "Smartphones e Acessórios",
          "value": "Smartphones e Acessórios",
          "count": 42209,
          "active": false
        },
        {
          "label": "Auto e Moto",
          "value": "Auto e Moto",
          "count": 64,
          "active": false
        },
        {
          "label": "Informática",
          "value": "Informática",
          "count": 22,
          "active": false
        }
      ],
      "price_buckets": [
        {
          "label": "Menos de 9€",
          "value": "_9",
          "count": 9050,
          "active": false
        },
        {
          "label": "9€ a 31€",
          "value": "9_31",
          "count": 29926,
          "active": false
        },
        {
          "label": "Mais de 31€",
          "value": "31_",
          "count": 2689,
          "active": false
        }
      ],
      "price_range": {
        "min": 0.31,
        "max": 3899
      },
      "brand": [
        {
          "label": "skyhe",
          "value": "skyhe",
          "count": 9450,
          "active": false
        },
        {
          "label": "OEM",
          "value": "OEM",
          "count": 8782,
          "active": false
        },
        {
          "label": "Accetel",
          "value": "Accetel",
          "count": 6404,
          "active": false
        }
      ]
    },
    "sort": "relevance",
    "query": "iphone 17",
    "redirected_to_category": null
  }
}
Actions

What the KuantoKusta API does

ActionDescriptionConcrete use caseKey params
searchKeyword search on KuantoKusta (Portugal, EUR). Each row is a product with its lowest offer price, number of offers, brand, category and whether it can be bought through KuantoKusta's checkout. Filter by price range, brand, marketplace or good-deal; sort by popularity, price, name or newest. The site's total stops at 1000 (`total_capped`); `matching_total` is its own full count. Some words are a category to the site (e.g. `berbequim`): it sends the visitor to that category listing, and so does this API (`redirected_to_category`).Pricing teams call search to get keyword search on KuantoKusta (Portugal, EUR).query, sort, page, price_min, price_max, ...
categoryOne KuantoKusta category listing (e.g. 157 = Smartphones): the same product rows as search, with price range, brand (`brand_id`), feature (`feature_id`), marketplace and good-deal filters, sort and paging. Takes the numeric id or the category URL (/c/<id>/...). Parent sections (/a/<id>/...) are listed by `categories`.Marketplace operators call category to get one KuantoKusta category listing (e.g.category_id, sort, page, price_min, price_max, ...
categoriesKuantoKusta's category tree: without `area_id` the top-level sections; with an `area_id` its children. A child with `is_leaf: true` is a category for `category`; otherwise pass its id here again.Catalog enrichment teams call categories to get kuantoKusta's category tree.area_id
productOne product on KuantoKusta: title, brand, EAN and SKU codes, category path, images, description, the full spec sheet, lowest and highest price, number of offers, stores and marketplace offers, the cheapest offer, the cheapest offer with shipping, the highlighted buy-box offer, the site's 30-day average price, colour / storage variations and refurbished alternatives (each its own product id).Retail analysts call product to get one product on KuantoKusta.product_id
offersEvery offer for one product: store (id, name, page, logo, rating count), the store's own offer title, price, previous price, shipping cost, total (price + shipping, as the site prints it), delivery window, fast / next-day delivery, islands, split payment, loyalty points, and the row type: `store` (bought on the shop's own site) or `marketplace` (bought through KuantoKusta). Featured rows and the buy box are flagged; the cheapest offer and cheapest total are computed.Pricing teams call offers to get every offer for one product.product_id, sort, offer_type
price_historyThe site's own price history for one product: the lowest and the average offer price on every day of the last 30 or 90 days, with the period's lowest point. Every call checks the series against the product's own page (its published average price on its date) and refuses a series that does not match. The site states its history does not include Amazon.es prices.Marketplace operators call price_history to get the site's own price history for one product.product_id, period
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/kuantokusta/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"iphone 17"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.kuantokusta.search with {"query":"iphone 17"}.
Use cases

Who uses this API and why

  • Track every Portuguese store's price, shipping and total for a list of products by EAN.
  • Find the cheapest delivered price, not just the cheapest sticker price.
  • See which products can be bought through KuantoKusta's own checkout and at what price.
  • Judge today's price against 90 days of daily lows and averages.
  • Map a category with lowest prices, offer counts and brands, filtered by price or feature.
FAQ

Questions developers ask before integrating

Do I need a KuantoKusta account?

No. Everything is read logged out.

Does the total include shipping?

Yes. total_price is price plus shipping_cost, the same Total the product page prints for each offer. Every printed Total on 6 product pages matched an API total.

Which offers can be bought on KuantoKusta itself?

Rows with offer_type marketplace. Rows with offer_type store send the buyer to the shop's own site. Filter with offer_type=marketplace, or use marketplace_only on search and category.

Is the buy box the cheapest offer?

Not necessarily. On an iPhone 18 Pro Max the highlighted buy box was 1,799 € and the cheapest store 1,596 €. cheapest_offer and cheapest_total_offer are computed from all rows.

How far back does price_history go?

30 days (31 points) or 90 days (91 points), the two ranges the site offers. Each point is the day's lowest and average offer price. Amazon.es prices are not included, as the site itself states.

Is the price history really the product I asked for?

Every call compares the series with the average price printed on the product's own page and refuses a series that does not match. In the runs on 2026-10-15, 10 of 10 products were verified.

Why does search say total 1000?

The site stops counting search results at 1,000. total_capped is true then, and matching_total carries the site's full count ("capa iphone": 37,755). Category listings are not capped.

Which filters are there?

Price range, brand, marketplace-only and good-deal-only on search; the same plus brand_id and feature_id on category. Checked against the unfiltered count in the same run: "tv 55" 734 → 300 to 600 € 163, Samsung 68, marketplace 441; Smartphones 1,979 → 300 to 600 € 539, Xiaomi 461, black 513.

What is the KuantoKusta API?

KuantoKusta API is a ReefAPI endpoint group for portugal's price comparison site: every store's price, shipping and total for a product, kuantokusta marketplace offers, and 30 or 90 days of price history. It returns live JSON through POST requests under /kuantokusta/v1.

Is the KuantoKusta API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. KuantoKusta calls use the same shared credit balance as every other ReefAPI engine.

Do I need a KuantoKusta login or account?

No login to KuantoKusta is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the KuantoKusta data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the KuantoKusta API use?

KuantoKusta actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call KuantoKusta from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call kuantokusta actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / kuantokusta

KuantoKusta

Portugal's price comparison site: every store's price, shipping and total for a product, KuantoKusta marketplace offers, and 30 or 90 days of price history.

base /kuantokusta/v16 endpoints
post/kuantokusta/v1/category2 credits

One KuantoKusta category listing (e.g. 157 = Smartphones): the same product rows as search, with price range, brand (`brand_id`), feature (`feature_id`), marketplace and good-deal filters, sort and paging. Takes the numeric id or the category URL (/c/<id>/...). Parent sections (/a/<id>/...) are listed by `categories`.

ParameterAllowed / rangeDescription
category_idrequired—Numeric leaf category id (`category.category_id` of a product, a `categories` row with is_leaf true) or a category URL.
sort = relevanceoptionalrelevance · price_asc · price_desc · name · newestResult order.
page = 1optional1–500Result page (48 rows per page).
price_minoptional0–Lowest price in EUR. The site compares the product's lowest offer price (`price_min` of the row).
price_maxoptional0–Highest price in EUR (same comparison).
marketplace_only = falseoptional—Only products that can be bought through KuantoKusta's own checkout ("Comprar no KuantoKusta").
good_deal_only = falseoptional—Only products the site marks as a good buy ("Boa compra").
brand_idoptional—Brand id from `facets.brand[].brand_id` (765 = Samsung in Smartphones).
feature_idoptional—Feature value id from `facets.attributes[].values[].feature_id` (12939 = 5G in Smartphones).
Try in playground →
post/kuantokusta/v1/categories1 credit

KuantoKusta's category tree: without `area_id` the top-level sections; with an `area_id` its children. A child with `is_leaf: true` is a category for `category`; otherwise pass its id here again.

ParameterAllowed / rangeDescription
area_idoptional—Section id (/a/<id>/...) from a previous call or a product's `category_path`.
Try in playground →
post/kuantokusta/v1/product2 credits

One product on KuantoKusta: title, brand, EAN and SKU codes, category path, images, description, the full spec sheet, lowest and highest price, number of offers, stores and marketplace offers, the cheapest offer, the cheapest offer with shipping, the highlighted buy-box offer, the site's 30-day average price, colour / storage variations and refurbished alternatives (each its own product id).

ParameterAllowed / rangeDescription
product_idrequired—Product id: `product_id` of a search / category row, of a variation or refurbished option, or a kuantokusta.pt product URL (/p/<id>/...).
Try in playground →
post/kuantokusta/v1/offers2 credits

Every offer for one product: store (id, name, page, logo, rating count), the store's own offer title, price, previous price, shipping cost, total (price + shipping, as the site prints it), delivery window, fast / next-day delivery, islands, split payment, loyalty points, and the row type: `store` (bought on the shop's own site) or `marketplace` (bought through KuantoKusta). Featured rows and the buy box are flagged; the cheapest offer and cheapest total are computed.

ParameterAllowed / rangeDescription
product_idrequired—Product id: `product_id` of a search / category row, of a variation or refurbished option, or a kuantokusta.pt product URL (/p/<id>/...).
sort = siteoptionalsite · price_asc · total_ascOffer order.
offer_type = alloptionalall · store · marketplaceWhich offers.
Try in playground →
post/kuantokusta/v1/price_history3 credits

The site's own price history for one product: the lowest and the average offer price on every day of the last 30 or 90 days, with the period's lowest point. Every call checks the series against the product's own page (its published average price on its date) and refuses a series that does not match. The site states its history does not include Amazon.es prices.

ParameterAllowed / rangeDescription
product_idrequired—Product id: `product_id` of a search / category row, of a variation or refurbished option, or a kuantokusta.pt product URL (/p/<id>/...).
period = 30doptional30d · 90dHow far back (the site offers 30 and 90 days only).
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.