KaBuM!
Brazilian PC hardware prices: the PIX cash price and the instalment price kept apart, stock, specs and marketplace sellers.
/kabum/v1/search2 creditsSearch KaBuM! by keyword. Every row carries BOTH Brazilian prices — `price_brl` (the instalment/card reference) and `cash_price_brl` (the à-vista PIX/boleto price) — plus stock, the instalment plan, whether KaBuM or a marketplace seller ships it, and the `product_id` every other action takes. `facets` in the response lists the brands and category facets this query accepts, so the next call can filter without guessing.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | required | — | What a Brazilian shopper would type: a product name, a model ('rtx 5070', 'ryzen 7 9800x3d'), or a category phrase in Portuguese ('ssd nvme', 'teclado mecanico'). |
| brands | optional | — | Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error. |
| price_min | optional | 0– | Minimum price in BRL (reais, not cents). |
| price_max | optional | 0– | Maximum price in BRL (reais, not cents). |
| only_offers = false | optional | — | Only products KaBuM currently flags as on offer (ssd: 864 → 39 on 2026-09-23). |
| only_kabum = false | optional | — | Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103). |
| only_prime = false | optional | — | Only products with a KaBuM Prime exclusive price. |
| only_free_shipping = false | optional | — | Only products KaBuM highlights as free shipping (ssd: 864 → 88). |
| only_open_box = false | optional | — | Only open-box (returned/repackaged) units. |
| attributes | optional | — | Category-specific facets, as `{facet name: [values]}` taken verbatim from `facets.attributes` of a previous response — e.g. {"Memória": ["8 GB"]} on graphics cards (447 → 79). |
| sort = relevance | optional | relevance · most_searched · price_asc · price_desc · offers · newest · most_rated · brand | Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here. |
| page = 1 | optional | 1– | 1-based page number. `total_results` and `total_pages` in the response tell you how far you can go. |
| limit = 20 | optional | 1–120 | Rows per page (1-120). The source serves at most 120 however many you ask for. |
/kabum/v1/category2 creditsWalk one KaBuM! category without a keyword — the way to build a price database for a whole department. Takes the category's URL path (`hardware/placa-de-video-vga`), supports the same filters and sorts as `search`, and returns the source's own breadcrumb so you know exactly which shelf you are reading.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| category | required | — | Category path as it appears in a kabum.com.br URL: 'hardware', 'hardware/placa-de-video-vga' or 'hardware/placa-de-video-vga/placa-de-video-amd'. A full kabum.com.br category URL is accepted too. Read a product's `category_slugs` to discover valid paths. |
| brands | optional | — | Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error. |
| price_min | optional | 0– | Minimum price in BRL (reais, not cents). |
| price_max | optional | 0– | Maximum price in BRL (reais, not cents). |
| only_offers = false | optional | — | Only products KaBuM currently flags as on offer (ssd: 864 → 39 on 2026-09-23). |
| only_kabum = false | optional | — | Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103). |
| only_prime = false | optional | — | Only products with a KaBuM Prime exclusive price. |
| only_free_shipping = false | optional | — | Only products KaBuM highlights as free shipping (ssd: 864 → 88). |
| only_open_box = false | optional | — | Only open-box (returned/repackaged) units. |
| attributes | optional | — | Category-specific facets, as `{facet name: [values]}` taken verbatim from `facets.attributes` of a previous response — e.g. {"Memória": ["8 GB"]} on graphics cards (447 → 79). |
| sort = relevance | optional | relevance · most_searched · price_asc · price_desc · offers · newest · most_rated · brand | Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here. |
| page = 1 | optional | 1– | 1-based page number. `total_results` and `total_pages` in the response tell you how far you can go. |
| limit = 20 | optional | 1–120 | Rows per page (1-120). The source serves at most 120 however many you ask for. |
/kabum/v1/product1 creditOne product in full: both prices, the exact PIX price and EVERY instalment plan KaBuM offers (boleto, PIX, credit card 1-12x, NuPay) with the real amount per plan, live stock, the unrounded rating, the marketplace seller with its company name and CNPJ when it is not KaBuM's own stock, the spec sheet parsed into sections, warranty, weight and the Anatel/Inmetro codes. Two upstream calls are merged into this one answer.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| product_id | required | — | The numeric KaBuM product code (459144) or a kabum.com.br/produto/... URL. Every search row returns it. |
| include_specs = true | optional | — | Fetch the spec sheet, the unrounded rating and the regulatory codes (one extra upstream call, ~12 KB). Turn it off for a price-only read. |
/kabum/v1/products1 creditUp to 20 products in ONE upstream call: both prices, the instalment plan, stock, rating and seller for each. This is how a catalogue of thousands is re-priced every morning without spending a call per product. Ids KaBuM no longer serves are simply absent and listed in `missing`.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| product_ids | required | –20 | Up to 20 KaBuM product codes or product URLs. Accepts a JSON array or a comma-separated string. The source returns at most 20 rows per call and silently drops the rest, so more than that is rejected here instead. |
/kabum/v1/suggestfreeWhat KaBuM's own search box suggests for a prefix — the phrases Brazilian shoppers actually type, straight from the site's autocomplete. ~200 bytes a call, so it is the cheap way to expand a keyword list before searching.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | required | — | A partial search phrase, at least 2 characters. KaBuM rejects a single character. |
/kabum/v1/deals3 creditsThe products inside one of KaBuM's running campaigns (its 'promoção' pages). Same rows as `search`, with the campaign's own title. KaBuM publishes no campaign index, so the slugs that answered when this engine was built are listed on the parameter.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| campaign = HARDWAREKABUM | optional | HARDWAREKABUM · COMPUTADORKABUM · perifericoskabum · MUNDOGAMER · ESPACOGAMER | Which campaign to read. An unknown slug returns NOT_FOUND — KaBuM publishes no campaign index, so these are the ones verified live. |
| brands | optional | — | Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error. |
| price_min | optional | 0– | Minimum price in BRL (reais, not cents). |
| price_max | optional | 0– | Maximum price in BRL (reais, not cents). |
| only_kabum = false | optional | — | Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103). |
| sort = relevance | optional | relevance · most_searched · price_asc · price_desc · offers · newest · most_rated · brand | Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here. |
| page = 1 | optional | 1– | 1-based page number. `total_results` and `total_pages` in the response tell you how far you can go. |
| limit = 20 | optional | 1–120 | Rows per page (1-120). The source serves at most 120 however many you ask for. |
/kabum/v1/featured2 creditsKaBuM's own curated front-page lists: `highlights` (what it is pushing right now) and `releases` (what has just arrived). Same rows as `search`. Useful for catching new SKUs and price moves without knowing a keyword.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| list = highlights | optional | highlights · releases | Which curated list to read. |
| brands | optional | — | Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error. |
| price_min | optional | 0– | Minimum price in BRL (reais, not cents). |
| price_max | optional | 0– | Maximum price in BRL (reais, not cents). |
| only_kabum = false | optional | — | Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103). |
| sort = relevance | optional | relevance · most_searched · price_asc · price_desc · offers · newest · most_rated · brand | Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here. |
| page = 1 | optional | 1– | 1-based page number. `total_results` and `total_pages` in the response tell you how far you can go. |
| limit = 20 | optional | 1–120 | Rows per page (1-120). The source serves at most 120 however many you ask for. |
curl -X POST https://api.reefapi.com/kabum/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}