Mercado Livre Brazil - Products, Prices, Sellers & Reviews
Pricing
from $2.00 / 1,000 product results
Mercado Livre Brazil - Products, Prices, Sellers & Reviews
Scrape Mercado Livre Brazil by keyword or URL. Filter by category, brand, price, condition, shipping, official store, and seller rating. Extract prices, discounts, instalments, stock, delivery, seller details, variants, specifications, and buyer reviews.
Pricing
from $2.00 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
19
Monthly active users
a day ago
Last modified
Categories
Share
Mercado Livre Brazil Scraper: Prices, Stock, Sellers and Buyer Opinions
Mercado Livre Brazil Scraper turns Mercado Livre Brazil (mercadolivre.com.br), Latin America's largest online marketplace, into structured product data. Search by keyword with the marketplace's own filters, or paste product, search, category and deals links. Every product comes back with its price, price before discount, discount percentage, instalment terms, shipping signals, seller and stock, and you can switch on full specifications, colour and model variants and buyer opinions per run. Export to JSON, CSV or Excel, pull the results through the API, or schedule the actor to track only what changed.
Why This Scraper?
- Two ways in. Search by keyword with the marketplace's own filters, or paste product, search, category and deals links, or bare MLB product codes.
- Full pricing picture. Price, price before discount, discount percentage and instalment terms come back with each product, plus free-shipping and marketplace-fulfilled signals on search and deals rows.
- Full details on demand. Switch on the description, the complete specification table, colour and model variants with their own prices and stock, and seller reputation, and pay the enrichment charge only when you ask for them.
- Buyer opinions. Collect the star breakdown and every opinion the marketplace publishes on the product page, with rating, text, date, country, helpful votes and photos.
- Genuine filters. Price range, condition, shipping, seller quality, discount and interest-free instalments are the marketplace's own filters, applied at the source. Category and brand are matched against the site's own filter list for your keyword; set one of the two per run.
- Honest search results. A row that only loosely matches your keyword is marked, so you can tell a genuine match from a loose one before you act on it.
- Built for monitoring. Incremental mode returns only new and changed products on recurring runs, and a refused run fails loudly instead of quietly returning an empty dataset.
Use Cases
- Price monitoring and repricing: track a product line's price, discount and stock across sellers to react to competitors.
- Market and assortment research: pull a whole search result set or deals feed, with specifications and variants, to compare products at scale.
- Review and reputation analysis: collect the star breakdown and buyer opinions for a product line to spot quality issues early.
- Deal and catalogue feeds: read the marketplace's deals and category listings for a content site or price-comparison feed.
- Recurring marketplace monitoring: schedule the actor and get only the new, updated or removed products since the last check.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
itemId | "MLB70040749", the listing's own MLB code |
catalogProductId | "MLB18654321", the catalogue product code shared by every seller of the same product |
title / url | "Notebook Exemplo 15 I5 8GB 512GB" / the product's mercadolivre.com.br address |
brand / model | "Marca Exemplo" / "X15" (full details, or a pasted product link) |
categoryId / categoryPath / breadcrumb | "MLB1648" (search, browse and deals rows) / "Informática > Notebooks" / the full path (full details, buyer opinions, or a pasted product link) |
price / originalPrice / discountPercent | 3749.41 / 4499.0 / 17 |
currency | "BRL", always |
installments / installmentsText | quantity, amount, total and interest-free flag on search and browse rows / the page's own instalment text on full-detail rows, "10x 374.94 sem juros" |
condition | "new", "used", "refurbished" or "open_box" (full details, or a pasted product link) |
freeShipping / fulfillment / shippingText | true / false / "Chegando em 2 dias" (search and deals rows) |
sellerName / officialStore | "Loja Exemplo" / false |
seller | seller id, type and reputation grade (full details, buyer opinions, or a pasted product link) |
availableQuantity / stockStatus | 12 / "Últimas unidades disponíveis" (full details, buyer opinions, or a pasted product link) |
soldQuantity | 340 |
images / videos | media gallery addresses (a partial gallery on every record, the complete gallery and videos on full details, buyer opinions, or a pasted product link) |
variants | colour and model variants, each with its own code, address, price and availability (full details, buyer opinions, or a pasted product link) |
attributes | the full specification table, as name, value and group triples (full details, buyer opinions, or a pasted product link) |
description | the product description (full details, buyer opinions, or a pasted product link) |
rating / reviewCount / ratingBreakdown | 4.7 (search cards too, when the product has ratings) / 184 / {"5": 124, "4": 47} (full details or buyer opinions) |
reviews | each opinion the marketplace publishes on the product page: rating, text, date, country, helpful votes, photos (buyer opinions only) |
exactMatch / searchFallback | present only on a keyword search row that is a loose match, false / true |
changeType / changedFields / firstSeenAt / lastSeenAt | incremental mode only |
Opinion authors are never returned: the marketplace does not publish a name or profile with a product opinion, so none is invented. Loose-match marking (exactMatch / searchFallback) applies to keyword searches in search mode; a pasted search-result link returns its rows exactly as the marketplace ranked them, unmarked.
How to Use
- Pick a mode:
search(by keyword, with the marketplace's own filters) orurl(paste product, search, category or deals links, or bare MLB codes). - For search mode, fill in your keywords and any filters. For url mode, paste your links.
- Turn on Fetch full details and Fetch buyer opinions if you want the full specification table, variants, stock, seller reputation and published opinions. Each opens the product page and adds the Detail enrichment charge.
- Set Max products (and optionally Max result pages per search) to size the run, then click Start.
Keyword search with filters:
{"mode": "search","queries": ["notebook"],"category": "Notebooks","condition": "new","maxPrice": 4000,"freeShippingOnly": true,"maxItems": 50}
Paste a product link, with full details and opinions:
{"mode": "url","urls": ["https://www.mercadolivre.com.br/notebook-exemplo/p/MLB70040749"],"fetchDetails": true,"fetchReviews": true,"maxReviewsPerProduct": 30}
A deals or category link:
{"mode": "url","urls": ["https://www.mercadolivre.com.br/ofertas"],"maxItems": 200}
Recurring incremental monitoring:
{"mode": "search","queries": ["tenis corrida"],"incrementalMode": true,"stateKey": "tenis-corrida-watch","emitExpired": true}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/mercadolivre-com-br-scraper").call(run_input={"mode": "search", "queries": ["notebook"], "maxItems": 20})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["title"], product["price"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/mercadolivre-com-br-scraper').call({mode: 'search', queries: ['notebook'], maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Connection and cost shape
Search result pages and product pages are served by the marketplace only to a Brazilian consumer-grade connection, so the default connection for this actor is the Residential proxy group, country Brazil, and that is what these two page types need. Category and deals pages need no such connection and work on any tier. A search page or a product page also gets its own fresh connection, because the marketplace retires a connection after it has served one such page, so each product page you enrich carries its own cost. Max products is the run's one hard cap; Max result pages per search bounds how deep a search walk goes when you want a shallower, cheaper pull.
Resume and recurring updates
Two different things.
- Resume from a previous run (
resumeFromRunId) continues one specific interrupted run. Paste its run or dataset id and the products already collected there are skipped, so they are neither returned nor billed again. Raise Max result pages per search when you resume a deep pull, because the pages the previous run covered still count against it. - Incremental mode (
incrementalMode) is for recurring monitoring of the same search. The first run returns everything asNEW. Later runs returnNEWandUPDATEDproducts (withchangedFieldsnaming what moved), and suppressUNCHANGEDones unless Emit unchanged is on. Emit expired additionally tombstones products that a run no longer finds asEXPIRED, but only once a run has completely scanned the tracked search: never when Max products capped it, never after a resume, and never when a run collected nothing.REAPPEAREDis only produced for a product that was previously tombstoned this way and is then found again in a later run, so a monitoring campaign that never turns on Emit expired will never see aREAPPEAREDrow. State is kept per keyword-and-filter setup; use State key to name a campaign or to deliberately share one.
reviews bodies are excluded from change detection: a popular product carries many opinion rows, and tracking every one would rewrite the record on every new opinion. Nothing is lost: rating, reviewCount and ratingBreakdown are all tracked, so a new or deleted opinion still marks the product UPDATED.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify, Settings, Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. If the picker is empty, you have not authorized a connector yet.
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search or url. |
queries | array | none (prefill: ["notebook"]) | Keywords to search, search mode only. Each is searched separately and results are merged and de-duplicated. |
urls | array | none (prefill: a sample product link) | Links to scrape, url mode only: product pages, search pages, deals pages, category pages, or bare MLB codes. |
category | string | none | Narrow a keyword search to one marketplace category, by the name the site shows in its own filter. |
brand | string | none | Narrow a keyword search to one brand, by the name the site shows in its own filter. |
condition | string | any | any, new, used, refurbished or open_box. |
minPrice | integer | none | Minimum price in reais, search mode only. |
maxPrice | integer | none | Maximum price in reais, search mode only. |
freeShippingOnly | boolean | false | Return only products the marketplace ships free. |
fulfillmentOnly | boolean | false | Return only products stocked and shipped from the marketplace's own warehouses. |
officialStoresOnly | boolean | false | Return only listings sold by an official brand store. |
bestSellersOnly | boolean | false | Return only listings from sellers the marketplace flags as top-rated. |
minDiscountPercent | integer | none | Return only products discounted by at least this percentage (5 to 60). |
interestFreeInstallments | boolean | false | Return only products payable in interest-free instalments. |
sortBy | string | relevance | relevance, price_asc or price_desc. |
fetchDetails | boolean | false | Open each product page for description, full specifications, variants, stock, seller reputation and the complete gallery. Charged once per product as Detail enrichment. |
fetchReviews | boolean | false | Collect buyer opinions. Opens the product page the same way fetchDetails does, and is charged the same Detail enrichment event when it is the only toggle on. |
maxReviewsPerProduct | integer | 20 | Cap on opinions collected per product (1 to 500). |
maxItems | integer | 20 | Hard cap on products returned and billed for, across every keyword or link (1 to 10000). |
maxPages | integer | 0 | Optional bound on result pages walked per keyword or search link. 0 means unlimited: the walk goes as deep as the marketplace serves and stops on Max products or the site's own end of results. |
resumeFromRunId | string | none | Continue one specific interrupted run without re-billing what it already collected. |
incrementalMode | boolean | false | Return only new and changed products on recurring runs of the same search. |
stateKey | string | none | Name or share an incremental-mode monitoring campaign. Left empty, a key is derived automatically from the search and filter setup. |
emitUnchanged | boolean | false | Also return (and bill) products that did not change, marked UNCHANGED. |
emitExpired | boolean | false | Also return (and bill) products no longer found, marked EXPIRED, once a run has completely scanned the tracked search. |
proxy | object | Residential proxy group, country Brazil | Connection settings. Search results and product pages need this tier; category and deals pages work on any tier. |
mcpConnectors | array | none | Optional: send a summary of each product to apps you authorized under Integrations. |
notionParentPageUrl | string | none | Notion connector only: page under which product pages are created. |
maxNotifyListings | integer | 50 | Cap on products written to each connector per run. Does not affect the dataset (1 to 500; higher values are capped at 500). |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"itemId": "MLB70040749","catalogProductId": "MLB18654321","title": "Notebook Exemplo 15 I5 8GB 512GB SSD Win 11","url": "https://www.mercadolivre.com.br/notebook-exemplo/p/MLB70040749","brand": "Marca Exemplo","model": "X15","categoryId": "MLB1648","categoryPath": "Informática > Notebooks","price": 3749.41,"originalPrice": 4499.0,"discountPercent": 17,"currency": "BRL","installments": { "text": "10x R$ 374,94 sem juros", "currency": "BRL" },"installmentsText": "10x R$ 374,94 sem juros","condition": "new","freeShipping": true,"fulfillment": true,"shippingText": "Chegando em 2 dias","sellerName": "Loja Exemplo","officialStore": false,"seller": { "name": "Loja Exemplo", "sellerId": "998877", "type": "normal", "reputation": "green" },"availableQuantity": 12,"stockStatus": "Últimas unidades disponíveis","soldQuantity": 340,"images": ["https://http2.mlstatic.com/D_NQ_NP_123456-O.webp"],"variants": [{ "axis": "COLOR", "axisLabel": "Cor", "name": "Cinza", "productId": "MLB70040750", "price": 3749.41, "available": true }],"attributes": [{ "name": "Marca", "value": "Marca Exemplo", "group": "Geral" }],"description": "Notebook com processador Exemplo, 8GB de RAM e SSD de 512GB.","rating": 4.7,"reviewCount": 184,"ratingBreakdown": { "5": 124, "4": 47, "3": 8, "2": 3, "1": 2 },"reviews": [{ "reviewId": "a1b2", "rating": 5, "text": "Excelente produto", "date": "2026-01-05", "country": "BR", "helpfulCount": 12, "images": [], "videoCount": 0 }],"scrapedAt": "2026-01-05T12:00:00+00:00"}
Plan Requirement
The default connection uses the Residential proxy group, country Brazil, which search result pages and product pages need. Reaching that tier requires an Apify plan that includes residential proxies; without it the connection itself is refused. Category and deals links keep working on any plan when a run contains only those links. If your plan does not include the residential tier, the run tells you so plainly and names the working alternative, rather than sending you back to a preset your plan cannot use.
FAQ
How much does it cost?
You pay per product returned, with the Detail enrichment surcharge billed only when full details or buyer opinions are switched on, plus one Actor start charge per run. The Pricing tab shows the current rates. Use Max products to cap the cost of any run.
Is it legal to scrape Mercado Livre?
This actor collects only publicly available marketplace data. You are responsible for how you use it: follow Mercado Livre's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product listings, prices and specifications are generally facts, but images, descriptions and opinions may be subject to third-party rights.
Can I get only new or changed products on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only NEW and UPDATED products (UNCHANGED ones are suppressed and not billed unless you turn that on too). Turn on Emit expired if you also want to know when a tracked product disappears; it is only produced once a run has completely scanned the tracked search.
Why did my category link return a deals feed instead of the category page?
A /c/<slug> category page is a marketing landing that carries no product listings at all. The actor reads the landing to find which category it names, then reads that category's deals feed, which is where its products live, and logs that this is what happened. A keyword search or a pasted lista.mercadolivre.com.br search link is the way to walk a category's full listing set.
Why did my run fail instead of returning an empty dataset?
A search that genuinely has no matches still succeeds with zero rows. A run fails only when result pages were refused rather than empty. If your connection lacks the Residential Brazil tier the run stops immediately and tells you so. If that tier is selected but your plan is not entitled to it, the run confirms the refusal at the connection gateway and tells you a paid plan is required, rather than asking you to restore a preset your plan cannot use. If pages start failing partway through a full-details or buyer-opinions run, full details are switched off for the rest of that run and the remaining products come back with their catalogue fields only, uncharged for enrichment.
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.
🔗 More scrapers you might like
Pair this actor with these related scrapers from the same team:
| 🛒 Americanas Brazil Scrape Americanas Brazil (americanas.com.br) by keyword, department or pasted link... | ⚽ Netshoes Brazil Scrape sportswear and footwear from netshoes.com.br. Search by keyword with the store's... |
| 🔌 Casas Bahia Brazil Electronics & Home Goods Scraper Scrape products from Casas Bahia Brazil by keyword, department, or URL. Filter by brand... | 🛒 Drogasil Brazil Pharmacy, Health & Beauty Scraper Scrape Drogasil (drogasil.com.br) medicines, health and beauty products by keyword... |
| 🏠 ZAP Imóveis Brazil Property Scraper From $1/1K. Scrape Zap Imóveis property listings across sale, rental, and new... | 🏠 QuintoAndar Scraper Scrape QuintoAndar property listings across Brazil with 80+ fields, including rent, sale... |
💬 Support & custom scrapers
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.