MercadoLivre Deals (ofertas do dia)
Pricing
from $2.70 / 1,000 results
MercadoLivre Deals (ofertas do dia)
Scrape every deal from MercadoLivre's "Ofertas do Dia" page into structured JSON — title, current & original price, discount %, coupon, seller, official-store badge, rating, installments, and shipping (incl. Full). Run once or schedule it daily to track promotions automatically. No code required.
Pricing
from $2.70 / 1,000 results
Rating
0.0
(0)
Developer
Rise and Code
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
2
Monthly active users
19 days ago
Last modified
Categories
Share
What does this MercadoLivre deals scraper do?
This Actor scrapes the MercadoLivre "Ofertas do Dia" (daily deals, or promoções) page — Brazil's largest e-commerce marketplace — and returns clean, structured JSON for every deal and promotion on offer. For each discounted product you get the title, current price, original price, discount percentage, deal type (Oferta do Dia / Relâmpago), seller, rating, installments, and shipping info. Run it once or schedule it daily to track MercadoLivre promotions automatically, with API access, proxy rotation, and monitoring built in on the Apify platform.
Why scrape MercadoLivre daily deals?
- 🔥 Deal monitoring — capture every promotion the moment it goes live and react before stock runs out.
- 💸 Price intelligence — compare deal prices against original prices to measure real discount depth across categories.
- 🛒 Competitor research — see which sellers and products MercadoLivre is pushing in its featured deals.
- 📈 Repricing & arbitrage — feed live deal prices into your own pricing or sourcing workflows.
- 📊 Market trends — aggregate daily deals over time to spot seasonal patterns and category demand.
- 🤖 Automation — schedule runs and push results into spreadsheets, databases, or dashboards through Apify integrations.
Looking for something else on MercadoLivre?
This Actor returns whatever MercadoLivre is promoting on its Ofertas do Dia page.
- Search by keyword — use our MercadoLivre Search Scraper to scrape listings for a specific product, brand, or search term.
- Full product details & reviews — feed product URLs or IDs (e.g. from the deals found here) into our MercadoLivre Product Detail + Reviews to get specs, seller reputation, variants, stock, and customer reviews.
How to use this MercadoLivre deals scraper
- Open the Actor on Apify and click Try for free.
- In the Input tab, set Max Items to how many deals you want to collect.
- Optionally type a Category code to limit the deals to a single department (or leave it on
allfor everything). - Click Start and wait for the run to finish.
- Open the Output tab or download the dataset as JSON, CSV, Excel, or HTML.
To trigger a run via the Apify API:
curl -X POST \"https://api.apify.com/v2/acts/<YOUR_ACTOR_ID>/runs?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"maxItems": 200,"category": "all"}'
Input
Configure the Actor in the Input tab or via JSON.
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 48 | Maximum number of deals to scrape (20–1000). The deals page serves 48 per page; the scraper stops as soon as it reaches this count, even mid-page, so you can set it as low as 20 to cut cost on narrow searches. The default of 48 is one full page; higher values paginate 48 at a time until reached or the deals run out. |
category | string | "all" | MercadoLivre category to restrict deals to (e.g. MLB1051 for Celulares). Use "all" for no category filter. |
Example input:
{"maxItems": 200,"category": "MLB1051"}
category is a free-text field — MercadoLivre's own category list changes over time, so pick the ID straight from the Categorias filter on the deals page (e.g. MLB1051 for Celulares e Telefones, MLB1648 for Informática, MLB1430 for Calçados, Roupas e Bolsas). Any valid MercadoLivre category ID works, via the Console or the API.
Output
One dataset record is pushed per deal. Download the dataset as JSON, CSV, Excel, or HTML from the Output tab or via the Apify API.
Output example
[{"position": 1,"productId": "MLB178925","itemId": "MLB3456789012","title": "Smartphone Samsung Galaxy A55 5G 256GB","url": "https://www.mercadolivre.com.br/p/MLB178925","thumbnail": "https://http2.mlstatic.com/D_NQ_NP_123456-MLB789.jpg","seller": "Samsung Store Oficial","isOfficialStore": true,"price": 1799.0,"originalPrice": 2499.0,"currency": "BRL","discountPercentage": 28,"dealType": "OFERTA DO DIA","installments": "ou 10x R$ 179,90 sem juros","coupon": "Cupom 5% OFF","rating": 4.8,"soldQuantity": 10000,"soldLabel": "+10mil vendidos","shipping": "Frete grátis","isFullShipping": true,"highlight": "MAIS VENDIDO","isSponsored": false,"isInternational": false,"scrapedAt": "2026-06-26T12:00:00.000Z"}//...]
Output fields
| Field | Type | Description |
|---|---|---|
position | number | 1-based position in the deals listing (across pages) |
productId | string | null | Catalog/product-group ID (e.g. MLB178925). Groups all seller offers for the same product. null for listings not linked to a catalog entry. |
itemId | string | null | Individual listing ID (e.g. MLB3456789012). Unique per seller offer — equivalent to the wid parameter in the card URL. |
title | string | Product title |
url | string | Product page URL |
thumbnail | string | null | Product image URL |
seller | string | null | Seller or official store name |
isOfficialStore | boolean | Whether the seller carries the "Loja oficial" (official store) badge |
price | number | null | Current (discounted) price in BRL |
originalPrice | number | null | Original price before the deal discount |
currency | string | Always "BRL" |
discountPercentage | number | null | Discount percentage (e.g. 28) |
dealType | string | null | Deal badge, e.g. "OFERTA DO DIA" or "OFERTA RELÂMPAGO". null when the card carries no deal label. |
installments | string | null | Instalment text |
coupon | string | null | Coupon badge on the card (e.g. "Cupom 5% OFF"). null when no coupon is offered. |
rating | number | null | Average user rating (0–5) |
soldQuantity | number | null | Units sold, as a number (e.g. 10000). MercadoLivre publishes this as a threshold, so treat it as a floor — the product has sold at least this many. null when the card shows no sold label. |
soldLabel | string | null | The sold figure exactly as the card shows it (e.g. "+10mil vendidos"). null when the card shows no sold label. |
shipping | string | null | Shipping label (e.g. "Frete grátis") |
isFullShipping | boolean | Whether the listing ships via MercadoLivre Full (fulfillment) |
highlight | string | null | Badge text (e.g. "MAIS VENDIDO") |
isSponsored | boolean | Whether the listing is a paid ad |
isInternational | boolean | Whether the product is sold by a cross-border (international) merchant, indicated by the CBT badge |
scrapedAt | string | ISO 8601 timestamp of when the record was scraped |
How much does it cost to scrape MercadoLivre deals?
This Actor uses Apify's pay-per-event pricing: you pay fixed prices for what the Actor does, and you are not charged separately for Apify platform usage (compute, bandwidth, or other infrastructure). There are just two charges:
| Event | When it applies |
|---|---|
| Per run | Once each time a run starts |
| Per deal | For each deal returned to the dataset |
The per-run fee covers the fixed infrastructure every run relies on — premium residential IPs and the compute to reliably load and parse the deals page. The per-deal fee applies to each record pushed to the dataset. This means the exact cost of a run is predictable before you start it: it depends only on how many deals you ask for, not on how long the run takes or how much bandwidth it uses.
A quick estimate at the current rates:
Deals (maxItems) | Approx. cost per run |
|---|---|
| 20 (min) | ~$0.10 |
| 48 (1 page, default) | ~$0.18 |
| 200 | ~$0.64 |
| 1000 (max) | ~$3.04 |
See the Pricing section on the Actor's page for the exact per-run and per-deal rates. Apify's free plan also includes monthly free usage — enough to try the Actor without paying anything.
Tips to keep costs low
- Set
maxItemsto only what you need — you pay per deal returned. It can go as low as 20 for narrow, targeted searches. - Use the
categoryfilter to focus on the department you care about instead of paging through every deal.
FAQ
Is it legal to scrape MercadoLivre?
This Actor only collects publicly available product/deal data — the same information visible to any visitor without logging in. No private user data is collected. Always comply with MercadoLivre's Terms of Service and applicable local laws. Do not use scraped data in ways that compete unfairly with MercadoLivre or its sellers.
Do I need an API key or MercadoLivre account?
No. The Actor works without any MercadoLivre credentials. You only need a free Apify account to run it.
Can I monitor deals on a schedule?
Yes. Use Apify Schedules to run the Actor automatically (e.g. every morning) and store each run's dataset, then compare results over time to build a deal/price history.
Some fields come back as null — is that expected?
Yes. Not every deal card includes all fields. For example, rating only appears when the product has reviews, soldQuantity and soldLabel only once a product has sold enough for MercadoLivre to show a figure, coupon only when a coupon is offered, and dealType only when a deal badge is shown. Missing fields are set to null rather than omitted so the schema is always consistent.
The scraper got bot-blocked — what can I do?
Blocks are rare: every run uses premium residential IPs and automatic retries to keep success rates high. If a run still comes back empty or partial, simply run it again — transient blocks usually clear on a retry.
Changelog
2026-08-24
- Improved how the Actor handles MercadoLivre's temporary blocks. It now keeps trying instead of giving up early, and gets through those runs noticeably faster — so a run is far more likely to come back with the full number of deals you asked for.
- Fixed
discountPercentage, which had stopped populating again after MercadoLivre changed the discount badge on the deals page. - Added
soldQuantityandsoldLabel— how many units the product has sold, both as a number you can sort by and as the text MercadoLivre shows on the card. - Removed
ratingCount. MercadoLivre no longer shows a review total on the deals page — it shows the units sold in that spot instead, which is what the two new fields above capture.
2026-07-14
- Fixed
discountPercentage— the field had stopped populating after MercadoLivre updated the discount badge on the deals page. Discount values are now extracted correctly again for every deal.
2026-07-09
- Changed
categoryinput from a fixed dropdown to a free-text field. MercadoLivre's own category list on the deals page changes over time, so a hard-coded enum required constant syncing and its drift-detection alert was firing on almost every run. Pass any MercadoLivre category ID (e.g.MLB1051) orall— see the Input section for how to find a category's ID. - Changed the
maxItemsminimum from 48 (one full page) down to 20. This lets you keep the cost down on more specific searches (e.g. a narrowcategoryfilter) instead of always paying for a full page of deals.
Support
If you encounter a bug or have a suggestion for this Actor or for a new one, please reach out via the Issues tab or at contact.riseandcode@gmail.com and we'll look into it ASAP. We respond in English 🇺🇸 and Portuguese 🇧🇷.