Casas Bahia Brazil Electronics & Home Goods Scraper at a glance
Casas Bahia Brazil Electronics & Home Goods Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes image, product, change type (incremental mode), sku and brand, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Web data
- Pricing
- $1.80 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 31 options
- Run success
- 99.2% of completed public runs in the last 30 days
Scrape products from Casas Bahia Brazil by keyword, department, or URL. Filter by brand, price, discount, rating, and instalment terms. Extract SKUs, titles, brands, current and original prices, Pix offers, BRL instalment plans, stock, pickup options, images, variants, specifications, and reviews.
What Casas Bahia Brazil Electronics & Home Goods Scraper can do
- Two ways to find products. Search by keyword and the store's own filters, or paste product links, department links, search-result links or bare product codes.
- Real price plus Pix. Every row carries the live price, the pre-discount price and discount, and the instant-payment (Pix) price when the store offers one, not just a single headline number.
- Every instalment plan. Instalment text, count and value, whether it is interest free, and the full list of instalment options the store publishes.
- Full product depth on demand. Description, specification table, colour and capacity variants, manufacturer and warranty information, the full media gallery and customer reviews, all read from the product's own page.
- Reviews up to your cap. Rating, review count and the per-star breakdown come from the product page; individual review rows are completed from the page's own review list (up to 200 per product) when the page shows only the first few. Reviews are part of the one detail-enrichment unit per product, with no extra per-review charge (see the cost FAQ).
- Store filters plus actor filters. Department, brand, price band, minimum discount and minimum rating are applied by the store itself; minimum instalments, interest-free-only and in-stock-only are applied by this actor after reading each product's own terms.
Choose what to collect
These inputs let you configure Casas Bahia Brazil Electronics & Home Goods Scraper. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Choose 'search' to search the catalogue by keyword and filters, or 'url' to scrape pasted links: product pages, department pages, search result pages and bare product codes are all accepted. |
queriesarray | Only used when mode = search, ignored in url mode. One or more keywords, for example geladeira (fridge), notebook or smart tv. Leave empty to browse by Department alone. |
termstring | Single-keyword alias of Search keywords, for people moving from other scrapers. Used only when mode = search; added to the keyword list if it is not already there. |
urlsarray | Only used when mode = url, ignored in search mode. Mix freely: a legacy product page such as /produto-1558278013.html, a search results link (//b, optionally with ?page=2 or ?filtro=... and ?ordenacao=...), a department page under /c/... with its filtro, or a bare product code such as 1558278013. The default is the seven example links shown here (two department pages, two product pages, three search results links). In url mode they are read unless you enter your own links or a keyword that differs from the example keyword; the department and brand filters apply to them. In search mode they are never read. Each delivered product is billed as usual, capped by Max products. |
categoriesarray | Optional. Keep only products in these store departments. Combine with a keyword, or use on its own to browse a whole department. Selecting several returns products from any of them. |
brandsarray | Optional. Keep only products from these brands, written the way the store writes them, for example Consul, Electrolux, Brastemp, Samsung. Names are matched against the store's own brand list for your search, ignoring case and accents. If none of the names you enter exist in that list the run returns nothing rather than silently ignoring the filter. |
minPriceinteger | Optional. Keep only products priced at or above this amount, in Brazilian reais. Applied by the store itself, so it narrows the result count at the source. |
Show 24 more inputs
| Input | What it controls |
|---|---|
maxPriceinteger | Optional. Keep only products priced at or below this amount, in Brazilian reais. Applied by the store itself, so it narrows the result count at the source. |
minDiscountPercentinteger | Optional. Keep only products discounted by at least this percentage off their pre-discount price. Applied by the store itself, so it narrows the result count at the source. |
minRatingstring | Optional. Keep only products the store rates at this many stars or more. The store groups products into whole-star buckets by their rounded average, and this asks it for every bucket at or above your choice, so a product averaging 3.8 counts as 4 stars. Products with no rating at all are excluded when this is set. |
minInstallmentsinteger | Optional. Keep only products the store will split into at least this many instalments, for example 12 for '12x sem juros'. The store publishes no filter for instalments, so this is applied by this actor after reading each product's payment terms. |
interestFreeInstallmentsOnlyboolean | Optional. Keep only products with at least one interest-free ('sem juros') instalment plan. Combine with Minimum instalments to require, for example, 12x with no interest. Applied by this actor after reading each product's payment terms. |
inStockOnlyboolean | Optional. Keep only products the store will currently accept an order for. Applied by this actor after reading each product's live availability. |
sortBystring | The order the store returns results in. All five are the store's own orderings. |
fetchDetailsboolean | Read each product's own page to add the description, the full specification table, the colour, model and capacity variants with their own addresses, the manufacturer and warranty information, the full image gallery, the pickup-in-store signal and every instalment plan the store offers. Turn off for a faster, cheaper run that returns catalogue and price fields only. |
includeReviewsboolean | Add each product's customer reviews: average rating, the per-star breakdown, the share of reviewers who recommend it, the store's own review summary, and the individual reviews (author, date, rating, text and helpful counts). Shopper-uploaded review photos and clips are not returned. Requires Fetch product details and costs no extra request. A product with no reviews returns an empty reviews list. |
maxReviewsPerProductinteger | Cap on how many individual reviews are returned per product. The average rating, review count and per-star breakdown are always complete regardless of this cap. Reviews are included in the product's one detail unit; there is no per-review charge. Values above 200 (and 0, which used to mean all) are treated as 200. |
maxItemsinteger | Maximum number of products to return across the whole run. This is the run's cap. Use 0 for unlimited. |
maxPagesinteger | Maximum number of result pages read per keyword, department or link. 0 means no limit, which is the default: the run then stops only at Max products, at the end of the results, or when a page returns nothing new. |
startPageinteger | First result page to read for each keyword in search mode. 1 (the default) starts at the beginning; Max result pages then counts from this page. |
failOnNoResultsboolean | When on, a run that matched no products ends as FAILED instead of succeeded with an empty dataset. |
ignoreSiteFailuresboolean | When on, a run whose every request was refused ends as succeeded with an empty dataset instead of FAILED. Off by default so a blocked run is never mistaken for an empty result. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large catalogue pull without returning or charging for products already collected there. Use this after an interrupted run. For recurring daily monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED products, which is how a price cut or a stock change is spotted. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each search, filter and detail setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search, filters and detail settings, so different searches never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, so never when Max products capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Incremental mode only. Fields whose changes do not count as an update: a change in them alone leaves the product UNCHANGED and they are not listed in changedFields. They are still returned in every row. Use a dotted path for a nested field, for example variants.image. The image fields (image, images, variants.image), whose address changes between fetches, customer reviews and the scrape time are always ignored; a new review still shows through reviewCount and rating. Add more field names here to ignore them as well, for example installmentText. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
imageImage (image)titleProductchangeTypeChange type (incremental mode) (text)productIdSKUbrandBrandpricePrice (BRL)originalPriceWas (BRL)discountPercentDiscount %cashPriceInstant-payment price (BRL)cashPriceLabelInstant-payment termsinstallmentTextInstalmentscurrencyCurrencyShow 56 more fields
onSaleReduced (boolean)inStockOrderable (boolean)pickupInStorePickup in store (boolean)ratingRatingreviewCountReviewscategoryNameCategorycategoryPathCategory path (array)sellerNameSellereanEANurlURL (link)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)statusstatuscountrycountrysourcesourcesearch_termsearch_termpagepagerankrankproduct_idproduct_idskuskulist_pricelist_pricediscount_percentdiscount_percentavailabilityavailabilityavailableavailableseller_idseller_idseller_nameseller_namecategory_idcategory_idcategoriescategoriesinstallmentinstallmenthighlightshighlightsimage_urlimage_urlimage_urlsimage_urlsproduct_urlproduct_urlsource_urlsource_urlscraped_atscraped_atdescriptionDescriptionspecificationsSpecifications (object)variantsVariants (array)installmentOptionsInstalment options (array)sellerCountSellersofferCountOffersminOfferPriceLowest offer (BRL)maxOfferPriceHighest offer (BRL)warrantyWarrantymanufacturerNameManufacturermanualsManuals (array)imagesImages (array)reviews.reviewIdReview idreviews.ratingRatingreviews.dateDatereviews.authorAuthorreviews.titleHeadlinereviews.textReviewreviews.helpfulCountHelpfulreviews.notHelpfulCountNot helpfulExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"productId": "1234567890",
"productGroupId": "9876543210",
"title": "Refrigerator Example 400L Frost Free",
"brand": "Example Brand",
"brandId": "42",
"ean": "7890000000000",
"url": "https://www.casasbahia.com.br/exemplo-produto/p/1234567890",
"categoryName": "Refrigerators",
"categoryPath": [
"Home Appliances",
"Refrigerators"
],
"price": 3499.9,
"originalPrice": 4299.9,
"discountPercent": 19,
"discountAmount": 800,
"currency": "BRL",
"onSale": true,
"cashPrice": 3149.91,
"cashPriceLabel": "No Pix",
"hasPixDiscount": true,
"installmentText": "10x de R$ 349,99 sem juros",
"installmentCount": 10,
"installmentValue": 349.99,
"installmentInterestFree": true,
"inStock": true,
"availability": {
"national": true,
"regional": true,
"commercial": false
},
"pickupInStore": true,
"deliveryEstimate": null,
"shippingCost": null,
"sellerId": "1",
"sellerName": "Casas Bahia",
"image": "https://imgs.example.invalid/1234567890/1.jpg",
"variantOptions": [
{
"name": "Colour",
"values": [
"White",
"Silver"
]
}
],
"specifications": [
{
"group": "General",
"name": "Capacity",
"value": "400 litres"
}
],
"warranty": "12 months",
"rating": 4.7,
"reviewCount": 128,
"ratingBreakdown": [
{
"rating": 5,
"percentage": 78,
"label": "Excellent"
}
],
"reviewsAvailable": true,
"reviews": [
{
"reviewId": "0000",
"author": "Sample Customer",
"date": "27/04/2026",
"rating": 5,
"text": "Sample review text.",
"helpfulCount": 3,
"notHelpfulCount": 0
}
],
"sponsored": false,
"searchMode": "search",
"scrapedAt": "2026-08-28T00:00:00Z"
}Ways to use this data
- Price monitoring and repricing: track price cuts, Pix discounts and stock changes across a department or a brand on a schedule.
- Comparison shopping and marketplace tools: pull structured price, instalment and availability data to power a comparison page or app.
- Market research and BI: build a historical BRL price and discount dataset for electronics and home goods.
- Review and sentiment analysis: collect rating breakdowns and individual review text to understand customer feedback at scale.
- Content and affiliate teams: source specifications, images and instalment terms for buying guides and product pages.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Casas Bahia Brazil Electronics & Home Goods Scraper return?
The documented output for Casas Bahia Brazil Electronics & Home Goods Scraper includes image, product, change type (incremental mode), sku, brand, price (brl), was (brl) and discount %. Availability of each field depends on the source page and the selected mode.
How much does Casas Bahia Brazil Electronics & Home Goods Scraper cost?
It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Why did a run return more products than Max products?
Max products caps new, updated, reappeared and unchanged rows. It currently does not cap EXPIRED rows: with emitExpired on, a run that completes a full scan of the tracked search adds every previously tracked product no longer found on top of the capped batch. Turn emitExpired off if you need a hard ceiling on run size.
Why did my run fail instead of returning an empty dataset?
If the site refuses every request, the run stops with a clear message so "no products matched" is never confused with "nothing could be read". Run it again in a few minutes, or check the Connection section if it keeps happening.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
