# Mercado Livre & MercadoLibre Scraper (`epicscrapers/mercadolibre-scraper`) Actor

Scrape Mercado Livre (Brazil) and MercadoLibre in 17 more countries: search results, today's deals, best sellers by category, product reviews and Q\&A. Price, discount, sold count, rating, seller, FULL shipping and rank, plus optional specs, stock and seller reputation.

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

## Pricing

from $1.00 / 1,000 result saveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

![Mercado Livre & MercadoLibre Scraper](https://api.apify.com/v2/key-value-stores/Tt6iHjJtIZyw5YQ3N/records/hero.png)

### Mercado Livre & MercadoLibre Scraper: prices, sales, sellers and stock in 18 countries

Mercado Livre & MercadoLibre Scraper turns Mercado Livre (Brazil) and MercadoLibre (Mexico, Argentina, Colombia, Chile and 13 more countries) into clean data for price monitoring, rank tracking and market research. Type a keyword or paste a search or product URL. You get every product a shopper sees: price, original price, discount, installments, Pix price, units sold, rating, seller, official-store and FULL flags, and the organic search position.

Five modes in one Actor: **products** from searches and URLs, **today's deals** (ofertas do dia, lightning deals), **best sellers** by category, and one row per **buyer review** or **question & answer** of the products you pick.

Turn on **Add product details** and every product row also carries what the product page shows: description, full spec table, all pictures, variations, exact stock, seller ID and MercadoLíder level, rating breakdown, Mercado Libre's AI review summary, top reviews with photos, warranty, returns and the other offers on the same product.

- **Up to 2,000 results per search.** That is everything Mercado Libre shows for a search, not just the first page of 48. A full 2,000-result search finishes in under a minute.
- **18 countries in one Actor**, with the same output fields everywhere: 🇧🇷 🇦🇷 🇲🇽 🇨🇴 🇨🇱 🇵🇪 🇺🇾 🇻🇪 🇪🇨 🇧🇴 🇵🇾 🇨🇷 🇩🇴 🇵🇦 🇬🇹 🇭🇳 🇳🇮 🇸🇻.
- **Organic ranking.** Sponsored results are left out by default, so `position` is the real organic rank. Turn them on to see where the ads appear.
- **The site's own filters**: price range, new / used / refurbished, minimum discount, free shipping, FULL and official stores, applied the way the website applies them.
- **Reviews and Q\&A at scale.** Up to 1,980 reviews per product, filtered by stars (for example only 1- and 2-star complaints), newest or most relevant first, with exact dates, likes and buyer photos.
- **Pay per result, no subscription.** From $1.50 per 1,000 results, product details from $3 per 1,000 more, reviews and questions from $1 per 1,000. No Mercado Libre account, API key or proxy setup. Export to JSON, CSV, Excel or Google Sheets.

### What can you do with it?

| Goal                           | How                                                                                                                                   |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| Price monitoring               | Schedule your keywords or product URLs daily and track `price`, `originalPrice`, `discountPercent` and `priceWithoutPaymentDiscount`. |
| Rank tracking                  | Follow your listings' organic `position` for the keywords that matter, per country.                                                   |
| Find what sells                | Search a niche and sort by `soldQuantity`, `rating` and `ratingsCount`. Spot `MAIS VENDIDO` / `MÁS VENDIDO` badges in `highlight`.    |
| Competitor and seller research | Compare sellers, `sellerReputationLevel`, `sellerPowerStatus` (MercadoLíder), official stores and FULL usage across a category.       |
| Catalog enrichment             | Pull descriptions, the full `specs` table, `pictures` and `variations` for import into your shop.                                     |
| Review analysis                | Mode **Reviews**: every review's stars, text, date, likes and photos. Or the AI `reviewSummary` and rating breakdown with details.    |
| Customer questions             | Mode **Questions & answers**: what buyers ask before buying and how sellers answer (Brazil).                                          |
| Deal hunting                   | Mode **Deals**: today's offers, deals of the day and lightning deals with `dealType` and `dealEndsAt`, per category.                  |
| Best-seller tracking           | Mode **Best sellers**: the top 20 of any category with their rank, every day.                                                         |
| Cross-country comparison       | Run the same keyword in several countries and compare prices in each local currency.                                                  |

### Quick start

1. Click **Try for free** and sign in to Apify.
2. Add a keyword to **Search terms**, for example `iphone 15`, and pick the **Country**.
3. For a first run, set **Max results per search** to `20`.
4. Click **Start**. When the run finishes, open the **Output** tab and export the data.

```json
{
    "searchQueries": ["iphone 15"],
    "country": "BR",
    "maxItemsPerSearch": 20
}
```

### Modes

| Mode (`mode`)                     | What you give                              | One row per                                          |
| --------------------------------- | ------------------------------------------ | ---------------------------------------------------- |
| Products (`products`)             | Search terms and/or URLs                   | product (search result, store listing, product page) |
| Reviews (`reviews`)               | Search terms and/or product URLs           | review of those products                             |
| Questions & answers (`questions`) | Search terms and/or product URLs (Brazil)  | question and its answer                              |
| Deals (`deals`)                   | Country, optional categories and deal type | product on the deals page                            |
| Best sellers (`bestSellers`)      | Country, optional categories               | product in a category's top 20, with its rank        |

```json
{
    "mode": "reviews",
    "startUrls": ["https://www.mercadolivre.com.br/p/MLB54982411"],
    "maxReviewsPerProduct": 300,
    "reviewRatings": ["1", "2"]
}
```

```json
{ "mode": "bestSellers", "country": "MX", "categories": ["MLM1051", "MLM1648"] }
```

### Input

| Field                                                | What it does                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mode`                                               | `products` (default), `reviews`, `questions`, `deals` or `bestSellers`. See [Modes](#modes).                                                                                                                                                                                                                                                                                                                            |
| `searchQueries`                                      | Keywords, one per line. Each is searched in `country` with the filters below.                                                                                                                                                                                                                                                                                                                                           |
| `startUrls`                                          | Search or category result URLs from any country (they keep their own filters), official store pages (`/loja/…`, `/tienda/…`), seller listings (`_CustId_<sellerId>`), product URLs (`/p/MLB…`, `/up/MLBU…`, `produto.mercadolivre.com.br/MLB-…`) or item IDs (`MLB4020577435`). Product URLs and IDs return one row each, with details. Deals (`/ofertas?…`) and best-seller pages (`/mais-vendidos/MLB1051`) work too. |
| `country`                                            | `BR` (default), `AR`, `MX`, `CO`, `CL`, `PE`, `UY`, `VE`, `EC`, `BO`, `PY`, `CR`, `DO`, `PA`, `GT`, `HN`, `NI` or `SV`.                                                                                                                                                                                                                                                                                                 |
| `categories`                                         | Deals and Best sellers modes: category IDs such as `MLB1051`. The ID is in the best-seller URL of the category. Empty = all deals, or the best sellers of every top-level category.                                                                                                                                                                                                                                     |
| `maxItemsPerSearch`                                  | Results per search term, URL or deals category. `0` = all, up to Mercado Libre's 2,000 (about 1,000 for deals). In the Reviews and Questions modes: the number of products per search. Default `100`.                                                                                                                                                                                                                   |
| `maxReviewsPerProduct`                               | Reviews mode: reviews per product, up to 1,980. Default `100`.                                                                                                                                                                                                                                                                                                                                                          |
| `reviewsSort`                                        | Reviews mode: `relevance` (default) or `newest`.                                                                                                                                                                                                                                                                                                                                                                        |
| `reviewRatings`                                      | Reviews mode: only these star ratings, e.g. `["1", "2"]`. Empty = all.                                                                                                                                                                                                                                                                                                                                                  |
| `maxQuestionsPerProduct`                             | Questions mode: questions per listing. Default `100`.                                                                                                                                                                                                                                                                                                                                                                   |
| `dealType`                                           | Deals mode: `all` (default), `deal_of_the_day` or `lightning`.                                                                                                                                                                                                                                                                                                                                                          |
| `includeDetails`                                     | Open every product page and add its details. Charged as an extra event per row.                                                                                                                                                                                                                                                                                                                                         |
| `sortBy`                                             | `relevance`, `price_asc` or `price_desc`.                                                                                                                                                                                                                                                                                                                                                                               |
| `condition`                                          | `any`, `new`, `used` or `refurbished`.                                                                                                                                                                                                                                                                                                                                                                                  |
| `minPrice`, `maxPrice`                               | Price range in the country's currency.                                                                                                                                                                                                                                                                                                                                                                                  |
| `minDiscount`                                        | Minimum discount in percent.                                                                                                                                                                                                                                                                                                                                                                                            |
| `freeShippingOnly`, `fullOnly`, `officialStoresOnly` | The site's free shipping, FULL and official store filters.                                                                                                                                                                                                                                                                                                                                                              |
| `includeSponsored`                                   | Also save sponsored results (`isSponsored: true`, `position: null`). Off by default.                                                                                                                                                                                                                                                                                                                                    |

Filters apply to search terms; price range, free shipping and FULL also apply to deals. Mercado Libre picks a category for most keywords (for example *Celulares › iPhone › Linha iPhone 15* for `iphone 15`); the filters are applied inside that category, exactly like clicking them on the website, so a filtered search doesn't fill up with cases and cables.

### Output

Every row is one product. Search results carry these fields:

| Group             | Fields                                                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product           | `itemId`, `productId` (catalog), `title`, `url`, `imageUrl`, `condition`, `variationsText`, `categoryId`, `categoryPath`, `domainId`                                |
| Price             | `price`, `originalPrice`, `discountPercent`, `currency`, `priceNote` (e.g. "no Pix"), `installments` {`count`, `amount`, `total`, `interestFree`, `text`}, `coupon` |
| Demand            | `soldQuantity`, `soldText`, `rating`, `highlight` (best seller, deal of the day…)                                                                                   |
| Seller & shipping | `sellerName`, `isOfficialStore`, `isFull`, `isInternational`, `shipsFromCountry`                                                                                    |
| Search            | `searchQuery`, `searchUrl`, `page`, `position`, `totalResults`, `isSponsored`, `country`, `siteId`, `scrapedAt`                                                     |

With **Add product details** (and for product URLs) rows also have:

| Group         | Fields                                                                                                                                                                                          |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product       | `parentProductId`, `userProductId`, `conditionCode` (`new`, `used`, `refurbished`), `description`, `features`, `specs` \[{`group`, `name`, `value`}], `pictures`, `variations`, `breadcrumb`     |
| Stock & price | `availableQuantity`, `hasStock`, `priceWithoutPaymentDiscount`, `paymentDiscountLabel`, `otherOffers`, `coupons`                                                                                |
| Reviews       | `ratingsCount`, `reviewsWithTextCount`, `ratingHistogram`, `reviewSummary`, `topReviews` (up to 5, with photos and likes)                                                                       |
| Seller        | `sellerId`, `sellerNickname`, `sellerUrl`, `sellerReputationLevel` (`5_green` is the best), `sellerPowerStatus` (`platinum`, `gold`…), `sellerStatusText`, `sellerSalesText`, `officialStoreId` |
| Logistics     | `listingType`, `logisticType` (`fulfillment` = FULL, `self_service` = Flex, `cross_docking`…), `localPickUp`, `warranty`, `returnPolicy`                                                        |
| Run           | `detailsScraped`                                                                                                                                                                                |

Deals rows add `dealType` (`LIGHTNING_DEAL`, `DEAL_OF_THE_DAY`, `TODAY_PROMOTION` or `BUY_BOX_WINNER` for other discounted offers) and `dealEndsAt` (lightning deals). Best-seller rows add `bestSellerCategoryId` and `bestSellerCategory`, and `position` is the rank.

Review rows (mode **Reviews**): `reviewId`, `rating` (1-5), `text`, `date` (ISO), `likes`, `variant`, `reviewerCountry`, `photos`, plus the product: `itemId`, `productId`, `productTitle`, `productUrl`, `country`, `siteId`, `searchQuery`.

Question rows (mode **Questions & answers**): `questionId`, `question`, `answer` (null while unanswered), `answerDate`, plus the same product fields.

#### Example row (search result with details)

```json
{
    "itemId": "MLB2750573904",
    "productId": "MLB15704079",
    "title": "Cafeteira Espresso Philips Walita Cor Preto",
    "url": "https://www.mercadolivre.com.br/cafeteira-espresso-philips-walita-cor-preto/p/MLB15704079?pdp_filters=item_id:MLB2750573904",
    "imageUrl": "https://http2.mlstatic.com/D_NQ_NP_859084-MLA111501566371_052026-O.webp",
    "price": 2330.42,
    "originalPrice": 3999.9,
    "discountPercent": 41,
    "currency": "BRL",
    "priceNote": "no Pix",
    "installments": {
        "count": 10,
        "amount": 240.25,
        "total": 2402,
        "interestFree": true,
        "text": "ou 2402 em 10x 240.25 sem juros"
    },
    "coupon": "2287.6 com Meli+",
    "rating": 4.8,
    "soldQuantity": 10000,
    "soldText": "+10 mil vendidos",
    "condition": null,
    "sellerName": "Mercado Livre",
    "isOfficialStore": true,
    "isFull": true,
    "isInternational": false,
    "shipsFromCountry": null,
    "highlight": "BLACK FRIDAY",
    "isSponsored": false,
    "variationsText": null,
    "categoryId": "MLB9188",
    "categoryPath": ["MLB5726", "MLB438284", "MLB438287", "MLB9188"],
    "domainId": "MLB-ELECTRIC_COFFEE_MAKERS",
    "country": "BR",
    "siteId": "MLB",
    "searchQuery": "cafeteira",
    "searchUrl": "https://lista.mercadolivre.com.br/cafeteira",
    "page": 1,
    "position": 1,
    "totalResults": 2350,
    "scrapedAt": "2026-10-23T15:53:31.949Z",
    "parentProductId": "MLB15704078",
    "priceWithoutPaymentDiscount": 2402.49,
    "paymentDiscountLabel": "no Pix",
    "conditionCode": "new",
    "availableQuantity": 51,
    "hasStock": true,
    "ratingsCount": 4534,
    "reviewsWithTextCount": 2137,
    "ratingHistogram": [
        {
            "stars": 5,
            "count": 4077,
            "percent": 89.92
        },
        {
            "stars": 4,
            "count": 242,
            "percent": 5.34
        },
        {
            "stars": 3,
            "count": 86,
            "percent": 1.9
        },
        {
            "stars": 2,
            "count": 32,
            "percent": 0.71
        },
        {
            "stars": 1,
            "count": 97,
            "percent": 2.14
        }
    ],
    "reviewSummary": "A cafeteira é elogiada por sua facilidade de uso e pelas opções variadas de café que oferece, sendo considerada um excelente custobenefício. O design prático e bonito, junto com o funcionamento perfeito e a qualidade do café, são aspectos frequentemente destacados. Além disso, o espumador de leite é apontado como uma característica muito apreciada.",
    "topReviews": [
        {
            "id": 843454774,
            "rating": 5,
            "text": "Vou relatar minha experiencia com a maquina. Tenho tambem em casa uma gaggia cardorna prestige que custa o dobro do valo",
            "date": "Há mais de 1 ano",
            "country": "Brasil",
            "likes": 506,
            "photos": []
        }
    ],
    "sellerId": 480263032,
    "sellerNickname": "Mercado Livre",
    "sellerUrl": "https://www.mercadolivre.com.br/loja/mercado-livre?item_id=MLB2750573904&category_id=MLB5726&official_store_id=2707&client=recoview-selleritems&recos_listing=true",
    "sellerReputationLevel": "5_green",
    "sellerPowerStatus": "platinum",
    "sellerStatusText": "MercadoLíder Platinum",
    "sellerSalesText": "+1 M vendas",
    "officialStoreId": 2707,
    "listingType": "gold_pro",
    "logisticType": "fulfillment",
    "localPickUp": false,
    "warranty": "24 meses de garantia de fábrica.",
    "returnPolicy": "Devolução grátis. Você tem 30 dias a partir da data de recebimento.",
    "description": "Cafeteira Espresso Automática, grãos moídos na hora, com vaporizador clássico. \n12 níveis de moagem, moinhos 100% de cerâmica para durabilidade e precisão. \n15 …",
    "features": ["Cafeteira expresso.", "Funcionamento: super automático."],
    "specs": [
        {
            "group": "Características principais",
            "name": "Tipo de alimentação",
            "value": "Corrente doméstica"
        },
        {
            "group": "Características gerais",
            "name": "Fabricante",
            "value": "Philips"
        },
        {
            "group": "Características gerais",
            "name": "Marca",
            "value": "Philips"
        }
    ],
    "pictures": [
        "https://http2.mlstatic.com/D_NQ_NP_859084-MLA111501566371_052026-OO.jpg",
        "https://http2.mlstatic.com/D_NQ_NP_730333-MLA99376145838_112025-OO.jpg"
    ],
    "variations": [
        {
            "name": "Cor",
            "selected": "Preto",
            "options": [
                {
                    "label": "Preto",
                    "productId": "MLB15704079",
                    "url": "https://www.mercadolivre.com.br/cafeteira-espresso-philips-walita-cor-preto/p/MLB15704079",
                    "price": 2402,
                    "available": true
                }
            ]
        }
    ],
    "otherOffers": [
        {
            "type": "OFFICIAL_STORE",
            "itemId": "MLB4191744586",
            "price": 2519.9,
            "listingType": "gold_special"
        },
        {
            "type": "BEST_INSTALLMENTS",
            "itemId": "MLB2750573904",
            "price": 2402.49,
            "listingType": "gold_pro"
        }
    ],
    "coupons": [],
    "breadcrumb": ["Eletrodomésticos", "Pequenos Eletrodomésticos", "Para a Cozinha", "Cafeteiras"],
    "detailsScraped": true
}
```

### Pricing

You pay per row saved, with platform usage and proxies included. Apify's paid plans get lower prices automatically.

| Event                 | Free plan     | Starter       | Scale         | Business      |
| --------------------- | ------------- | ------------- | ------------- | ------------- |
| Result saved          | $1.50 / 1,000 | $1.00 / 1,000 | $0.90 / 1,000 | $0.80 / 1,000 |
| Product details added | $3.00 / 1,000 | $2.50 / 1,000 | $2.00 / 1,000 | $1.50 / 1,000 |
| Review saved          | $1.00 / 1,000 | $0.80 / 1,000 | $0.70 / 1,000 | $0.60 / 1,000 |
| Question saved        | $1.00 / 1,000 | $0.80 / 1,000 | $0.70 / 1,000 | $0.60 / 1,000 |

In the Reviews and Questions modes you pay only for the reviews or questions, not for the products they belong to. A search result with details costs both events: $4.50 per 1,000 on the free plan, $2.30 on Business. Duplicates, skipped sponsored results and product pages that could not be loaded are not charged. Set a maximum cost per run in the run options and the Actor stops there.

### Good to know

- **`soldQuantity` is Mercado Libre's own bucket** (`5`, `25`, `50`, `100`, `500`, `1000`, `10000`…), the number behind "+1000 vendidos". The site doesn't publish exact sales.
- **`availableQuantity` caps at about 51** for listings with plenty of stock, like the "+50 disponíveis" label on the site.
- **Prices are in the local currency** of each country (`currency`). Some countries also list items in USD; those rows say `USD`.
- **FULL filter**: in some countries Mercado Libre's FULL filter also includes same-day Flex listings. `logisticType` tells them apart.
- **Positions** count organic results only. Mercado Libre sometimes shows the same product on two pages; the Actor saves it once, so a few positions can be skipped.
- **Reviews**: Mercado Libre lists up to 330 reviews per sort order. For more, the Actor goes on star by star (330 per star), so up to 1,980 per product. Reviews are shared by all sellers of a catalog product; questions belong to one listing (the seller shown).
- **Questions outside Brazil** currently can't be opened (the site asks for a local account); those listings are skipped and not charged.
- **Deals** exist in Brazil, Argentina, Mexico, Colombia, Chile, Peru, Uruguay, Venezuela and Ecuador; **best sellers** in the same countries except Venezuela. The smaller markets have neither page.
- **Product details** load in Brazil, Mexico and Argentina. In Chile, Colombia, Ecuador, Peru, Uruguay and the smaller markets, product pages currently ask for a local account: rows are saved from the search card without details, and the details are not charged. Reviews work in every country.
- **Deals** pages list about 1,000 deals per category or filter; split big runs by `categories` to get more.

### For AI agents

Call `epicscrapers/mercadolibre-scraper` with:

```json
{
    "searchQueries": ["iphone 15"],
    "country": "MX",
    "maxItemsPerSearch": 50,
    "includeDetails": false
}
```

Other modes: `{"mode": "reviews", "startUrls": ["<product URL>"], "maxReviewsPerProduct": 100}`, `{"mode": "questions", "searchQueries": ["air fryer"], "maxItemsPerSearch": 5}`, `{"mode": "deals", "country": "BR", "dealType": "lightning"}`, `{"mode": "bestSellers", "country": "AR", "categories": ["MLA1051"]}`.

Key output fields per product row: `title`, `url`, `price`, `originalPrice`, `currency`, `soldQuantity`, `rating`, `sellerName`, `isOfficialStore`, `isFull`, `position`, `isSponsored`. With `"includeDetails": true`: `availableQuantity`, `sellerId`, `sellerReputationLevel`, `specs`, `description`, `pictures`, `ratingsCount`, `reviewSummary`. Product URLs or item IDs go in `startUrls` and return one detailed row each.

### Em português

Extraia dados do Mercado Livre sem conta, sem API e sem proxy: resultados de busca com preço, desconto, parcelas, preço no Pix, vendas, avaliação, vendedor e FULL; **ofertas do dia e ofertas relâmpago** com o horário de término; **mais vendidos por categoria** com a posição no ranking; **avaliações** dos produtos (estrelas, texto, data, fotos) e **perguntas e respostas** dos anúncios. Escolha o modo em **What to scrape**, o país `BR` e exporte em JSON, CSV ou Excel.

### En español

Extrae datos de MercadoLibre México, Argentina, Colombia, Chile y 13 países más: resultados de búsqueda con precio, descuento, cuotas, ventas, calificación, vendedor y FULL; **ofertas relámpago** y ofertas del día; **más vendidos por categoría** con su posición; y **opiniones** de los productos (estrellas, texto, fecha, fotos). Elige el modo en **What to scrape** y el país (`MX`, `AR`, `CO`…). Los detalles del producto (stock, ficha técnica, reputación del vendedor) están disponibles en México y Argentina.

### FAQ

**Do I need a Mercado Libre account or API key?** No. The Actor handles access; you only need an Apify account.

**How fresh is the data?** Every run reads the live site. Schedule runs (daily, hourly) for monitoring.

**Can I scrape a seller's or official store's listings?** Yes. Put the official store page (`https://www.mercadolivre.com.br/loja/apple`, `https://www.mercadolibre.com.mx/tienda/celmix`) or a seller's listings URL (`https://lista.mercadolivre.com.br/_CustId_<sellerId>`, where `sellerId` comes from product details) in `startUrls`. Each returns the seller's listings like a search.

**Is it legal?** The Actor collects publicly visible product data. It does not collect personal data about buyers. Make sure your use complies with Mercado Libre's terms and the laws that apply to you.

**Something's missing or broken?** Open an issue on the Actor's Issues tab and include the run link.

# Actor input Schema

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

<b>Products</b>: results of your search terms and URLs. <b>Reviews</b> / <b>Questions & answers</b>: the buyer reviews or Q\&A of the products your search terms and URLs find (one row per review or question). <b>Deals</b>: today's offers page (<code>/ofertas</code>). <b>Best sellers</b>: the top 20 of each category (<code>/mais-vendidos</code>). Deals exist in Brazil, Argentina, Mexico, Colombia, Chile, Peru, Uruguay, Venezuela and Ecuador; best sellers in the same countries except Venezuela.

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

Keywords to search, one per line, for example <code>iphone 15</code> or <code>cafeteira</code>. Each term is searched in the country below with the filters below. Used by the Products, Reviews and Questions modes.

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

Mercado Livre / MercadoLibre URLs from any country: search and category result pages (<code>lista.mercadolivre.com.br/...</code>, <code>listado.mercadolibre.com.mx/...</code>) keep their own filters; official store pages (<code>/loja/apple</code>, <code>/tienda/celmix</code>) and seller listings (<code>*CustId*\<sellerId></code>) return the seller's listings; product pages (<code>/p/MLB...</code>, <code>/up/MLBU...</code>, <code>produto.mercadolivre.com.br/MLB-...</code>) and item IDs (<code>MLB4020577435</code>) return one row with full details. Deals pages (<code>/ofertas?...</code>) and best-seller pages (<code>/mais-vendidos/MLB1051</code>) work too. In the Reviews and Questions modes, the reviews or questions of every product found are saved.

## `categories` (type: `array`):

Category IDs for the Deals and Best sellers modes, for example <code>MLB1051</code> (Celulares e Telefones) or <code>MLM1648</code> (Computación). The ID is in the category's best-seller URL (<code>mercadolivre.com.br/mais-vendidos/MLB1051</code>). Empty: all deals, or the best sellers of every top-level category.

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

Marketplace for search terms, deals and best sellers. URLs always use the country of their own domain.

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

Results to save for each search term, URL or deals category. Mercado Libre shows at most 2,000 results per search and about 1,000 deals; <code>0</code> saves all of them. In the Reviews and Questions modes, this is the number of products per search whose reviews or questions are saved.

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

Open each product page and add the description, full spec table, all pictures, variations, exact stock, seller ID and reputation, rating breakdown, AI review summary, top reviews, warranty, returns and other offers. Charged as an extra event per row. Product pages open in Brazil, Mexico and Argentina; elsewhere rows are saved without details (not charged). Not used in the Reviews and Questions modes.

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

Reviews to save for each product in the Reviews mode. Mercado Libre lists up to 330 reviews per sort order; above that, the rest are collected star by star (up to 1,980). <code>0</code> saves all it can reach.

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

Which reviews come first.

## `reviewRatings` (type: `array`):

For example 1 and 2 stars for complaints. Empty: all ratings.

## `maxQuestionsPerProduct` (type: `integer`):

Questions and answers to save for each listing in the Questions & answers mode. <code>0</code> saves all. Outside Brazil, question pages currently need a local account and are skipped.

## `dealType` (type: `string`):

Deals mode only. Lightning deals end within hours (<code>dealEndsAt</code>).

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

Order of search term results.

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

Keep only new, used or refurbished listings.

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

In the country's currency (BRL, MXN, ARS…).

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

In the country's currency.

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

Keep only listings discounted by at least this percentage.

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

Keep only listings with free shipping.

## `fullOnly` (type: `boolean`):

Keep only listings stored and shipped by Mercado Libre (FULL). In some countries the site's FULL filter also includes same-day Flex listings; <code>logisticType</code> tells them apart.

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

Keep only listings from official brand stores.

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

Also save the ads Mercado Libre mixes into the results (marked <code>isSponsored</code>, with no organic <code>position</code>). Off by default, so positions are the organic ranking.

## Actor input object example

```json
{
  "mode": "products",
  "searchQueries": [
    "iphone 15"
  ],
  "country": "BR",
  "maxItemsPerSearch": 50,
  "includeDetails": false,
  "maxReviewsPerProduct": 100,
  "reviewsSort": "relevance",
  "maxQuestionsPerProduct": 100,
  "dealType": "all",
  "sortBy": "relevance",
  "condition": "any",
  "freeShippingOnly": false,
  "fullOnly": false,
  "officialStoresOnly": false,
  "includeSponsored": false
}
```

# Actor output Schema

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

No description

## `deals` (type: `string`):

No description

## `bestSellers` (type: `string`):

No description

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

No description

## `questions` (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 = {
    "searchQueries": [
        "iphone 15"
    ],
    "maxItemsPerSearch": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/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": ["iphone 15"],
    "maxItemsPerSearch": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/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": [
    "iphone 15"
  ],
  "maxItemsPerSearch": 50
}' |
apify call epicscrapers/mercadolibre-scraper --silent --output-dataset

```

## MCP server setup

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