# MercadoLibre Scraper - Products, Prices, Reviews, Q\&A & Sellers (`topapi/mercadolibre-scraper`) Actor

Scrape MercadoLibre and Mercado Livre in all 18 countries: search listings with price, discount, installments, shipping, sold count and seller, plus product details, reviews, buyer Q\&A and official stores. Monitor mode for new listings and price changes. No login, no start fee.

- **URL**: https://apify.com/topapi/mercadolibre-scraper.md
- **Developed by:** [Top Api](https://apify.com/topapi) (community)
- **Categories:** E-commerce, Lead generation, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.45 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does MercadoLibre Scraper do?

**MercadoLibre Scraper** extracts listings from [MercadoLibre](https://www.mercadolibre.com) and [Mercado Livre](https://www.mercadolivre.com.br) in all 18 countries and turns a search term, a category, a seller, an official store or a list of product links into one structured row per listing: title, price, previous price, discount, installments, shipping (free, FULL, next day, cross-border), rating, ratings count, units sold, seller and its position in the results. Turn on product details, reviews or buyer questions and the same run also returns full product pages, one row per review and one row per question with the seller's answer. Built for e-commerce sellers, brands, price-monitoring teams and market researchers who need MercadoLibre data without copying it by hand.

MercadoLibre scraper · Mercado Livre scraper · Mercado Libre API alternative · MELI product data

<a href="https://console.apify.com/actors/Ze40UO4QBIR4rahBz"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/mercadolibre-scraper-source.png" alt="MercadoLibre search results for audífonos bluetooth in Mexico that MercadoLibre Scraper turns into rows" style="width:70%"></a>

- **All 18 country sites:** Mexico, Argentina, Brazil, Chile, Colombia, Peru, Uruguay, Ecuador, Venezuela, Bolivia, Paraguay, Costa Rica, Dominican Republic, Guatemala, Honduras, Nicaragua, Panama and El Salvador. Prices come in each site's own currency.
- **Five modes in one actor:** search listings, product details by link, reviews, buyer questions and seller or official-store catalogs.
- **Up to about 2,000 results per search**, the most MercadoLibre shows, page after page; **Split by price** goes past that by searching price bands and merging them without repeats.
- **Organic results only**, ranked as MercadoLibre ranks them (`position`); sponsored listings come back only when you ask for them, marked `isSponsored`.
- **The site's own filters:** price range, condition, free shipping, FULL, official stores, top sellers, interest-free installments, sort by price, category.
- **Monitor mode:** run on a schedule and get only listings that are new since the last run, plus listings whose price changed.
- **No login, no cookies, no API key, no proxy setup.** Export as JSON, CSV, Excel or XML, or use schedules, webhooks, Make, Zapier, n8n, the Apify API and MCP.

### What data can you get from MercadoLibre?

<table>
<tr>
<td>🏷️ Title, listing id, product id, variation</td>
<td>💲 Price, previous price, discount %, currency</td>
<td>💳 Installments: count, amount, total, interest-free</td>
</tr>
<tr>
<td>🚚 Free shipping, FULL, next-day delivery</td>
<td>🌎 Cross-border flag and the country it ships from</td>
<td>🎟️ Coupons and promotions on the card</td>
</tr>
<tr>
<td>⭐ Rating and number of ratings</td>
<td>📦 Units sold (the site's bucket: +500, +5 mil…)</td>
<td>🏪 Seller name and official-store flag</td>
</tr>
<tr>
<td>🏷️ Brand, category id and path, domain</td>
<td>🔢 Organic position, page, search term, total results</td>
<td>🖼️ Thumbnail and listing link</td>
</tr>
<tr>
<td>📝 Description, all photos, specs, features (details)</td>
<td>🎨 Variations with their price and stock (details)</td>
<td>📊 Stock, star breakdown, review counts (details)</td>
</tr>
<tr>
<td>🧾 Seller id, reputation, MercadoLíder level, listings count (details)</td>
<td>🛡️ Warranty, return policy, shipping origin and times (details)</td>
<td>💰 Payment methods, listing type, listed-at date (details)</td>
</tr>
<tr>
<td>💬 Reviews: stars, text, date, country, likes, photos</td>
<td>❓ Questions: question, seller answer, answer date</td>
<td>🏬 Store profiles: followers, store and brand ids, logo, banner</td>
</tr>
</table>

On a 100-listing search run with product details on ("audifonos bluetooth" in Mexico), 99 rows carried the product page: 99% had photos, specs, stock, seller id and reputation, return policy and payment methods, 92% a description and 81% the seller's sales count. Rows from car and property searches also carry `attributes` (year, km, rooms, m²), `location` and `headline`.

### How to scrape MercadoLibre with MercadoLibre Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) (it comes with monthly free credit).
2. Open **MercadoLibre Scraper** and pick a mode: **Search listings** is the default.
3. Type one or more search terms, pick the country site, or paste MercadoLibre links.
4. Optional: set filters, turn on product details, reviews or questions, and set **Max results**.
5. Click **Start** and watch the rows arrive.
6. Download the dataset as JSON, CSV, Excel or XML, or send it on with an integration.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| `mode` | select | `search` (default), `products`, `reviews`, `questions` or `seller`. |
| `searchQueries` | list | Search terms, one search each, e.g. `celular samsung`, `tênis nike`. |
| `country` | select | The site to search: `MX` (default), `AR`, `BR`, `CL`, `CO`, `PE` and 12 more. |
| `countries` | list | Run the same terms on more sites too, e.g. `["AR","BR"]`. |
| `startUrls` | links | Any MercadoLibre link: search or category pages, `/ofertas`, `/tienda/…`, `_CustId_…`, product pages. |
| `productUrls` | list | Products mode, reviews, questions: product links (`/p/MLM…`), listing links or ids such as `MLM23138487`. |
| `sellerUrls` | list | Seller mode: a store link (`/tienda/sony`, `/loja/samsung`), `_CustId_` link, seller id or nickname. |
| `categoryId` | text | Limit a search to one category, e.g. `MLM1055`. |
| `sortBy` | select | Most relevant (default), lowest price, highest price. |
| `condition` | select | Any (default), new, used, refurbished. |
| `minPrice` / `maxPrice` | number | Price range in the site's currency. |
| `freeShippingOnly`, `fullShippingOnly`, `officialStoresOnly`, `bestSellersOnly`, `interestFreeOnly` | yes/no | The site's own filters. Default off. |
| `includeSponsored` | yes/no | Also deliver sponsored listings (marked). Default off. |
| `minDiscount`, `minRating`, `minSoldQuantity`, `excludeKeywords` | refine | Applied to each row before it is delivered. |
| `includeDetails` | yes/no | Product details on every row (paid add-on). Default off. |
| `includeReviews`, `maxReviewsPerProduct` (20), `reviewRating`, `reviewSort`, `deepReviews` | reviews | Review rows for each listing or product. |
| `includeQuestions`, `maxQuestionsPerItem` (50) | questions | Question rows for each listing. |
| `includeSellerProfile` | yes/no | Seller mode: one profile row per official store. Default on. |
| `monitorMode`, `monitorPriceChanges`, `minPriceChangePercent`, `monitorStoreName` | monitoring | Only new listings (and price changes) since the last run. |
| `maxItems` | number | Listing / product rows per run (reviews or questions in those modes). Default 100. |
| `maxItemsPerSearch`, `splitByPrice`, `compact` | output | Cap per search; go past the ~2,000 cap; core fields only. |
| `maxConcurrency`, `proxyConfiguration` | advanced | Parallel detail requests (6); proxy (residential in each site's country by default). |

<a href="https://console.apify.com/actors/Ze40UO4QBIR4rahBz"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/mercadolibre-scraper-output.png" alt="MercadoLibre Scraper output table: title, price, discount, shipping, rating, sold and seller" style="width:70%"></a>

#### Input JSON

```json
{
  "searchQueries": ["celular samsung"],
  "country": "MX",
  "condition": "new",
  "freeShippingOnly": true,
  "maxItems": 200,
  "includeDetails": true
}
```

#### Pick the mode before anything else

**Search listings** reads result pages (one row per listing). **Product details** reads product links you already have and returns one full row per product with no search. **Reviews** and **Questions** read those of the products you give. **Seller** reads a store's or seller's whole catalog. Reviews and questions can also be added to a search with `includeReviews` / `includeQuestions`.

#### Put only the product words in the search term

Write the term as a shopper would, `zapatillas nike mujer`, and use the filters for price, condition and shipping. Words like "barato" or "envío gratis" in the term change what MercadoLibre matches.

#### Ask for more than 2,000 with Split by price

MercadoLibre shows at most about 2,000 results for one search even when it reports 40,000. Turn on **Split by price** and the search is cut into price bands that each stay under the limit (a band still over it is halved again); listings are merged without repeats. A test run collected 2,100 listings of "zapatillas" in Mexico this way.

### ⬆️ Output

One row per listing (`type: "listing"`), product (`"product"`), review (`"review"`), question (`"question"`) or store profile (`"seller-profile"`). A search row, from a real run:

```json
{
  "type": "listing",
  "country": "MX",
  "itemId": "MLM6280573002",
  "catalogProductId": "MLM65114795",
  "title": "Samsung Galaxy A17 128GB",
  "url": "https://www.mercadolibre.com.mx/samsung-galaxy-a17-128gb/p/MLM65114795",
  "price": 2879,
  "originalPrice": 3999,
  "discountPercentage": 28,
  "currency": "MXN",
  "installments": { "quantity": 24, "amount": 173.99, "total": 4175.76, "interestFree": false },
  "freeShipping": true,
  "fullShipping": true,
  "rating": 4.9,
  "ratingCount": 1530,
  "soldQuantity": 10000,
  "brand": "Samsung",
  "sellerName": "Celmishop",
  "isOfficialStore": true,
  "categoryId": "MLM1055",
  "position": 4,
  "searchQuery": "celular",
  "totalResults": 40346
}
```

A review row:

```json
{
  "type": "review",
  "productId": "MLM23138487",
  "reviewId": 975314257,
  "reviewRating": 5,
  "reviewText": "Amé el producto, lo recomiendo totalmente.",
  "reviewDate": "2024-02-01T23:59:55Z",
  "reviewCountry": "México",
  "reviewLikes": 948,
  "reviewMedia": [{ "type": "photo", "url": "https://http2.mlstatic.com/D_NQ_NP_836750-MLA74238681146_022024-F.jpg" }]
}
```

#### Fields

| Field | Meaning | Filled on a real run |
|---|---|---|
| `itemId`, `title`, `url`, `price`, `currency`, `thumbnail` | the listing | 100% |
| `catalogProductId` | MercadoLibre catalog product the listing belongs to | 95-100% on catalog searches |
| `originalPrice`, `discountPercentage` | price before the discount | 77-90% (only discounted listings) |
| `installments` | count, amount per payment, total, interest-free | 28-99% (depends on the category) |
| `freeShipping`, `fullShipping`, `nextDayDelivery`, `shippingText` | delivery on the card | text on 93-100% |
| `isInternational`, `shipsFrom` | cross-border listing and its origin country | on every cross-border card |
| `rating`, `ratingCount` | stars and number of ratings | 96-100% and 86-100% |
| `soldQuantity` | units sold, as the site's bucket (500, 5000…) | 95-100% |
| `brand`, `sellerName`, `isOfficialStore` | brand and seller as printed | 88-100%, 62-100% (many catalog cards print no seller) |
| `position`, `page`, `searchQuery`, `totalResults` | rank among organic results and the search | 100% |
| `attributes`, `location`, `headline` | cars and property: year, km, rooms, m², place | 100% on car and property searches |
| `changeType`, `previousPrice`, `priceChangePercent` | monitor mode: new / priceDrop / priceRise | on monitor rows |
| `description`, `images`, `attributes`, `features`, `variations` | product details | 92-99% of detail rows |
| `availableQuantity`, `stockText`, `ratingDistribution`, `topReviews` | product details | 99% |
| `sellerId`, `sellerReputation`, `sellerPowerStatus`, `sellerProductsCount` | product details | 99% |
| `returnPolicy`, `paymentMethods`, `shippingTexts`, `logisticType`, `listingType` | product details | 99% |
| `listedAt`, `itemStatus`, `shipping` (origin, handling and transit days) | product details of listing pages (`articulo.…`) | on listing pages |
| `reviewRating`, `reviewText`, `reviewDate`, `reviewCountry`, `reviewLikes`, `reviewMedia` | review rows | 100%, 97%, 100%, 100%, 100%, 61% |
| `questionText`, `answerText`, `answerDate` | question rows | 100% |
| `totalFollowers`, `officialStoreId`, `shopType`, `brandRegistryId`, `logoUrl` | store profile rows | 100% |

### How can I use MercadoLibre data?

- 📈 **Price monitoring:** schedule a search with `monitorMode` and get every price drop and rise with the previous price.
- 🏷️ **Competitor and brand tracking:** see who sells your brand, at what price, discount and shipping, and where they rank.
- 🔎 **Market research:** compare categories, brands and sold counts across Mexico, Brazil, Argentina and the other sites.
- 🛒 **Catalog building:** photos, specs, descriptions and variations of the products you want to list.
- 💬 **Voice of the customer:** collect reviews by star rating and the questions buyers ask before buying.
- 🏬 **Seller analysis:** a store's whole catalog, its followers and its reputation.

### How much does it cost to scrape MercadoLibre?

MercadoLibre Scraper is pay-per-result: **$0.45 per 1,000 listings** ($0.00045 per listing or product row), no start fee. You pay only for rows delivered.

| Listings | Cost |
|---:|---:|
| 100 | $0.045 |
| 1,000 | $0.45 |
| 10,000 | $4.50 |

Add-ons: **product details** $0.0036 per row whose product page answered; **reviews** $0.0009 each; **questions** $0.0009 each; **store profiles** $0.0045 each. Sponsored listings you did not ask for, filtered rows, repeats and listings an earlier monitor run already delivered are not delivered and not billed. Set a maximum spend on the run and it stops at the limit; rows delivered so far are kept.

There is nothing else to pay: Apify platform usage is included in these prices. On the default 1,024 MB, on test runs, a 48-listing search took 9.5-27 seconds, a 1,000-listing search 73-119 seconds, 2,100 listings with Split by price 154-198 seconds, and 100 listings with product details 61-67 seconds.

### Integrations, API, scheduling & MCP

- **Schedules:** run MercadoLibre Scraper daily or hourly from the **Schedules** tab; with `monitorMode` each run returns only new listings and price changes.
- **Webhooks:** call a URL when a run finishes to push rows to your system, Slack or a sheet.
- **No-code:** Make, Zapier, n8n, Google Sheets, Airtable and Slack via [Apify integrations](https://docs.apify.com/integrations).
- **API:** start runs and read datasets from Node.js or Python with `apify-client`; code on the [API tab](https://apify.com/TopApi/mercadolibre-scraper/api/python).
- **MCP / AI agents:** connect Claude, Cursor or any MCP client through the [MCP tab](https://apify.com/TopApi/mercadolibre-scraper/api/mcp); `compact` keeps rows short.

### More e-commerce scrapers

<table>
<tr>
<td>🏭 <a href="https://apify.com/TopApi/alibaba-1688-scraper">1688.com Wholesale Scraper</a></td>
<td>👗 <a href="https://apify.com/TopApi/shein-product-scraper">SHEIN Product Scraper</a></td>
<td>⭐ <a href="https://apify.com/TopApi/trustpilot-reviews-scraper">Trustpilot Reviews Scraper</a></td>
</tr>
<tr>
<td>📍 <a href="https://apify.com/TopApi/google-maps-reviews-scraper">Google Maps Reviews Scraper</a></td>
<td>🍎 <a href="https://apify.com/TopApi/apple-maps-scraper">Apple Maps Scraper</a></td>
<td>🌐 <a href="https://apify.com/TopApi/website-content-crawler">Website Content Crawler</a></td>
</tr>
<tr>
<td>🎵 <a href="https://apify.com/TopApi/tiktok-scraper">TikTok Scraper</a></td>
<td>📸 <a href="https://apify.com/TopApi/instagram-scraper">Instagram Scraper</a></td>
<td>🧭 <a href="https://apify.com/TopApi">All TopApi actors</a></td>
</tr>
</table>

### Limits & empty runs

- **About 2,000 results per search:** MercadoLibre shows 48 organic results a page and stops near 2,000 for one search; `RUN_SUMMARY` gives the total the site reports and its ceiling. Use **Split by price** for more.
- **Questions:** the questions page of a listing shows its recent questions (17 on our test listing); older ones are not on the page.
- **Reviews:** one review list stops below 500 reviews; **Deep review sweep** reads every star rating and both orders and merges them.
- **Some runs stop early:** now and then MercadoLibre answers a visitor with its sign-in page or a CAPTCHA (2 of 31 test runs: one on the first page, one after the first page). MercadoLibre Scraper does not sign in and does not answer CAPTCHAs; it tries one fresh connection when the very first page asks to sign in, and otherwise keeps the rows already delivered and ends with a status message. Run it again for the rest.
- **Empty dataset:** no matching listings, a filter that removed everything, or a monitor run with nothing new. `RUN_SUMMARY` says which.

### FAQ

#### How many listings can MercadoLibre Scraper collect in one run?

Up to `maxItems` (100,000 at most). One search gives up to about 2,000 listings; more search terms, more countries or **Split by price** give more.

#### Can I run MercadoLibre Scraper on a schedule to track prices?

Yes. Save your input as a task, open **Schedules**, pick the cadence and turn on `monitorMode`. Each run watches the same top results and returns only listings not delivered before, plus listings whose price changed (`changeType`, `previousPrice`, `priceChangePercent`). A run with nothing new delivers nothing and charges nothing.

#### Does MercadoLibre Scraper work for Mercado Livre Brasil?

Yes. Pick `BR`: prices come in BRL and text in Portuguese. Store links are `/loja/…` and listing links `produto.mercadolivre.com.br`.

#### Can MercadoLibre Scraper get full product pages without a search?

Yes. Choose **Product details** and paste product links or ids. Each product comes back with its description, photos, specs, variations, stock, seller, warranty, returns and payment methods.

#### Can I get the reviews and questions of a product with MercadoLibre Scraper?

Yes. Choose **Reviews** or **Questions** and paste product links, or add them to a search with `includeReviews` / `includeQuestions`. Reviews come with their exact date, country, likes and photos.

#### Can I use MercadoLibre Scraper with the Apify API?

Yes. Use `apify-client` for [Node.js](https://apify.com/TopApi/mercadolibre-scraper/api/javascript) or [Python](https://apify.com/TopApi/mercadolibre-scraper/api/python); the API tab has ready-to-paste code.

#### Can I use MercadoLibre Scraper through an MCP server?

Yes. Open the [MCP tab](https://apify.com/TopApi/mercadolibre-scraper/api/mcp), connect your MCP client and ask for MercadoLibre listings in plain language. Turn on `compact` for shorter rows.

#### Do I need a MercadoLibre account, cookies or an API key?

No. No login, no cookies, no API key and no proxy setup. You give search terms or links.

#### Why did my MercadoLibre Scraper run return no results?

No listing matched, a filter removed them, a monitor run found nothing new, or MercadoLibre showed its sign-in or CAPTCHA page to that connection. The status message and `RUN_SUMMARY` say which. Nothing is charged for rows that were not delivered.

#### Is it legal to scrape MercadoLibre?

MercadoLibre Scraper collects data MercadoLibre shows publicly to any visitor and does not log in. You are responsible for complying with MercadoLibre's terms and the rules that apply where you work.

#### Your feedback

We keep improving MercadoLibre Scraper. Missing a field or found a bug? Open an issue on the [Issues tab](https://apify.com/TopApi/mercadolibre-scraper/issues/open).

# Actor input Schema

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

Search = listings for keywords or listing links. Products = full product pages for links or ids. Reviews / Questions = buyer reviews or Q\&A of products. Seller = a store's catalog.

## `searchQueries` (type: `array`):

One search per term, as you would type it on MercadoLibre, e.g. "celular samsung", "zapatillas nike", "cafeteira".

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

The MercadoLibre site to search. Links you paste are read on their own site whatever you pick here.

## `countries` (type: `array`):

Run the same search terms on more sites too, e.g. \["AR", "BR", "CO"]. Empty = only the country above.

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

Any MercadoLibre link: a search or category page (listado.…), deals (/ofertas), an official store (/tienda/…), a seller (*CustId*…), or product / listing pages. Each is read the way its type needs.

## `productUrls` (type: `array`):

For Products, Reviews and Questions: product links (/p/MLM…), listing links (articulo.… / produto.…) or bare ids such as MLM23138487 or MLB-1234567890.

## `sellerUrls` (type: `array`):

For Seller mode: an official store link (/tienda/sony, /loja/samsung), a seller listings link (\_CustId_123), a numeric seller id, or a seller nickname.

## `categoryId` (type: `string`):

Limit the search to one MercadoLibre category, e.g. MLM1055 (phones in Mexico). Empty = all categories.

## `sortBy` (type: `string`):

Order of the search results, as on the site.

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

Only new, used or refurbished listings.

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

Lowest price, in the site's currency (e.g. 2000 = MXN 2,000 on Mexico).

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

Highest price, in the site's currency.

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

Only listings with free shipping (Envío gratis / Frete grátis).

## `fullShippingOnly` (type: `boolean`):

Only listings stored and shipped by Mercado Envíos FULL.

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

Only listings from official brand stores (Tiendas oficiales / Lojas oficiais).

## `bestSellersOnly` (type: `boolean`):

Only listings from MercadoLíder / top-rated sellers (the site's 'Mejores vendedores' filter).

## `interestFreeOnly` (type: `boolean`):

Only listings payable in interest-free installments (meses sin intereses / sem juros).

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

Also deliver the ads MercadoLibre mixes into the results (marked isSponsored). Off = organic results only, ranked as the site ranks them.

## `minDiscount` (type: `integer`):

Only listings at least this many percent below their previous price, e.g. 20.

## `minRating` (type: `number`):

Only listings rated at least this, e.g. 4.5. Listings without a rating are left out when set.

## `minSoldQuantity` (type: `integer`):

Only listings showing at least this many sold (the site shows buckets such as +500, +5 mil).

## `excludeKeywords` (type: `array`):

Leave out listings whose title contains any of these words, e.g. "funda", "usado".

## `includeDetails` (type: `boolean`):

Also read each listing's product page: description, photos, specs, variations, stock, seller id and reputation, warranty, returns, shipping, payment methods. Charged only when it answered.

## `includeReviews` (type: `boolean`):

Also deliver buyer reviews (one row each) for every listing or product.

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

Reviews per product. MercadoLibre stops one review list at about 500; turn on Deep review sweep to go past it.

## `reviewRating` (type: `string`):

Only reviews with this many stars.

## `reviewSort` (type: `string`):

Most helpful first (the site's default) or newest first.

## `deepReviews` (type: `boolean`):

Read every star rating and both orders and merge them without repeats, to collect more than one list's ~500 reviews.

## `includeQuestions` (type: `boolean`):

Also deliver the public questions and the seller's answers (one row each) for every listing.

## `maxQuestionsPerItem` (type: `integer`):

Questions per listing, newest first, as many as the listing's questions page shows.

## `includeSellerProfile` (type: `boolean`):

Seller mode: one profile row per official store (followers, store and brand ids, logo, banner) before its listings.

## `monitorMode` (type: `boolean`):

Deliver only listings, reviews and questions that earlier runs with the same store name did not deliver. Pairs with a daily schedule.

## `monitorPriceChanges` (type: `boolean`):

With Only new listings on: a known listing whose price changed comes back once, with changeType priceDrop / priceRise and its previous price.

## `minPriceChangePercent` (type: `number`):

Ignore price changes smaller than this, e.g. 5.

## `monitorStoreName` (type: `string`):

Named key-value store that remembers what was delivered. Use one name per schedule.

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

Listing / product rows per run (reviews or questions in those modes). MercadoLibre shows up to about 2,000 results per search; Split by price goes past that.

## `maxItemsPerSearch` (type: `integer`):

Cap for each search term or link. 0 = up to Max results.

## `splitByPrice` (type: `boolean`):

When a search has more results than the site shows (about 2,000), split it into price bands and merge them without repeats.

## `compact` (type: `boolean`):

Core listing fields only (id, title, url, price, discount, shipping, rating, sold, seller, position), trimmed for spreadsheets and AI agents.

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

Product-detail and review requests in flight at once.

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

Default: Apify residential IPs in each site's own country (MercadoLibre refuses datacenter and foreign IPs for its pages). You can give your own proxy URLs instead.

## Actor input object example

```json
{
  "mode": "search",
  "searchQueries": [
    "celular"
  ],
  "country": "MX",
  "sortBy": "relevance",
  "condition": "any",
  "freeShippingOnly": false,
  "fullShippingOnly": false,
  "officialStoresOnly": false,
  "bestSellersOnly": false,
  "interestFreeOnly": false,
  "includeSponsored": false,
  "includeDetails": false,
  "includeReviews": false,
  "maxReviewsPerProduct": 20,
  "reviewRating": "all",
  "reviewSort": "relevance",
  "deepReviews": false,
  "includeQuestions": false,
  "maxQuestionsPerItem": 50,
  "includeSellerProfile": true,
  "monitorMode": false,
  "monitorPriceChanges": true,
  "minPriceChangePercent": 0,
  "monitorStoreName": "mercadolibre-monitor",
  "maxItems": 48,
  "maxItemsPerSearch": 0,
  "splitByPrice": false,
  "compact": false,
  "maxConcurrency": 6,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Listings, products, reviews, questions and store profiles (field type says which).

## `summary` (type: `string`):

Per-search counts, the site's total and its per-search ceiling, rows skipped (sponsored, filtered, duplicates, already seen), pages the site refused.

# 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 = {
    "searchQueries": [
        "celular"
    ],
    "country": "MX",
    "maxItems": 48
};

// Run the Actor and wait for it to finish
const run = await client.actor("topapi/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 = {
    "searchQueries": ["celular"],
    "country": "MX",
    "maxItems": 48,
}

# Run the Actor and wait for it to finish
run = client.actor("topapi/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 '{
  "searchQueries": [
    "celular"
  ],
  "country": "MX",
  "maxItems": 48
}' |
apify call topapi/mercadolibre-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,topapi/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/Ze40UO4QBIR4rahBz/builds/h9wFMHIoeTt0HpDCv/openapi.json
