# Mercado Libre Scraper (`lergassy/mercadolibre-scraper`) Actor

Extract Mercado Libre and Mercado Livre data from all 18 Latin American marketplaces: products, prices, discounts, sellers, official stores, daily deals and buyer reviews with ratings and photos. Export data, run via API, schedule runs, or integrate with other tools or AI workflows.

- **URL**: https://apify.com/lergassy/mercadolibre-scraper.md
- **Developed by:** [Matvey](https://apify.com/lergassy) (community)
- **Categories:** E-commerce, Automation, AI
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**Mercado Libre Scraper** extracts public **Mercado Libre and Mercado Livre data** from all **18 Latin American marketplaces** without the official API: product cards from search and category pages, full product details, buyer reviews with ratings and photos, official store catalogs and today's deals. **No login, no API key and no Mercado Libre developer account** are needed. Export to JSON, CSV or Excel, run it via API, schedule runs, or plug it into n8n, Make, Zapier, Google Sheets or an AI agent through MCP.

![How Mercado Libre Scraper works: search, product details, reviews, deals and official store modes into one dataset](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/mercadolibre/mercadolibre-scraper-how-it-works.png)

### What is Mercado Libre Scraper?

Mercado Libre (mercadolibre.com.mx, .com.ar, .cl, .com.co, .com.pe … and Mercado Livre mercadolivre.com.br) is the largest e-commerce marketplace in Latin America. Its official API requires an app, OAuth tokens and seller permissions, and since 2024 the public search and item endpoints return `403 forbidden` for anonymous calls. This Actor reads the public web pages instead and gives you clean, structured **Mercado Libre data** for **price monitoring, market research, competitor tracking, catalog enrichment, review analysis and lead generation**.

Five modes in one Actor:

| Mode | What you get | Input |
|---|---|---|
| 🔍 **Products from search** | Product cards: title, price, original price, discount %, installments, rating, sold quantity, seller, official-store flag, condition, image, position, page | keywords or search / category URLs |
| 📦 **Product details** | Everything on the product page: price, stock, specifications (60+ attributes), description, gallery, variations, seller reputation, shipping, warranty, category path | product URLs or IDs |
| ⭐ **Reviews** | Every buyer review: stars, text, variant bought, date, helpful votes, photos, plus the product's rating breakdown and AI-summary status | product URLs or IDs |
| 🔥 **Deals (Ofertas)** | Today's deals page of any country: discounted products with old/new price, discount %, seller, rating, sold quantity | country or `/ofertas` URL |
| 🏪 **Official store** | Store profile (brand, official store ID, seller ID, creation date, status) and its featured products | `/tienda/...` URL |

Reviews, deals and official-store pages are fetched with plain HTTP requests and **do not consume any proxy traffic**. Search and product pages sit behind Mercado Libre's bot gate, so the Actor opens them in a real browser through residential proxies of the matching country. That is included in the per-result price. You never see a CAPTCHA, a "log in to continue" wall or a proof-of-work challenge in your results, and blocked pages are retried automatically.

### What data can Mercado Libre Scraper extract?

#### 🔍 Product cards (search, category, deals, store)

| Field | Example |
|---|---|
| `title` | `Apple iPhone 15 128 GB Negro` |
| `price` / `originalPrice` / `discountPercent` | `12919` / `16999` / `24` |
| `currency` | `MXN` |
| `installmentsText` | `12 meses sin intereses de $1,076` |
| `rating` / `reviewCount` / `soldQuantity` | `4.8` / `312` / `250000` |
| `seller` / `isOfficialStore` | `Kritech` / `true` |
| `condition` | `Reacondicionado` |
| `freeShipping` / `fullShipping` / `isSponsored` | `true` / `false` / `false` |
| `labels` | `["OFERTA DEL DÍA"]` |
| `variationsText` | `Disponible en 4 colores` |
| `productId` / `itemId` | `MLM27172677` / `MLM2120627201` |
| `url` / `imageUrl` | product link, main picture |
| `position` / `page` / `searchTerm` / `totalResults` | `2` / `1` / `iphone 15` / `759` |
| `siteId` / `country` | `MLM` / `MX` |

#### 📦 Product details

Everything above plus `description`, `specs` (flat object with all technical specifications: brand, model, memory, screen, battery, dimensions…), `specGroups`, `images` (full gallery), `variations`, `availableQuantity`, `stockText`, `availability`, `shippingText`, `logisticType`, `listingType`, `categoryId`, `categoryPath`, `breadcrumb`, `warranty`, `returnAvailable`, `dealIds` and a `seller` object with `id`, `name`, `url`, `officialStoreId`, `reputationLevel` (e.g. `5_green`), `powerSellerStatus` (`platinum`), `statusTitle` (`MercadoLíder Platinum`) and sales volume.

#### ⭐ Reviews

| Field | Example |
|---|---|
| `rating` | `5` |
| `text` | `Excelente compra. El colchón viene tal cual en las imágenes…` |
| `variant` | `Color: negro · Talla: XXL` |
| `createdAt` / `dateText` | `2026-06-13T22:30:12Z` / `Hace 2 meses` |
| `likes` | `96` |
| `images` | `["https://http2.mlstatic.com/D_NQ_NP_715568-MLA98663772743_112025-O.webp"]` |
| `productId` / `productUrl` / `country` | `MLM4700406170` / link / `MX` |

One extra `product_rating` row per product holds `ratingAverage`, `ratingCount`, `reviewsWithText`, `ratingBreakdown` (count and % per star), `picturesCount` and `aiSummaryStatus` (whether Mercado Libre has generated an AI summary of the reviews).

#### 🏪 Official stores

`name`, `brandName`, `officialStoreId`, `sellerId`, `storeType`, `status`, `hasDebts`, `hasModerations`, `createdAt`, `tags`, `homeUrl`, `searchUrl` and the featured products of the store home page.

### Supported Mercado Libre marketplaces

Every country runs on its own domain and currency. Prices are returned exactly as the marketplace shows them and are never converted, so a Brazilian row is in BRL and a Mexican row in MXN.

| Country | Site ID | Domain | Currency |
|---|---|---|---|
| 🇲🇽 Mexico | `MLM` | mercadolibre.com.mx | MXN |
| 🇧🇷 Brazil | `MLB` | mercadolivre.com.br | BRL |
| 🇦🇷 Argentina | `MLA` | mercadolibre.com.ar | ARS |
| 🇨🇱 Chile | `MLC` | mercadolibre.cl | CLP |
| 🇨🇴 Colombia | `MCO` | mercadolibre.com.co | COP |
| 🇵🇪 Peru | `MPE` | mercadolibre.com.pe | PEN |
| 🇺🇾 Uruguay | `MLU` | mercadolibre.com.uy | UYU |
| 🇪🇨 Ecuador | `MEC` | mercadolibre.com.ec | USD |
| 🇻🇪 Venezuela | `MLV` | mercadolibre.com.ve | VES |
| 🇧🇴 Bolivia | `MBO` | mercadolibre.com.bo | BOB |
| 🇵🇾 Paraguay | `MPY` | mercadolibre.com.py | PYG |
| 🇩🇴 Dominican Republic | `MRD` | mercadolibre.com.do | DOP |
| 🇨🇷 Costa Rica | `MCR` | mercadolibre.co.cr | CRC |
| 🇵🇦 Panama | `MPA` | mercadolibre.com.pa | USD |
| 🇬🇹 Guatemala | `MGT` | mercadolibre.com.gt | GTQ |
| 🇭🇳 Honduras | `MHN` | mercadolibre.com.hn | HNL |
| 🇸🇻 El Salvador | `MSV` | mercadolibre.com.sv | USD |
| 🇳🇮 Nicaragua | `MNI` | mercadolibre.com.ni | NIO |

Mix countries freely in one run: pick a country for keyword searches and paste URLs from any other marketplace. Each row carries `siteId` and `country` so you can split the dataset afterwards.

### How much does it cost to scrape Mercado Libre?

The Actor uses Apify's **pay-per-event** pricing: you pay only for results, nothing per run, per page or per proxy gigabyte.

| Event | Price | Per 1,000 |
|---|---|---|
| Product (search card, deal or store product) | $0.0025 | **$2.50** |
| Product detail (full product page) | $0.025 | **$25** |
| Review | $0.001 | **$1** |

Residential proxies and browser rendering for gated pages are included. The **Apify Free plan** ($5 monthly credit) gives you about 2,000 product cards, 200 product details or 5,000 reviews every month. Bronze, Silver and Gold Store tiers get a discount on top.

### How to scrape Mercado Libre

1. Open **Mercado Libre Scraper** on Apify and click **Try for free** (a free Apify account is enough).
2. Choose **What to scrape** – for example *Products from search*.
3. Pick the **Country** (Mexico, Brazil, Argentina, Chile, Colombia, Peru, Uruguay, Ecuador, Venezuela, Bolivia, Paraguay, Dominican Republic, Costa Rica, Panama, Guatemala, Honduras, El Salvador, Nicaragua).
4. Type your **Search keywords** or paste **Mercado Libre URLs** (search results, categories, products, official stores or the deals page). You can mix countries: every URL keeps its own marketplace.
5. Set **Max products** and, for reviews, **Max reviews per product**, then click **Start**.
6. When the run finishes, open the **Output** tab and download the dataset as JSON, CSV, Excel, XML or HTML, or read it through the API.

### ⬇️ Input

![Mercado Libre Scraper input form: mode, country, search keywords, URLs, max products, reviews filters](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/mercadolibre/mercadolibre-scraper-input-form.png)

Search Mexico for two keywords, new items only, sorted by price, 200 products per keyword:

```json
{
  "mode": "search",
  "country": "MX",
  "searchTerms": ["iphone 15", "galaxy s24"],
  "condition": "new",
  "sort": "price_asc",
  "maxItems": 200
}
```

Full product pages for a list of products (URLs from any country, or bare IDs like `MLB3568040961`):

```json
{
  "mode": "product",
  "startUrls": [
    "https://www.mercadolibre.com.mx/apple-iphone-15-128-gb-negro/p/MLM27172677",
    "https://produto.mercadolivre.com.br/MLB-3568040961-_JM"
  ]
}
```

All reviews of a product, newest first, only 1-star reviews:

```json
{
  "mode": "reviews",
  "startUrls": ["MLM4700406170"],
  "maxReviewsPerProduct": 5000,
  "reviewsRating": "1",
  "reviewsSort": "date_desc"
}
```

Today's deals in Brazil and an official store in Argentina in one run (auto mode picks the right parser by URL):

```json
{
  "startUrls": [
    "https://www.mercadolivre.com.br/ofertas",
    "https://www.mercadolibre.com.ar/tienda/samsung"
  ],
  "maxItems": 100
}
```

#### Search filters

`sort` (`relevance`, `price_asc`, `price_desc`), `condition` (`any`, `new`, `used`), `minPrice`, `maxPrice`, `freeShippingOnly`, `officialStoresOnly`, `includeSponsored`. Filters are translated into Mercado Libre's own URL segments (`_OrderId_PRICE`, `_PriceRange_1000-5000`, `_CostoEnvio_Gratis`, `_Tienda_all`) so results match what a shopper sees. Turn on **Fetch full product details** to open every search result and merge the product page into the row (billed as product details).

### ⬆️ Output

![Mercado Libre Scraper output table: product, price, discount, rating, seller, official store, condition, product ID](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/mercadolibre/mercadolibre-scraper-output-table.png)

One product card from search:

```json
{
  "type": "product",
  "title": "Apple iPhone 15 128 GB Negro",
  "url": "https://www.mercadolibre.com.mx/apple-iphone-15-128-gb-negro/p/MLM27172677",
  "productId": "MLM27172677",
  "itemId": "MLM2120627201",
  "siteId": "MLM",
  "country": "MX",
  "currency": "MXN",
  "price": 12919,
  "originalPrice": 16999,
  "discountPercent": 24,
  "installmentsText": "12 meses sin intereses de $1,076",
  "condition": null,
  "rating": 4.8,
  "reviewCount": null,
  "seller": "Kritech",
  "isOfficialStore": true,
  "freeShipping": false,
  "isSponsored": false,
  "labels": [],
  "imageUrl": "https://http2.mlstatic.com/D_Q_NP_2X_669616-MLA95935383067_102025-E.webp",
  "position": 2,
  "page": 1,
  "searchTerm": "iphone 15",
  "totalResults": 759,
  "scrapedAt": "2026-09-03T04:30:25.570Z"
}
```

Reviews come back one row per buyer, with the exact product variant that was bought:

![Mercado Libre reviews output: stars, review text, variant bought, date, helpful votes, product ID](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/mercadolibre/mercadolibre-scraper-reviews-output.png)

One review:

```json
{
  "type": "review",
  "reviewId": 2954413987,
  "productId": "MLM4700406170",
  "siteId": "MLM",
  "country": "MX",
  "rating": 5,
  "text": "Material: fresco pero no es algodón, no trae encaje…",
  "variant": "Color: negro blanco piel marrón · Talla: XXL",
  "dateText": "Hace 2 meses",
  "createdAt": "2026-06-13T22:30:12Z",
  "likes": 96,
  "images": [],
  "scrapedAt": "2026-09-03T04:27:28.979Z"
}
```

Deals mode returns the same product shape, with the pre-discount price and the discount percentage filled in:

![Mercado Libre deals output: product, price, previous price, discount percent, rating, units sold, seller, country](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/mercadolibre/mercadolibre-scraper-deals-output.png)

Rows carry a `type` (`product`, `product_detail`, `deal`, `review`, `product_rating`, `store`, `error`) so you can filter one dataset in a spreadsheet or in code. Pages that could not be scraped are reported as `error` rows with the URL and reason instead of silently disappearing.

### Use cases for Mercado Libre data

#### Price monitoring and repricing

Schedule a daily run for your product keywords or competitor URLs and track `price`, `originalPrice`, `discountPercent` and `installmentsText` over time. Feed the dataset into Google Sheets or your repricing tool.

#### Market and competitor research

Search a category in several countries in one run, compare sellers, official stores, sold quantities and ratings, and spot which products win the first positions (`position`, `isSponsored`).

#### Review mining and product quality

Pull thousands of reviews with star ratings, purchase variants and photos, then run sentiment analysis or feed them to an LLM to find recurring complaints before you source a product.

#### Catalog enrichment

Product details include brand, model, 60+ specifications, gallery images and category path — enough to build or enrich your own catalog or a comparison site.

#### Seller and store intelligence

Official-store mode returns store IDs, creation dates and status; product details include seller reputation (`5_green`), `MercadoLíder` level and sales volume, so you can qualify suppliers and partners.

#### AI agents and RAG

Flat rows with literal field names and a minimal set of required inputs make the Actor easy to call from an AI agent through the Apify MCP server or the API.

### Integrations

- **API** – start a run and read the dataset with any HTTP client. Python example:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lergassy/mercadolibre-scraper").call(run_input={
    "mode": "search", "country": "BR", "searchTerms": ["air fryer"], "maxItems": 100
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["price"], item["currency"])
```

- **JavaScript** – `npm i apify-client`, then `client.actor('lergassy/mercadolibre-scraper').call(input)`.
- **n8n, Make, Zapier, Google Sheets, Airtable, Slack, webhooks** – use the Apify integrations to trigger runs and push results.
- **MCP** – add the Apify MCP server to Claude, ChatGPT, Cursor or any MCP client and let the agent call `lergassy/mercadolibre-scraper` with a keyword and a country.
- **Scheduling and monitoring** – Apify schedules, run notifications and dataset diffs work out of the box.

### Error items and troubleshooting

Mercado Libre protects search and product pages with a bot gate. The Actor opens those pages in a real browser through residential proxies of the matching country, warms up the session on the marketplace home page and retries with a fresh browser identity whenever a page comes back blocked. Only after several failed attempts does a URL end up in the dataset as an `error` row:

```json
{
  "type": "error",
  "url": "https://www.mercadolibre.com.mx/apple-iphone-15/p/MLM27172677",
  "error": "blocked (403, 2581 bytes)",
  "kind": "item",
  "scrapedAt": "2026-09-03T05:12:44.101Z"
}
```

Common cases and what to do:

| What you see | What it means | Fix |
|---|---|---|
| `error` rows for a few products | Those pages stayed blocked after the retries | Re-run just those URLs; the gate is per-IP and usually passes on a second run |
| Empty dataset in search mode | The keyword returns no listings on that marketplace | Check the keyword on the site itself, or use a listing URL |
| `rating` and `reviewCount` are null | Search cards only show what the card shows | Turn on **Fetch full product details** or use *Product details* mode |
| Reviews mode returns only a rating row | The product has ratings but no written reviews | Look at `reviewsWithText` in the `product_rating` row |
| Fewer results than `Max products` | The query ran out of pages before the cap | Broaden the keyword or remove filters |

### 🤖 For AI Agents & LLM Apps

Compact reference for agents calling this Actor through the [Apify MCP server](https://mcp.apify.com) or the Apify API (`lergassy/mercadolibre-scraper`).

**Purpose:** returns Mercado Libre listings, reviews and rating summaries across the
Latin American marketplaces — by search term or by product URL — with price,
instalment offer, discount, seller and shipping promise. Use it to answer "what does
this cost in Mexico today", "who sells it officially", "how do buyers rate it" and
"which listings are paid placements".

**Minimal input:**

```json
{ "searchTerms": ["iphone 15"], "country": "MX", "maxItems": 50 }
```

**Output:** one row per listing — `type`, `title`, `url`, `productId`, `itemId`,
`country`, `currency`, `price`, `originalPrice`, `discountPercent`,
`installmentsText`, `brand`, `condition`, `soldQuantity`, `rating`, `reviewCount`,
`seller`, `isOfficialStore`, `freeShipping`, `fullShipping`, `shippingText`,
`isSponsored`, `labels`, `location`, `imageUrl`, `position`, `page`, `searchTerm`,
`totalResults`, `scrapedAt`. Review rows carry `text`, `variant`, `createdAt`,
`likes` and `images`; rating rows carry `ratingAverage`, `ratingCount` and
`ratingBreakdown`; store rows describe official stores; unreadable pages arrive as
`type: "error"`.

**Behaviors an agent should know:**

- `mode` defaults to `auto`: search terms run search mode, product URLs run product
  mode. Ask for `reviews` explicitly when you want review rows.
- `country` selects the marketplace, the site code and the currency. Prices are in
  local currency — Brazilian reais and Mexican pesos are not comparable numbers.
- `installmentsText` matters more than price in this region: most purchases are made
  in interest-free instalments, so quote it when a user asks about affordability.
- `isSponsored` marks paid placements. Exclude them with `includeSponsored: false`
  before drawing conclusions about organic ranking, and note that `position` is the
  rank as displayed, sponsored rows included.
- `maxItems` (default 50) caps listings; `maxReviewsPerProduct` (default 100) caps
  reviews separately. `enrichProducts` adds a page fetch per product.
- `officialStoresOnly` and `freeShippingOnly` filter at the source, which is cheaper
  and more reliable than filtering rows afterwards.
- Review text is Spanish or Portuguese depending on the country. Translate before
  sentiment scoring.

### ❓ FAQ

#### Is it legal to scrape Mercado Libre?

The Actor only collects data that is publicly visible to any visitor: listings, prices, specifications, store pages and reviews that buyers chose to publish. It does not log in, does not access accounts and does not collect private data. Personal data in reviews is limited to what Mercado Libre shows publicly. You are responsible for using the data in line with local law (LGPD in Brazil, LFPDPPP in Mexico, GDPR if you process EU residents' data) and Mercado Libre's terms; consult a lawyer for your specific case.

#### Which countries are supported?

All 18 Mercado Libre marketplaces: Mexico (MLM), Brazil (MLB), Argentina (MLA), Chile (MLC), Colombia (MCO), Peru (MPE), Uruguay (MLU), Ecuador (MEC), Venezuela (MLV), Bolivia (MBO), Paraguay (MPY), Dominican Republic (MRD), Costa Rica (MCR), Panama (MPA), Guatemala (MGT), Honduras (MHN), El Salvador (MSV) and Nicaragua (MNI). Prices stay in the local currency and are not converted.

#### Do I need a proxy or a browser?

No. Search and product pages are opened in a browser through residential proxies of the matching country automatically, and reviews, deals and stores are fetched without any proxy. Everything is included in the per-result price.

#### Why do some fields come back empty?

Search cards only contain what Mercado Libre shows on the card: a listing without reviews has `rating: null`, a card without a discount has `originalPrice: null`. Use *Product details* (or **Fetch full product details**) for the complete record.

#### How many results can one search return?

Mercado Libre paginates listings 48 per page and stops around 2,000 results per query. Use narrower keywords, category URLs or price ranges to go deeper.

#### Can I get the whole catalog of a seller?

Yes: paste the seller's listing URL (for example `https://listado.mercadolibre.com.mx/_CustId_49477299` or `https://listado.mercadolibre.com.mx/tienda/apple/`) as a start URL in search mode. Official store mode returns the store profile and its featured products.

