MercadoLivre Deals Scraper avatar

MercadoLivre Deals Scraper

Pricing

from $2.70 / 1,000 results

Go to Apify Store
MercadoLivre Deals Scraper

MercadoLivre Deals Scraper

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

Rise and Code

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 a specific product instead of daily deals?

This Actor returns whatever MercadoLivre is promoting on its Ofertas do Dia page — you can't search it by keyword. To scrape listings for a specific product, brand, or search term, use our MercadoLivre Search Scraper instead.

How to use this MercadoLivre deals scraper

  1. Open the Actor on Apify and click Try for free.
  2. In the Input tab, set Max Items to how many deals you want to collect.
  3. Optionally pick a Category to limit the deals to a single department (or leave it on Todas as categorias for everything).
  4. Click Start and wait for the run to finish.
  5. 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.

FieldTypeDefaultDescription
maxItemsinteger48Maximum number of deals to scrape (48–1000). The deals page serves 48 per page, so 48 is one full page; higher values paginate 48 at a time until reached or the deals run out.
categorystring"all"MercadoLivre category to restrict deals to (e.g. MLB1051 for Celulares). Use "all" for no category filter.

Example input:

{
"maxItems": 200,
"category": "MLB1051"
}

The category dropdown includes the most popular MercadoLivre departments. Each value is a MercadoLivre category ID (MLBxxxx); advanced users can pass any valid category ID via 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,
"ratingCount": 3627,
"shipping": "Frete grátis",
"isFullShipping": true,
"highlight": "MAIS VENDIDO",
"isSponsored": false,
"isInternational": false,
"scrapedAt": "2026-06-26T12:00:00.000Z"
}
//...
]

Output fields

FieldTypeDescription
positionnumber1-based position in the deals listing (across pages)
productIdstring | nullCatalog/product-group ID (e.g. MLB178925). Groups all seller offers for the same product. null for listings not linked to a catalog entry.
itemIdstring | nullIndividual listing ID (e.g. MLB3456789012). Unique per seller offer — equivalent to the wid parameter in the card URL.
titlestringProduct title
urlstringProduct page URL
thumbnailstring | nullProduct image URL
sellerstring | nullSeller or official store name
isOfficialStorebooleanWhether the seller carries the "Loja oficial" (official store) badge
pricenumber | nullCurrent (discounted) price in BRL
originalPricenumber | nullOriginal price before the deal discount
currencystringAlways "BRL"
discountPercentagenumber | nullDiscount percentage (e.g. 28)
dealTypestring | nullDeal badge, e.g. "OFERTA DO DIA" or "OFERTA RELÂMPAGO". null when the card carries no deal label.
installmentsstring | nullInstalment text
couponstring | nullCoupon badge on the card (e.g. "Cupom 5% OFF"). null when no coupon is offered.
ratingnumber | nullAverage user rating (0–5)
ratingCountnumber | nullNumber of user ratings (e.g. 3627). null when unavailable.
shippingstring | nullShipping label (e.g. "Frete grátis")
isFullShippingbooleanWhether the listing ships via MercadoLivre Full (fulfillment)
highlightstring | nullBadge text (e.g. "MAIS VENDIDO")
isSponsoredbooleanWhether the listing is a paid ad
isInternationalbooleanWhether the product is sold by a cross-border (international) merchant, indicated by the CBT badge
scrapedAtstringISO 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:

EventWhen it applies
Per runOnce each time a run starts
Per dealFor 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
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 maxItems to only what you need — you pay per deal returned.
  • Use the category filter to focus on the department you care about instead of paging through every deal.

FAQ

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 and ratingCount only appear when the product has reviews, 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-06-26

  • Added isOfficialStore — whether the seller carries the "Loja oficial" (official store) badge.
  • Added coupon — coupon badge text on the card (e.g. "Cupom 5% OFF").
  • Added ratingCount — number of user ratings (e.g. 3627).
  • Removed soldCount — MercadoLivre's current card layout no longer exposes a sold/review count.
  • Removed soldPercentage — MercadoLivre replaced the stock meter with a countdown timer, so the "% sold" value is no longer available.
  • Fixed rating, discountPercentage, shipping, installments, dealType and isFullShipping, which had stopped populating (or returned dirty values) after MercadoLivre changed its card markup. dealType now also captures "OFERTA DO DIA" (previously it leaked into highlight).

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 and we'll look into it ASAP.