Americanas Brazil - Products, Prices, Sellers & Reviews
Pricing
from $1.50 / 1,000 product results
Americanas Brazil - Products, Prices, Sellers & Reviews
Scrape Americanas Brazil (americanas.com.br) by keyword, department or pasted link. Returns SKU, title, brand, seller (store or marketplace), price, PIX price, discount, instalments in BRL, stock, images, variants, specs and reviews. Incremental mode tracks changes.
Pricing
from $1.50 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Americanas Brazil Marketplace Scraper
Scrape americanas.com.br, one of Brazil's largest general marketplaces and department stores, and get one clean row per product: identity, seller, the full Brazilian price picture (current price, pre-discount price, discount, PIX cash price and instalment terms in BRL), stock, media, every colour / size / model variant, the description, the specification table, the warranty, and customer reviews.
Two ways to say what you want, both returning as many results as you ask for:
- Search by keyword, department, brand, price band and seller.
- URL by pasting product pages, department pages or search pages straight from the store.
What you get per product
| Group | Fields |
|---|---|
| Identity | productId, skuId, name, brand, brandId, ean, referenceId, slug, url |
| Category | categories, breadcrumb, categoryPath, categoryName, department |
| Seller | sellerId, sellerName, sellerType (first_party or marketplace), sellerCount, otherSellers[], sellerReputation |
| Price | price, listPrice, originalPrice, discountAmount, discountPercent, onSale, currency (always BRL) |
| PIX cash price | pixPrice, pixDiscountAmount, pixDiscountPercent |
| Instalments | maxInterestFreeInstallments, interestFreeInstallmentValue, maxInstallments, installmentPlans[] (one row per payment method and instalment count, with the interest rate and total) |
| Stock | inStock, availableQuantity, priceValidUntil |
| Media | image, images[], videos[] |
| Variants | variants[] (per SKU: skuId, options such as colour / size / voltage, price, pixPrice, inStock, availableQuantity, sellerName, images), variantCount |
| Detail | description, shortDescription, specifications (flat name to value), specificationGroups[], warranty, itemCondition, releaseDate |
| Delivery (opt in) | shippingCost, deliveryEstimate, pickupAvailable, delivery.options[] |
| Reviews (opt in) | rating, reviewCount, recommendedPercent, ratingBreakdown (all five star buckets), reviews[] |
| Bookkeeping | searchMode, scrapedAt, and in incremental mode changeType, changedFields, firstSeenAt, lastSeenAt |
The description, specifications, variants, discount, PIX price and instalments are free
They arrive with the listing, so this actor returns them on every row without any extra request and without any extra charge. Only two things cost an extra lookup per product, and both are off by default:
- Fetch delivery details at a Brazilian postal code (CEP): shipping cost, delivery time
and pickup availability. The default CEP is central Sao Paulo (
01310100); replace it with your destination when you need destination-specific delivery results. - Fetch customer reviews: ratings are looked up for a whole result page in one go at no per-product cost, and only a product that actually has reviews costs a request of its own.
A product that receives at least one of those lookups is billed a single Detail enrichment event. A catalogue-only row is never billed one.
Brazil only, so there is no country input
Americanas is a Brazilian retailer serving Brazil, and this was verified live rather than assumed. Four independent signals, all observed on the live site:
- The storefront declares itself Brazilian:
lang="pt-BR"andlocale: "pt-BR". - Every price on every route is in Brazilian reais, and there is no currency or market parameter that changes it.
- The store's own delivery quote replies
shipsTo: ["BRA"]for its products. - Asking for a delivery quote to a United States address returns zero delivery options and the store's own error, "this item cannot be delivered to the selected coordinates".
A country input would therefore be a knob with exactly one working value, so there is none.
Use a Brazilian CEP for the delivery lookup.
Marketplace or the store's own stock
Americanas sells its own stock next to thousands of marketplace sellers, and the two behave very differently on price, delivery and returns. Every row says which it is:
sellerType: "first_party"means Americanas itself is the seller.sellerType: "marketplace"means an independent seller on the Americanas marketplace, named insellerName.otherSellers[]lists every other offer on the same SKU, with its own price and stock, so you can compare the winning offer against the rest.
The Sold by filter can narrow to either side. "Store itself only" is applied by the store as a native filter. "Marketplace sellers only" is applied to the results, because the store publishes no filter that excludes its own stock.
sellerReputation is always null. The store publishes no seller rating or reputation score
anywhere in its catalogue, product or checkout data. The field is emitted as an explicit null
so the gap is visible rather than looking like a dropped field.
Reviews
Reviews are a real, fully available feature on this store, verified live on reviewed products. Turn on Fetch customer reviews to get:
rating,reviewCount,recommendedPercent;ratingBreakdown, always all five star buckets, so a bucket with no reviews reads0rather than going missing;reviews[]withauthor,date,rating,title,text,verifiedPurchase,recommended,helpfulCount,unhelpfulCountandimages[].
A product with no reviews returns reviews: [], reviewsAvailable: false and a reviewCount
of 0 rather than invented values, and costs no extra request. Use Max reviews per product
to cap the rows; the rating, count and breakdown stay complete regardless of that cap.
Which filters the store applies, and which this actor applies
Applied by the store, so they narrow the result count at the source and cost nothing extra:
| Filter | How |
|---|---|
| Department | Resolved against the store's own published department list, then filtered at the source |
| Brand | Resolved against the store's own published brand list, then filtered at the source |
| Minimum / maximum price | The store's own price band |
| Sold by: store itself | The store's own seller filter |
| Sort by | All nine orderings are the store's own |
Two details worth knowing about those, both measured on the live store rather than assumed:
- Picking several departments is a union, and it is walked one department at a time. The store's catalogue route cannot combine two departments in a single request: asked for both, it silently answers with only one of them. So this actor walks each department you picked as its own pass and merges the results, sharing Max products across them. Brands do combine natively, so several brands stay a single request.
- Price sorting is the store's own, and the store ranks a product by its cheapest variant. A
product sold in many variants can therefore appear earlier in a price sorted run than its headline
pricesuggests, becausepriceis the price of the variant the row describes. The full list is invariants[].
Applied to the results, because the store publishes no filter for them:
| Filter | Why |
|---|---|
| Sold by: marketplace only | The store offers no way to exclude its own stock |
| Minimum interest free instalments | Not a published filter |
| Only products that can be ordered | The store returns sold out listings alongside available ones on this route |
| Only reduced price products | Not a published filter |
If a brand or department you asked for does not exist on the store, it is reported by name and skipped. If none of them exist, the run stops with that message instead of quietly handing back the unfiltered catalogue. If the store cannot be reached to check them at all, the run stops and says so: an unanswered check is a connection problem, and it is never reported as "that department does not exist".
A note on keywords
Some very common Portuguese keywords ("notebook", "cafeteira", "mouse") are configured on the storefront to jump to a curated landing page instead of running a search. This actor reads the catalogue directly and is not affected: a keyword search returns catalogue results for the words you typed, every time.
Modes
Search mode
Give one or more keywords, or leave keywords empty and pick a department to browse it whole. Each keyword is searched separately, and Max products is shared across all of them.
URL mode
Paste any mix of:
- a product page, ending in
/p; - a department page, for example
/computadores-e-informatica/notebook; - a search page, for example
/busca/cafeteira.
A link that already names a page (?page=2) starts there rather than restarting at page 1.
Pasted product links are always fetched first, so a large department can never fill your item
cap and drop the products you actually named. The filters above still narrow what a department
or search link returns.
Input parameters
Every input the actor accepts, in the order the input form shows them. The three MCP connector inputs are documented in their own section further down.
Start here: pick your mode
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search searches the catalogue by keyword and filters. url scrapes pasted links: product pages, department pages and search result pages are all accepted. |
queries | array | (empty) | Search mode only. One or more keywords, for example notebook dell, cafeteira or tenis nike. Each keyword is searched separately and maxItems is shared across all of them. Leave empty to browse by department, brand or price alone. |
urls | array | (empty) | URL mode only. Mix freely: product pages ending in /p, department pages such as /computadores-e-informatica/notebook, and search pages such as /busca/notebook-dell. A link that already names a page (?page=2) starts there. |
Filters (apply to a keyword search AND to a pasted department or search link)
| Parameter | Type | Default | Description |
|---|---|---|---|
categories | array | (empty) | Keep only products in these store departments. Resolved against the store's own published department list and applied at the source. Selecting several returns products from any of them, walked one department at a time because the store cannot combine two in one request. |
brands | array | (empty) | Keep only products from these brands, typed as the store writes them (Lenovo, Samsung). Accents and capitals do not matter. Resolved against the store's own brand list and applied at the source. A brand the store does not publish is reported by name and skipped; if none of your brands exist, the run stops rather than returning unfiltered results. |
sellerType | string | any | any, first_party (store's own stock, applied by the store) or marketplace (independent sellers, applied to the results because the store publishes no filter that excludes its own stock). |
minPrice | integer | (none) | Keep only products priced at or above this amount in BRL. Applied by the store. |
maxPrice | integer | (none) | Keep only products priced at or below this amount in BRL. Applied by the store. |
minInterestFreeInstallments | integer | 0 | Keep only products payable in at least this many interest free instalments (parcelas sem juros), 0 to 24. Applied to the results. 0 means no requirement. |
inStockOnly | boolean | false | Keep only products the store will currently accept an order for. Applied to the results, because the store returns sold out listings alongside available ones. |
onSaleOnly | boolean | false | Keep only products whose current price is below their advertised original price. Applied to the results. The PIX cash discount does not count here; it is returned separately in pixPrice. |
sortBy | string | relevance | One of relevance, price_asc, price_desc, best_selling, best_rated, newest, biggest_discount, name_asc, name_desc. All nine are the store's own orderings, applied at the source. |
Output, limits and extra lookups
| Parameter | Type | Default | Description |
|---|---|---|---|
fetchDetails | boolean | false | Read the delivery estimate, shipping cost and pickup availability for each product at the postal code below. One extra request per product, billed as one Detail enrichment event per product returned. |
deliveryPostalCode | string | 01310100 | Destination for delivery enrichment. The default is central Sao Paulo; replace it with your own 8 digit Brazilian postal code (CEP) for destination-specific shipping cost and delivery time. |
fetchReviews | boolean | false | Add each product's rating, review count, per star breakdown and individual reviews. Ratings are looked up for a whole result page in one request; only a product that actually has reviews costs a request of its own, and only those products are billed a Detail enrichment event. |
maxReviewsPerProduct | integer | 20 | Cap on individual reviews returned per product. The rating, count and per star breakdown stay complete regardless. 0 returns all reviews a product has. |
maxItems | integer | 20 | Maximum products returned across the whole run. 0 means unlimited. |
maxPages | integer | 0 | Maximum result pages read per keyword, department or link. 0 means no limit, which is the default. |
Resume and recurring updates
| Parameter | Type | Default | Description |
|---|---|---|---|
resumeFromRunId | string | (none) | Continue ONE interrupted run. Paste that run's id or dataset id and this run skips, and does not bill for, everything already collected there. |
incrementalMode | boolean | false | Turn on for daily or recurring monitoring of the same search. The first run returns everything as NEW; later runs return only NEW, UPDATED and REAPPEARED. |
stateKey | string | (none) | Incremental mode only. Name a monitoring campaign to keep its state stable, or to deliberately share state across runs. Left empty, the key is derived from the mode, keywords, links, filters and lookup settings, so two different setups never mix state. |
emitUnchanged | boolean | false | Incremental mode only. Also return products that have not changed, marked UNCHANGED. This returns, and bills, extra rows. |
emitExpired | boolean | false | Incremental mode only. Also return products that were present before and are no longer found, marked EXPIRED. Only produced after a complete scan, so never when maxItems capped the run or resumeFromRunId was used. This returns, and bills, extra rows. |
Connection
| Parameter | Type | Default | Description |
|---|---|---|---|
proxy | object | Apify Proxy, standard pool | The standard pool is the default and is sufficient for this store. A residential pool is available but is not needed here. |
Recurring runs: resume and incremental mode
These are two different features and they solve two different problems.
Resume from a previous run continues ONE interrupted run. Paste that run's id or dataset id and this run skips everything it already collected.
Incremental mode is for a schedule. Run the same search daily and get only what changed.
The first run returns everything as NEW; later runs return NEW, UPDATED and REAPPEARED,
with changedFields naming exactly what moved. UNCHANGED rows are suppressed (and not
billed) unless you ask for them. EXPIRED rows are only produced once a run has fully scanned
the tracked search, so a run capped by Max products, a resumed run, or a run that collected
nothing can never wrongly tombstone live products.
State is kept per search, so two different keyword or filter setups never mix. Use State key to name a campaign, or to deliberately share state between runs.
Four fields are deliberately left out of change detection and are never named in
changedFields:
scrapedAtandpriceValidUntilare clocks. The store stampspriceValidUntilabout a year ahead of the request itself, so it moves on every fetch.- the nested
deliveryobject carries absolute estimated dates that roll forward daily. The two values derived from it,shippingCostanddeliveryEstimate, ARE tracked, so a genuine shipping change is still detected. reviews,installmentPlansandspecificationGroupsare bulky. A change in any of them is still detected throughreviewCount,rating,ratingBreakdown,maxInterestFreeInstallments,interestFreeInstallmentValue,maxInstallmentsandspecifications, all of which are tracked.
Cost and limits
- Max products defaults to 20 so a first run cannot surprise you. Set it to 0 for no limit.
- Max result pages defaults to 0, meaning unlimited: a run stops at your item cap, at the end of the results, or when there is nothing new left to return.
- The store answers over the standard connection pool, which every Apify plan includes. That is the default and it is the cheapest option. A residential pool is available if you want one, but this store does not need it.
- A run that could not read any result page fails loudly with the reason. It never reports "succeeded, 0 items" when the real problem was a connection.
Example row (abridged, values illustrative)
{"productId": "8365907","skuId": "8844834","name": "Notebook Lenovo IdeaPad Slim 3 Intel Core 3 100U 8GB RAM SSD 256GB 15.3\" Full HD Windows 11","brand": "Lenovo","url": "https://www.americanas.com.br/notebook-lenovo-ideapad-slim-3-.../p","department": "Computadores e Informática","categoryPath": "Computadores e Informática > Notebook","sellerId": "1","sellerName": "AMERICANAS SA","sellerType": "first_party","sellerReputation": null,"currency": "BRL","price": 3998.95,"originalPrice": 3998.95,"discountPercent": null,"onSale": false,"pixPrice": 3799.0,"pixDiscountPercent": 5.0,"maxInterestFreeInstallments": 8,"maxInstallments": 12,"inStock": true,"warranty": "12","itemCondition": "Novo","variantCount": 1,"rating": 5.0,"reviewCount": 2,"ratingBreakdown": { "1": 0, "2": 0, "3": 0, "4": 0, "5": 2 },"shippingCost": 12.9,"deliveryEstimate": "0bd","pickupAvailable": true,"searchMode": "search","scrapedAt": "2026-08-27T13:00:00Z"}
Send results into your apps (MCP connectors)
Optionally pipe results into Notion, Linear, Airtable or Apify through a Model Context Protocol (MCP) connector. Authorize one under Apify, Settings, API and Integrations, then pick it in the input. Notion gets a page per item; the other connectors get a best effort write or digest. This is a delivery step after the scrape: the export never changes the dataset, and a connector that cannot be reached never breaks the run.
| Parameter | Type | Default | Description |
|---|---|---|---|
mcpConnectors | array | (empty) | Which authorized MCP connectors to send results to. Authorize one under Apify, Settings, API and Integrations, then select it here. Leave empty to skip. |
notionParentPageUrl | string | (empty) | Notion connector only. URL or id of the Notion page under which item pages are created. Ignored by the other connectors. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run (1 to 1000). Does not affect the dataset. |