#### Can I use the Actor with the Apify API, MCP or n8n?

Yes. See the Integrations section. The input is plain JSON; `startUrls` accepts URLs or bare product IDs.

#### Does it return one row per product?

Yes. Each product, review, deal or store is one row with a `type` field. Product details from *Fetch full product details* are merged into the product row.

#### What happens if Mercado Libre blocks a page?

Blocked sessions are retired and the page is retried with a fresh browser identity and IP. If it still fails, you get an `error` row with the URL and you are not charged for it.

#### How do I scrape Mercado Livre in Brazil?

Set **Country** to Brazil, or paste any `mercadolivre.com.br` URL. Brazilian listings live on `lista.mercadolivre.com.br` and product pages on `produto.mercadolivre.com.br`; both are recognised automatically, and results come back in BRL with Portuguese field values.

#### Can I scrape Mercado Libre without an API key?

Yes. That is the point of this Actor. Mercado Libre's own API needs an application, OAuth tokens and seller permissions, and its anonymous endpoints have returned `403 forbidden` since 2024. This Actor reads the same public pages a shopper sees, so you only need an Apify account.

#### What is the difference between `productId` and `itemId`?

`productId` (also called the catalog product, e.g. `MLM27172677`) is the catalogue entry that groups every seller offering the same product. `itemId` (e.g. `MLM2120627201`) is one seller's individual listing. Search cards carry both when the listing belongs to a catalogue; marketplace-only listings have just an `itemId`.

