KaBuM! API & Scraper
The KaBuM! API turns kabum.com.br, Brazil's biggest PC hardware and electronics retailer and marketplace, into clean JSON in seven actions.
🤖 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.
search takes a Portuguese keyword and returns rows with product_id, title, url, brand, category_path, price_brl, cash_price_brl, installments, stock, rating_count and the seller when a third party ships it; category walks a whole department by its URL path; product returns one product in full, with the exact PIX price, every payment plan KaBuM offers (PIX, boleto, NuPay and the credit card ladder from 1x to 12x with the real amount per plan), live stock, the order limit, the unrounded rating, warranty, weight, the spec sheet parsed into named sections, and the marketplace seller with its company name, CNPJ and state; products asks for up to 20 products in ONE call, which is how a catalogue is re-priced every morning; suggest returns KaBuM's own search-box suggestions; deals reads a running campaign; featured reads KaBuM's highlighted and newly released products. Brazilian shops quote two prices side by side and this API keeps them apart: price_brl is the card and instalment reference, cash_price_brl is the à vista PIX or boleto price the storefront headlines, and when a campaign is running the pre campaign price stays in list_price_brl with the campaign's own name, end time and remaining units in campaign. That distinction was verified against an independent read of the source on 15 of 15 products, 10 of them on campaign. Filters bite and the numbers are published: on ssd, 864 results unfiltered, 106 for Kingston, 132 for Kingston plus Samsung, 128 within 100 to 300 BRL, 39 on offer, 103 sold by KaBuM itself and 88 with free shipping. Prices are BRL as numbers. No KaBuM account needed - one ReefAPI key and the standard { ok, data, meta, error } envelope.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/kabum/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "ssd nvme"
}
}{
"ok": true,
"meta": {
"api": "kabum",
"endpoint": "search",
"mode": "live",
"latency_ms": 1183.1,
"record_count": 20,
"bytes": 123741,
"cache_hit": false,
"stop_reason": "limit_reached",
"total_results": 1631,
"charged_credits": 2,
"version": "1.0.0"
},
"data": {
"products": [
{
"product_id": 1027061,
"title": "Duplicador Clone De 4 Baias Ss Nvme M.2 Usb-c 4.0 40gbp",
"url": "https://www.kabum.com.br/produto/1027061/duplicador-clone-de-4-baias-ss-nvme-m-2-usb-c-4-0-40gbp",
"brand": "Orico",
"category_path": "Hardware/SSD/Acessórios",
"currency": "BRL",
"price_brl": 1898.9,
"cash_price_brl": 1898.9,
"list_price_brl": null,
"old_price_brl": null,
"discount_percent": null,
"campaign": null,
"installments": {
"count": 10,
"amount_brl": 189.89,
"text": "10x de R$ 189,89"
},
"in_stock": true,
"stock": 2,
"rating_rounded": null,
"rating_count": null,
"sold_by_kabum": false,
"seller": {
"seller_id": 7947,
"name": "ALEXSANDROKIVENDAS",
"company": "ALEXSANDRO LEMOS DE ALMEIDA IMPORTACAO E EXPORTACAO LIMITADA",
"cnpj": "48.724.610/0001-64",
"state": "SP",
"seller_price_brl": 1898.9,
"seller_product_id": 3059190
},
"free_shipping": false,
"is_prime_exclusive": false,
"is_open_box": false,
"is_pre_order": false,
"on_offer": false,
"image": "https://images.kabum.com.br/produtos/fotos/sync_mirakl/1027061/xlarge/Duplicador-Clone-De-4-Baias-Ss-Nvme-M-2-Usb-c-4-0-40gbp_1775479114.jpg"
},
{
"product_id": 761370,
"title": "Dock Station Estação Clone Tipo-c 02 SSD M2 Mvme - Maiwo",
"url": "https://www.kabum.com.br/produto/761370/dock-station-estacao-clone-tipo-c-02-ssd-m2-mvme-maiwo",
"brand": "Outros",
"category_path": "Hardware/Disco Rígido (HD)/Acessórios",
"currency": "BRL",
"price_brl": 890,
"cash_price_brl": 890,
"list_price_brl": null,
"old_price_brl": null,
"discount_percent": null,
"campaign": null,
"installments": {
"count": 10,
"amount_brl": 89,
"text": "10x de R$ 89,00"
},
"in_stock": true,
"stock": 14,
"rating_rounded": null,
"rating_count": null,
"sold_by_kabum": false,
"seller": {
"seller_id": 7947,
"name": "ALEXSANDROKIVENDAS",
"company": "ALEXSANDRO LEMOS DE ALMEIDA IMPORTACAO E EXPORTACAO LIMITADA",
"cnpj": "48.724.610/0001-64",
"state": "SP",
"seller_price_brl": 890,
"seller_product_id": 2260757
},
"free_shipping": false,
"is_prime_exclusive": false,
"is_open_box": false,
"is_pre_order": false,
"on_offer": false,
"image": "https://images.kabum.com.br/produtos/fotos/sync_mirakl/761370/xlarge/Dock-Station-Esta-o-Clone-Tipo-c-02-SSD-M2-Mvme-Maiwo_1744204243.jpg"
},
{
"product_id": 696017,
"title": "Case/gaveta Ugreen Para SSD Mvme Sata Com Usb-c 10gbps Prata - Cm767",
"url": "https://www.kabum.com.br/produto/696017/case-gaveta-ugreen-para-ssd-mvme-sata-com-usb-c-10gbps-prata-cm767",
"brand": "Ugreen",
"category_path": "Hardware/SSD/Acessórios",
"currency": "BRL",
"price_brl": 144.28,
"cash_price_brl": 144.28,
"list_price_brl": null,
"old_price_brl": null,
"discount_percent": null,
"campaign": null,
"installments": {
"count": 5,
"amount_brl": 28.85,
"text": "5x de R$ 28,85"
},
"in_stock": true,
"stock": 32,
"rating_rounded": 5,
"rating_count": 2,
"sold_by_kabum": false,
"seller": {
"seller_id": 3111,
"name": "BFTECH",
"company": "BFTECH EQUIPAMENTOS LTDA",
"cnpj": "28.490.866/0001-47",
"state": "SC",
"seller_price_brl": 144.28,
"seller_product_id": 3004941
},
"free_shipping": true,
"is_prime_exclusive": false,
"is_open_box": false,
"is_pre_order": false,
"on_offer": false,
"image": "https://images.kabum.com.br/produtos/fotos/sync_mirakl/696017/xlarge/Case-gaveta-Ugreen-Para-SSD-Mvme-Sata-Com-Usb-c-10gbps-Prata-Cm767_1788891818.jpg"
}
],
"total_results": 1631,
"total_pages": 82,
"page": 1,
"limit": 20,
"sort": "relevance",
"facets": {
"brands": [
"3GREEN",
"Acer",
"Adata"
],
"categories": [
"Computadores",
"Games",
"Hardware"
],
"attributes": [
{
"name": "Comunicação sem fio",
"label": "Comunicação sem fio",
"values": [
"[trimmed-depth]"
]
},
{
"name": "Processador",
"label": "Processador",
"values": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
]
},
{
"name": "Memória RAM",
"label": "Memória RAM",
"values": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
]
}
],
"flags": [
{
"name": "has_flash",
"label": "Entrega Flash"
},
{
"name": "has_offer",
"label": "Oferta"
},
{
"name": "has_open_box",
"label": "Openbox"
}
],
"price_range": {
"min": 23.88,
"max": 57679.9
}
},
"query": "ssd nvme"
}
}What the KaBuM! API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search 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. | Pricing teams call search to search KaBuM! by keyword. | query, brands, price_min, price_max, only_offers, ... |
| category | Walk 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. | Marketplace operators call category to get walk one KaBuM! category without a keyword. | category, brands, price_min, price_max, only_offers, ... |
| product | One 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. | Catalog enrichment teams call product to get one product in full. | product_id, include_specs |
| products | Up 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`. | Retail analysts call products to get up to 20 products in ONE upstream call. | product_ids |
| suggest | What 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. | Pricing teams call suggest to get what KaBuM's own search box suggests for a prefix. | query |
| deals | The 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. | Marketplace operators call deals to get the products inside one of KaBuM's running campaigns (its 'promoção' pages). | campaign, page, limit, brands, price_min, ... |
| featured | KaBuM'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. | Catalog enrichment teams call featured to get kaBuM's own curated front-page lists. | list, page, limit, brands, price_min, ... |
Call search from your stack
curl -X POST https://api.reefapi.com/kabum/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"ssd nvme"}'import requests
r = requests.post(
"https://api.reefapi.com/kabum/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "ssd nvme"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/kabum/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "ssd nvme"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.kabum.search with {"query":"ssd nvme"}.Who uses this API and why
- Brazilian price trackers store the PIX cash price and the instalment price as separate series, so a 10x plan never overwrites the à vista number.
- Hardware brands and distributors watch KaBuM campaigns with deals and the campaign block, which carries the campaign name, its end time and the units still available.
- Marketplace sellers reprice against KaBuM with products, up to 20 product ids in one call, and read sold_by_kabum to tell KaBuM's own stock from a third party's.
- PC part database builders walk hardware categories with category and pull specifications, warranty, weight and compatibility fields from product.
Questions developers ask before integrating
Why are there two prices on every KaBuM product?
Because Brazilian shops quote two. price_brl is the reference KaBuM charges on a card and divides into instalments; cash_price_brl is the à vista price for PIX or boleto, which is the big number the storefront shows and is usually lower. On the ASRock RX 7600 the card reference is 2,823.52 BRL, the cash price 2,399.99, and the instalment plan 10x de R$ 282,35 - all three in their own fields. product also returns pix_price_brl and the full payment_options list if you want the exact number per method.
What happens to the price when KaBuM runs a campaign?
The campaign price is what you get. price_brl and cash_price_brl are the prices actually being charged, list_price_brl holds the pre campaign reference, and campaign carries the campaign's id, name, start and end timestamps and the units still available. This was checked against an independent read of the source on 15 products, 10 of them on campaign: the cash price matched on 15 of 15.
Does the API include products sold by other sellers, not by KaBuM?
Yes, and it says which is which. sold_by_kabum is a boolean on every row, and a marketplace row carries seller with the seller id, the shop name, the company's registered name, its CNPJ and its state. Set only_kabum to true to see KaBuM's own stock alone - on a search for ssd that narrows 864 results to 103. Keyword search leans heavily third party: none of the first 20 rows for ssd nvme were KaBuM's own, while a hardware category page was 19 of 20 KaBuM stock.
Do the filters and sorts really apply?
Yes, and only the ones KaBuM applies are offered. Measured on a search for ssd on 2026-09-23: 864 results unfiltered, 106 with brands Kingston, 132 with Kingston and Samsung, 128 between 100 and 300 BRL, 39 on offer, 103 sold by KaBuM, 88 with free shipping, and 0 for a brand KaBuM does not carry. On the graphics card category, 447 unfiltered, 29 for ASUS and 79 with the 8 GB memory facet. Seven sorts are offered - relevance, most_searched, price_asc, price_desc, offers, newest, most_rated and brand - and each returns a different first row. KaBuM silently ignores a sort it does not know, so an unknown value is rejected here instead of being pretended.
How do I filter by a category specific attribute such as memory size?
Every search and category response carries a facets block listing the brands, the categories, the price range and the attribute facets that this particular query accepts, with their exact spelling. Pass them straight back in attributes, for example {"Memória": ["8 GB"]} on graphics cards, which took that category from 447 products to 79. You never have to guess a facet name.
Can I get customer reviews?
No. KaBuM publishes an aggregate rating and a review count to a visitor and nothing more, so rating, rating_rounded and rating_count come back and review texts do not. Note that KaBuM's listing pages round the rating to a whole star while the product page does not, so listing rows carry rating_rounded and only product returns the exact rating - 4.9 where a listing row says 5.
How do I re-price a few thousand products without a call per product?
products takes up to 20 product ids or product URLs in one call and returns both prices, the instalment plan, stock, rating and seller for each, plus requested, returned and the ids that came back missing so discontinued products leave your catalogue instead of freezing at their last price. Twenty is KaBuM's own ceiling; a longer list is rejected rather than silently trimmed, because KaBuM drops the extras without saying so.
What does KaBuM NOT publish?
No price history, no sold history, no shipping cost without a cart, no review texts and no stock split by warehouse - stock is one nationwide integer. There is also no category index and no campaign index: category paths come from a product's category_slugs or from a kabum.com.br URL, and the campaign parameter offers the five slugs verified live. Prices are BRL for the single Brazilian storefront; there is no other country behind it.
What is the KaBuM! API?
KaBuM! API is a ReefAPI endpoint group for brazilian pc hardware prices: the pix cash price and the instalment price kept apart, stock, specs and marketplace sellers. It returns live JSON through POST requests under /kabum/v1.
Is the KaBuM! API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. KaBuM! calls use the same shared credit balance as every other ReefAPI engine.
Do I need a KaBuM! login or account?
No login to KaBuM! 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 KaBuM! 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 KaBuM! API use?
KaBuM! 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 KaBuM! from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call kabum actions with the same key, credit pool and JSON envelope used by normal REST requests.