Kabum Scraper - Brazil Hardware Prices & Stock
Pricing
from $1.70 / 1,000 product delivereds
Kabum Scraper - Brazil Hardware Prices & Stock
Search Kabum, Brazil's largest hardware store: cash price, PIX price, stock, rating and URL for every result, filtered by category. A term with no match returns a free error row, not a generic showcase. No login. US$ 2 per 1,000 products; failed items are free.
Pricing
from $1.70 / 1,000 product delivereds
Rating
0.0
(0)
Developer
Scrapewise Data
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
8 days ago
Last modified
Categories
Share
Kabum Scraper: Brazil Hardware Prices, Pix Price and Stock
Kabum scraper that searches KaBuM!, the largest online hardware, gaming PC and electronics store in Brazil, and returns one row per product with the list price (preco), the Pix cash price (preco_pix), the stock quantity (estoque), the store rating (nota), the product id, the name and the product URL.
For price intelligence teams tracking Brazilian hardware, stores checking a competitor, comparison sites and PC builders watching a GPU restock. AI agents can call it through the Apify MCP server.
At a glance
- Price per 1,000 products, Free plan: US$ 2.00
- Price per 1,000 products, Gold plan and above: US$ 1.70
- Pix price as its own field:
preco_pix, always returned
You pay only for products written to the dataset, one charge per row. No monthly fee, no start fee, nothing for pages read, retries or proxy. Duplicates are removed before delivery. A run that collects zero products fails with an explicit error and charges nothing.
Quick start
Minimal input:
{"termos": ["mouse gamer"]}
Several terms in one run, with a cap:
{"termos": ["placa de video rtx 4060", "ssd nvme 1tb", "fonte 750w"],"maxItems": 300}
One real row from the run of 2026-09-10 (input {"termos": ["mouse gamer"], "maxItems": 50}, build 0.1.1, 50 products in 13 seconds):
{"id": "320799","nome": "Processador AMD Ryzen 5 5500, 3.6GHz (4.2GHz Max Turbo), Cache 19MB, 6 Núcleos, 12 Threads, AM4, Sem Vídeo Integrado - 100-100000457BOX","preco": 705.87,"preco_pix": 599.99,"estoque": 428,"nota": 4.900000095367432,"url": "https://www.kabum.com.br/produto/320799/processador-amd-ryzen-5-5500-3-6ghz-4-2ghz-max-turbo-cache-19mb-6-nucleos-12-threads-am4-sem-video-integrado-100-100000457box","coletado_em": "2026-09-10T21:28:02.737312+00:00","url_origem": "https://www.kabum.com.br/_next/data/siur_z7CUV4q4xB1qvZ34/catalogo.json?type=search&searchTerm=mouse%20gamer&page_number=1"}
Two more rows from that run: a Gigabyte B550M Aorus Elite motherboard, preco 788.88, preco_pix 709.99, estoque 18; an MSI MAG A650BN 650W power supply, preco 322.21, preco_pix 289.99, estoque 929.
Why there are two prices: preco and preco_pix
Pix is Brazil's instant bank transfer, run by the central bank. It settles in seconds and costs the merchant almost nothing, so Brazilian stores publish a second, lower price for customers who pay with it, side by side with the card price on the product page. Every row here carries both numbers:
precois the list price, the one used for card and installment payments.preco_pixis the discounted cash price for a Pix payment. When a product has no Pix discount, the Actor returns the list price in this field, sopreco_pixis never empty.
If you study Brazilian retail prices, preco_pix is the field you want: it is what a local customer actually pays and the number that moves in a promotion. In the three sample rows of the 2026-09-10 run the discount was 15.0%, 10.0% and 10.0%. Comparing preco between Brazil and another country overstates what Brazilians pay; comparing preco_pix does not.
What data you get
One row per product, deduplicated by id inside the run. Prices are in Brazilian reais (BRL).
Fill rates were measured on all 50 items of the run of 2026-09-10 for the term mouse gamer. That is one run, one term, 50 products, not a survey of the whole site: read the 100% below as what that measurement showed, not as a promise for every category.
| Field | Type | Example | Filled (50 items, 2026-09-10) |
|---|---|---|---|
id | string | "320799" | 100% |
nome | string | "Processador AMD Ryzen 5 5500, ..., AM4" | 100% |
preco | number | 705.87 (list price in BRL) | 100% |
preco_pix | number | 599.99 (Pix cash price in BRL) | 100% |
estoque | number | 428 (units Kabum reports as available) | 100% |
nota | number | 4.900000095367432 (store rating, 0 to 5) | 100% |
url | string | product page on kabum.com.br, built from id and the URL slug | 100% |
coletado_em | string | "2026-09-10T21:28:02.737312+00:00" (ISO 8601, UTC) | 100% |
url_origem | string | the exact Kabum data URL the row came from | 100% |
Field names are in Portuguese because they mirror the source. The table above is the full list: what is not in it is not collected. nota arrives as Kabum sends it, a 32 bit float, which is why you see 4.900000095367432 instead of 4.9. In Apify Console the dataset has an Overview table view with those nine columns and exports to JSON, CSV, Excel, XML or RSS.
Use cases
Price research in the largest market in Latin America
Hardware in Brazil carries import tax, state tax and a currency effect, so prices look nothing like United States or European ones. Search the parts you care about, store preco_pix daily, and you have a local price series from the country's largest specialist retailer.
Cross border price comparison and import tax effect
Run the same models here and on a scraper for another country, join on nome, and the gap between preco_pix and the foreign price is your landed cost signal. Because both prices come in the same row, you can also separate how much of the Brazilian sticker price is payment method and how much is tax.
Competitor monitoring for stores and marketplaces
A store or a marketplace seller schedules the terms that match its own catalogue and compares preco_pix line by line every morning. id is Kabum's product code and is stable, so today's dataset joins cleanly to yesterday's and a price change is a simple diff.
Stock and restock watching
estoque is the quantity Kabum exposes for the product. Watch a short list of GPU or CPU models: a jump from 0 to a positive number is a restock, a fall towards 0 says a promotion is running out. Read it with preco_pix to catch a price drop followed by stock draining in hours.
Feeding an AI agent or a RAG index
An agent answering "what does an RTX 4060 cost in Brazil today, paying by Pix, and is it in stock" calls this Actor through the Apify MCP server with a two field input and reads preco_pix and estoque. Each row carries coletado_em and url_origem, so the agent can say when the price was read and link the source.
Input guide
| Field | Type | Default | What it does |
|---|---|---|---|
termos | array of strings | ["mouse gamer"] | Search terms, as you would type them in Kabum's search box. Several per run. Required. |
categoria | string | empty | Optional Kabum category slug, sent to the source as category_uri. Empty searches all categories. |
maxItems | integer | 30 in the Console form, 100 when the key is absent from an API call | Hard cap on products for the whole run, across all terms. |
proxyConfiguration | object | Apify Proxy on, datacenter | Datacenter proxy is enough for this source and is included in the price. |
A shopping list of parts in a single run
{"termos": ["placa de video rtx 5070","processador ryzen 7","memoria ddr5 32gb","ssd nvme 2tb"],"maxItems": 500}
Terms run in order and the run stops as soon as maxItems is reached, so put the term you care about most first.
Narrowing by category
{"termos": ["mouse"],"categoria": "perifericos","maxItems": 100}
categoria takes the slug Kabum uses in its own category URLs. No measured run used this field, so test it with a small maxItems first.
Search in Portuguese, which is what Kabum indexes: placa de video (graphics card), memoria (RAM), fonte (power supply), gabinete (case), teclado mecanico, monitor, notebook, processador. Brand and model names are the same in both languages, so rtx 5070 or samsung 990 pro work as they are.
Pricing
Pay per event: one charge per product delivered to the dataset, billed on the "Product delivered" event. No monthly fee, no start fee, proxy and compute included.
| Apify plan | Price per product | Per 1,000 products |
|---|---|---|
| Free | US$ 0.0020 | US$ 2.00 |
| Bronze | US$ 0.0019 | US$ 1.90 |
| Silver | US$ 0.0018 | US$ 1.80 |
| Gold and above | US$ 0.0017 | US$ 1.70 |
Cost examples at the Free plan price:
| Job | Products | Cost |
|---|---|---|
| One term, Console default | 30 | US$ 0.06 |
| One term, the measured run | 50 | US$ 0.10 |
| Five terms, 100 products each | 500 | US$ 1.00 |
| Daily check of 40 products, 30 days | 1,200 | US$ 2.40 |
| Category sweep of 2,000 products | 2,000 | US$ 4.00 |
Not charged: duplicates removed inside the run, pages read during pagination, retries, proxy traffic, and any run that ends without products, because that run fails instead of succeeding empty. The Apify Free plan comes with a monthly platform credit (US$ 5 when this page was written), about 2,500 products a month at this price.
Speed and reliability
Measured on the Apify platform:
| Run | Input | Products | Time | Build |
|---|---|---|---|---|
| 2026-09-10 21:27 UTC | {"termos": ["mouse gamer"], "maxItems": 50} | 50 | 13 s | 0.1.1 |
That is the only run of this Actor whose dataset had rows, so it is the only one quoted. Across its five public runs in the 30 days to 2026-09-15 the success rate was 100% (5 of 5), by the public Apify API on that date.
The Actor makes plain HTTP requests, no browser. It reads Kabum's own Next.js JSON data endpoint, which is why 50 products took 13 seconds and the platform cost of that run was US$ 0.0031. It resolves Kabum's current build identifier once per run from the public search page, then pages through the JSON endpoint until it hits maxItems or an empty page. Requests go through Apify datacenter proxy with IP rotation, included in the price. If that endpoint changes shape, the run fails with an error naming the URL and the expected JSON path instead of finishing empty, and a failed run charges nothing.
Use it from code, no-code tools and AI agents
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("scrapewise/kabum-produtos").call(run_input={"termos": ["placa de video rtx 5070"],"maxItems": 100,})for p in client.dataset(run["defaultDatasetId"]).iterate_items():desconto = 100 * (1 - p["preco_pix"] / p["preco"]) if p.get("preco") else 0print(p["nome"], p["preco"], p["preco_pix"], f"{desconto:.1f}%", p["estoque"])
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('scrapewise/kabum-produtos').call({termos: ['ssd nvme 2tb'],maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((i) => [i.nome, i.preco_pix, i.estoque]));
HTTP API
POST https://api.apify.com/v2/acts/scrapewise~kabum-produtos/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN with the input JSON as the body returns the rows directly. Add &format=csv for a spreadsheet instead of JSON.
n8n, Make, Zapier and Google Sheets
Use the Apify app or node: pick "Run Actor", choose scrapewise/kabum-produtos, paste the input and map the rows to a sheet, a database or a Slack alert. In Console you can save the input as a task, attach a Schedule and add a webhook that fires when the run finishes.
AI agents (MCP)
Add the Apify MCP server to Claude, ChatGPT, Cursor or any MCP client with this Actor as a tool:
https://mcp.apify.com/?tools=scrapewise/kabum-produtos
The agent sends termos and reads preco_pix, estoque and url. Because coletado_em is on every row, it can tell the user exactly when the price was read.
FAQ
What is KaBuM! and why would someone outside Brazil care?
KaBuM! is the largest online store for computer hardware, gaming PCs and electronics in Brazil, part of the Magalu group. For what a graphics card, a CPU or a monitor costs in the largest market in Latin America, it is the reference retailer, the role Newegg plays in the United States.
Which price field should I use, preco or preco_pix?
For pricing research, preco_pix, the discounted price for Brazil's instant payment system, because it is what a local buyer pays. preco is the list price used for card and installment payments. With no discount the two are equal. See the section above for the full explanation.
Why are the field names in Portuguese?
They mirror the source, so nothing is lost in a translation that guesses. Each one is explained in English in the field table: preco price, preco_pix Pix price, estoque stock, nota rating, nome name, coletado_em collected at.
Are prices in Brazilian reais? Can I get them in dollars?
Every price is in BRL, the only currency Kabum quotes. There is no currency option and nothing is converted, so no exchange rate is baked into your data. Apply your own rate, with your own date.
Does estoque mean real warehouse stock?
It is the quantity Kabum itself exposes at the moment of the request, the number behind the availability shown on the site. Read it as the store's availability signal, good for "in stock, out of stock, running low", not as an audited count.
The sample rows for "mouse gamer" include a CPU and a motherboard. Why?
Kabum's search returns its own ranking and mixes in related and promoted products, so a term does not guarantee that every row is that exact kind of product. The three sample rows from the 2026-09-10 run are shown exactly as they came back. If you need exact matches, filter on nome after the run or use a narrower term plus categoria.
How many products can I get per term?
As many as Kabum's search returns, page by page, until maxItems is reached or a page comes back empty. maxItems is a hard cap for the whole run.
How do I set up a daily price check?
Save your input as a task in Apify Console, attach a Schedule, and add a webhook that pushes each new dataset into your warehouse or sheet. Every row carries coletado_em, so successive runs stack into a time series keyed by id.
How do I keep a run from costing more than I planned?
maxItems caps the number of charged rows: maxItems times US$ 0.002 is the worst case on the Free plan. Console also lets you set a maximum total charge in the run options.
Can I call it from ChatGPT, Claude or another AI agent?
Yes, through the Apify MCP server, see the MCP section above. Only one field is required and an empty input runs the default term instead of failing, so an agent can call it from a one line instruction.
Is it legal to scrape Kabum?
The Actor reads public product data through the store's own public endpoint, without logging in and without bypassing any paywall or protection. It collects commercial information about products (id, name, price, stock, rating) and no personal data at all: no customer name, no review text, no email, nothing about any individual. You are responsible for how you use what you collect; if your use case is unusual, ask a lawyer.
Does it return reviews, specifications, images or installment plans?
No. The nine fields in the table are everything. There is no review text, no specification sheet, no image URL, no brand or category field, no seller, no shipping cost, no installment breakdown, and nota is the rating without the number of reviews. If one of those matters, ask on the Issues tab.
What happens if Kabum changes its website?
The Actor resolves Kabum's current build identifier on every run, so a normal redeploy changes nothing for you. If the data route format itself changes, the run fails with an error naming the URL and the JSON path it expected, and is not charged. Open an issue with the search term used so the parser can be updated.
Why pay US$ 2.00 per 1,000 when another Kabum Actor asks US$ 0.20?
Compare them. What you get here: the Pix price as its own field, stock and rating in the same row, deduplication by product id, pagination up to your own cap, a run that fails loudly instead of returning an empty dataset as a success, and fill rates published from a real run. If the cheaper option covers your case, use it.
Limitations
- Search only. There is no "fetch this product URL" mode; you reach a product through a term that returns it.
- Prices and stock are a snapshot of the request, in BRL. A promotion can change them minutes later.
- The ranking is Kabum's and can include related products for a term. Filter on
nomefor exact matches. categoriais passed straight to the source as a category slug and was not exercised in the measured runs.- One measured run with rows exists (2026-09-10,
mouse gamer, 50 products). The 100% fill rates describe those 50 items only. notacomes as a 32 bit float, so round it before display.- Something broke or a field is missing? Open an issue on the Issues tab.
If this Actor saves you time, a short review on the Store page helps other people find it.
Changelog
- 2026-09-15: README rewritten: Pix price explained for readers outside Brazil, field table with fill rates from the run of 2026-09-10, input guide, price by plan, integrations and FAQ. Position measured the same day: second of 34 results for "kabum", twentieth of 1,000 for "brazil prices".
- 2026-09-14 (build 0.1.2): neutral examples and prefills in the input form, and the required
termosfield got a default value so a call from the API or an MCP client with an empty input runs instead of failing. Store icon published. - 2026-09-13: price ladder by plan published in the Store (US$ 1.90 per 1,000 on Bronze, 1.80 on Silver, 1.70 on Gold and above, Free stays at US$ 2.00), plus a task example.
- 2026-09-10: first public release, pay per event at US$ 2.00 per 1,000. First cloud run, 50 products for
mouse gamerin 13 seconds. - 2026-09-05: parser corrected against the live site. The visible URL
kabum.com.br/busca/<term>is not the data route and redirects to a category page for terms that collide with a category; the real route is/catalogowithtype=search&searchTerm=<term>. The response body arrives sometimes as an object and sometimes as a JSON encoded string, and both are now handled. Output schema and dataset view added.