#### Can I track price history?

The Actor returns the current state of a page. Schedule a daily or hourly run on Apify, keep each dataset, and you build your own history with `scrapedAt` as the timestamp. Apify's dataset storage and integrations make it easy to append everything to one sheet or database.

#### How often can I run it?

As often as your plan allows. Reviews, deals and store modes are plain HTTP requests and cheap to repeat. For search and product pages, spread heavy jobs out rather than hammering a marketplace: the built-in concurrency limit defaults to three pages at a time.

#### Does it collect buyer questions and answers?

No. Mercado Libre only renders the question thread for logged-in users, and this Actor never logs in. Reviews, ratings and the AI review summary status are collected instead.

#### Can I scrape a whole category?

Yes. Copy a category listing URL from the site (anything starting with `listado.` or `lista.`, or a `/c/` category page) and paste it into **Mercado Libre URLs**. Pagination is followed automatically up to your **Max products** limit.

### Your feedback

Found a page that does not parse, or need another field (questions and answers, seller catalog pagination, price history)? Open an issue in the **Issues** tab or leave a review — requests from users decide what ships next.

### You might also like

| Actor | What it does |
|---|---|
| [Agoda Reviews Scraper](https://apify.com/lergassy/agoda-reviews-scraper) | Hotel reviews from Agoda and Booking.com |
| [Tokopedia Reviews Scraper](https://apify.com/lergassy/tokopedia-reviews-scraper) | Shop reviews from Indonesia's Tokopedia |
| [Google Flights Scraper](https://apify.com/lergassy/google-flights-scraper) | Flight prices, airlines and price insights from Google Flights |
| [Email & Phone Verifier](https://apify.com/lergassy/email-phone-verifier) | Checks e-mails and phone numbers in bulk: deliverability, throwaway and role flags, numbering plan, US state and time zone |

# Actor input Schema

## `mode` (type: `string`):

Choose the data type. <b>Products (search)</b> – product cards from keyword search or listing/category URLs. <b>Product details</b> – full product pages. <b>Reviews</b> – all reviews of the given products. <b>Deals</b> – today's deals from the Ofertas page. <b>Official store</b> – store profile and featured products. <b>Auto</b> picks by URL type.

## `country` (type: `string`):

Marketplace to search in. Used for search keywords and deals; URLs keep their own country.

## `searchTerms` (type: `array`):

Products to search for, one per line, e.g. <code>iphone 15</code>. Each keyword is searched in the selected country.

## `startUrls` (type: `array`):

Any Mercado Libre links: search results, category pages, product pages (<code>/p/MLM…</code> or <code>MLM-…</code>), official stores (<code>/tienda/…</code>) or the deals page (<code>/ofertas</code>). Product IDs like <code>MLM4700406170</code> also work.

## `maxItems` (type: `integer`):

Stop after this many products per keyword or URL (search, deals, store modes).

## `maxReviewsPerProduct` (type: `integer`):

Reviews mode: how many reviews to collect for each product. All reviews are public buyer reviews with text.

## `reviewsRating` (type: `string`):

Reviews mode: keep only reviews with this star rating.

## `reviewsSort` (type: `string`):

Reviews mode: most relevant first (Mercado Libre default) or newest first.

## `sort` (type: `string`):

Order of search results.

## `condition` (type: `string`):

New, used or any.

## `minPrice` (type: `integer`):

Minimum price in the marketplace's currency.

## `maxPrice` (type: `integer`):

Maximum price in the marketplace's currency.

## `freeShippingOnly` (type: `boolean`):

Keep only listings with free shipping.

## `officialStoresOnly` (type: `boolean`):

Keep only listings sold by official brand stores.

## `includeSponsored` (type: `boolean`):

Keep paid (sponsored) placements in search results.

## `enrichProducts` (type: `boolean`):

After search, open each product page for description, specifications, images, variations, stock and seller reputation. Slower and billed per product detail.

## `proxyConfiguration` (type: `object`):

Search and product pages require <b>residential</b> proxies matched to the marketplace country (set automatically). Reviews, deals and store pages need no proxy.

## `maxConcurrency` (type: `integer`):

Parallel pages for search and product modes.

## Actor input object example

```json
{
  "mode": "auto",
  "country": "MX",
  "searchTerms": [
    "iphone 15"
  ],
  "startUrls": [],
  "maxItems": 50,
  "maxReviewsPerProduct": 100,
  "reviewsRating": "all",
  "reviewsSort": "relevance",
  "sort": "relevance",
  "condition": "any",
  "freeShippingOnly": false,
  "officialStoresOnly": false,
  "includeSponsored": true,
  "enrichProducts": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxConcurrency": 3
}
```

# Actor output Schema

## `products` (type: `string`):

One row per Mercado Libre listing with price, instalments, discount, rating, units sold, seller and shipping flags; plus review rows, per-product rating summaries with the star breakdown, and official-store rows.

## `reviews` (type: `string`):

No description

## `csv` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "iphone 15"
    ],
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/mercadolibre-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["iphone 15"],
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("lergassy/mercadolibre-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "iphone 15"
  ],
  "startUrls": []
}' |
apify call lergassy/mercadolibre-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/mercadolibre-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/m3WG6vSxptfaQ4NUv/builds/yZKpdhjOEMC8gbz9W/openapi.json
