Mercado Libre Deals & Best Sellers Scraper
Under maintenancePricing
from $0.72 / 1,000 listings
Mercado Libre Deals & Best Sellers Scraper
Under maintenanceMercado Libre's deals board and best-seller lists as rows, in nine countries: price, previous price and discount, instalments, free shipping and Full, seller or brand, rating, sold count, link and photo. Filter deals by category, deal type and price. Not a keyword search. $0.75 per 1,000 listings.
Pricing
from $0.72 / 1,000 listings
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Share
Get Mercado Libre's deals board and best-seller lists as rows, for nine countries: one row per listing, with the price now, the price before, the discount, instalments, shipping, the seller or brand on the card, its rating and the sold count, with a link and a photo.
There is no keyword box. Mercado Libre's search, item and catalog pages want a signed-in account, so "iphone 15" is not something this can answer. It reads the two pages the site publishes to everyone, Ofertas and Más vendidos, and nothing else.
| Input | A country, then deals, best sellers or both |
| Output | One row per listing: price, previous price and discount, instalments, shipping and Full, seller or brand, rating, sold count, link and photo |
| Ceiling | 2,000 listings per run |
| Account needed | None |
| Price | $0.75 per 1,000 listings, flat on every plan. The free plan's $5 a month covers about 6,600 |
🔍 What Mercado Libre Scraper does
Deals. 48 a page, in the order the site shows them, narrowed by the filters the deals page itself offers: a top-level category, lightning deals or the deal of the day, a price range, instalment terms, free shipping, and Full. One set of filters reaches about 1,048 deals and then the page stops, however many it claims to have. Argentina's counted 11,246 on 13 September 2026. The status message tells you when you have hit that wall, and a category or a price band opens the rest.
Best sellers. The lists on the Más vendidos page: up to 20 products per category, for the six to ten categories Mercado Libre chooses to put there. Argentina's had 103 products in six lists, Brazil's 154 in ten. That page takes no filters. A category ID keeps only its list, when the page carries one.
Nine sites: Argentina, Brazil, Mexico, Chile, Colombia, Peru, Uruguay, Ecuador and Venezuela. Venezuela publishes no best-seller page, so it is deals only there.
📋 What data you get from each Mercado Libre listing
| What you get | Field |
|---|---|
| Which page and site it came from | source, country, siteId |
| Item, catalog product and title | itemId, productId, userProductId, title |
| Price now, the crossed-out price, the discount and the currency | price, originalPrice, discountPercent, currency |
| Instalments | installmentsCount, installmentAmount, installmentsInterestFree |
| Shipping and Full | freeShipping, fullFulfillment, shippingText |
| The seller or brand on the card, and official-store flag | seller, officialStore |
| Rating and sold count | rating, soldText, soldAtLeast |
| The deal: type, badge and end time | promotion, highlight, dealEndsAt |
| Best-seller rank and category | bestSellerRank, categoryId, categoryName, leafCategoryId |
| Where it sat, the link and the photo | position, page, url, thumbnail |
▶️ How to scrape Mercado Libre deals and best sellers
- Open Mercado Libre Scraper and click Try for free.
- Pick a Country.
- Under What to read, choose deals, best sellers or both.
- Add a Category ID or a price range if you want a slice rather than the whole board, set Maximum listings, then click Start.
- Download the dataset as JSON, CSV or Excel.
Run it with no country and you get one sample row, a real Argentine deal, so you can see the shape first. It is not charged.
💰 How much does it cost to scrape Mercado Libre?
$0.75 per 1,000 listings. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 6,600 listings.
You pay per listing row delivered. A deal that did not match your filters, a listing the site showed twice, a page that would not load, a run where the site ignored a filter, and the sample row are all free.
📥 What you give it
{"country": "AR","sources": ["deals"],"category": "MLA1051","maxPrice": 500000,"freeShipping": true,"maxItems": 200}
| Field | Default | What it is |
|---|---|---|
country | none | Which site to read: AR, BR, MX, CL, CO, PE, UY, EC or VE. The form starts at AR. |
sources | none, which means deals | deals, bestSellers, or both. |
category | none | A top-level category ID such as MLA1051 for phones in Argentina, MLB1051 in Brazil. Open the deals page, click a category, and the address bar shows it. It has to belong to the country you picked. |
promotionType | none | lightning or deal_of_the_day. Empty means every kind. |
minPrice, maxPrice | none | In the site's own currency, so 10000 is 10,000 Argentine pesos. Deals only. |
installments | none | yes, no_interest, good_financing or campaign_co_funded. Deals only. |
freeShipping | false | Only deals showing free shipping. Deals only. |
fullOnly | false | Only deals shipped by Mercado Libre's Full service. Deals only. |
maxPages | 22 | Deals pages to read, 48 each. 22 is the wall described above. |
maxItems | 1000 (the form shows 48) | Listings in one run, up to 2,000, deals and best sellers together. |
If the deals page does not recognise a filter value, it quietly shows everything instead. The run checks that each filter you set actually got applied. When one did not, you get no listings, nothing is charged, and an uncharged row names the filter. Nobody should pay for the whole board because a category ID had a typo in it.
📤 What you get back
A real deal row from a run on 20 September 2026, with the photo URL cut short:
{"source": "deals","country": "AR","siteId": "MLA","itemId": "MLA2692124128","productId": "MLA57692573","userProductId": "MLAU3347695717","title": "Combo Hidrolavadora Aspiradora Electrica Alta presion Trent HLT307 + VC19K Amarillo 50hz","price": 159365,"currency": "ARS","originalPrice": 457354.91,"discountPercent": 65,"installmentsCount": 6,"installmentAmount": 35854,"installmentsInterestFree": false,"freeShipping": true,"fullFulfillment": true,"shippingText": "Llega gratis mañana","seller": "TRENT","officialStore": true,"rating": 4.9,"soldText": "+5mil vendidos","soldAtLeast": 5000,"promotion": "deal_of_the_day","highlight": "OFERTA DEL DÍA","dealEndsAt": null,"bestSellerRank": null,"categoryId": null,"categoryName": null,"leafCategoryId": null,"position": 1,"page": 1,"url": "https://www.mercadolibre.com.ar/combo-hidrolavadora.../p/MLA57692573","thumbnail": "https://http2.mlstatic.com/D_Q_NP_2X_639539-MLA109280515034...","scrapedAt": "2026-09-20T19:01:40.776Z"}
| Field | How to read it |
|---|---|
soldText, soldAtLeast | The site's rounded label, and that label as a number. +5mil vendidos becomes 5000. It is a floor, not a count. |
seller | The name printed on the card, which is often a brand or its official store rather than the trading account. |
originalPrice, discountPercent | The crossed-out price and the badge, both as the card shows them. |
dealEndsAt | Set on lightning deals, null otherwise. |
bestSellerRank, leafCategoryId | Best-seller rows only. |
categoryId, categoryName | On deals, the category you filtered on. On best sellers, the list the row came from. |
scrapedAt | When the run started reading. |
Best-seller rows carry less than deal rows. That page prints no seller, rating, sold count, shipping
text or instalments, so those fields come back null.
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| A listing | No _sample or _diagnostic key | yes |
| The sample row | _sample: true, only when no country was picked | no |
| A diagnostic | _diagnostic: true, ok: false, charged: false and an errorCode | no |
| Code | What it means |
|---|---|
FILTER_NOT_APPLIED | Mercado Libre ignored a filter you set rather than rejecting it, so nothing was delivered or charged. filtersNotApplied names it. Check the value and run again. |
PAGE_UNREADABLE | No page could be read this run. Nothing was charged; try again shortly. |
The run's status message carries the rest: why it stopped, whether you reached the 1,048-deal wall,
any page that would not load, and how many rows were skipped or seen twice. RUN_REPORT in the
key-value store holds the same thing broken down per source, per page and per filter.
💡 What people use it for
- Watching a category's discounts day by day, on a schedule, and keeping the ones that repeat.
- Tracking a brand's own deals by filtering on its category and matching
seller. - Pulling the best-seller lists once a week to see what moves in and out of the top 20.
- Comparing the same catalog product across countries, since
productIdis per site but the title and photo line up.
🚧 What it does not do
- No keyword search and no sorting. The deals page offers neither, so rows come in Mercado Libre's order.
- No seller ID, reputation, item condition or location. These cards do not print them.
- Best sellers carry fewer fields, because that page shows fewer.
- About 1,048 deals per filter set. Splitting by category or price band is the way past it.
- Only the lists the hub page shows. A single category's own best-seller page is not readable.
- Prices are a snapshot. Lightning deals often end within hours, and
dealEndsAtsays when. - Card order differs between visitors, so two runs of the same filters can disagree on position.
- One country per run.
- The deals board can reshuffle mid-run, so a deal moving between pages may be seen twice, which is dropped, or missed.
- It is not an official Mercado Libre tool. Dami's Studio is independent and is not affiliated with or endorsed by Mercado Libre, or by any other company named on this page.
🧭 Which marketplace scraper do you need?
| If you want | Use |
|---|---|
| The deals board and best-seller lists on Mercado Libre | This one |
| Magalu products with card price, Pix price and seller | Magazine Luiza Scraper |
| Brazilian classified ads from OLX | OLX Brazil Scraper |
| Brazilian car listings with prices against the FIPE table | Webmotors Scraper |
| The Best Sellers, New Releases or Movers & Shakers ranking for an Amazon category | Amazon Bestsellers Scraper |
| AliExpress search results with prices and order counts | AliExpress Products Scraper |
❓ Questions people ask
Do I need a Mercado Libre account?
No. It reads the two pages the site publishes to everyone.
How do I get only phones on sale in Brazil?
Country BR, category MLB1051.
Why fewer deals than the page claims?
The board stops at about 1,048 for one filter set. Split the run by category or by price band.
Can I get the lightning deals every morning?
Yes. Schedule it with Deal type on lightning deals. Each run returns what is on the board at that moment.
Which countries have best sellers?
All of them except Venezuela, which publishes deals only.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code
for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/mercadolibre-scraper. Either way the
run happens on your Apify account at the same price.
Is scraping Mercado Libre legal?
These are public pages. Read the site's terms of use against what you plan to do. Apify's write-up on the legality of web scraping is a starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the run ID, the country and the filters you used; the status message usually names the problem on its own.