# Mercado Libre Scraper - 17 LATAM Countries, No Login (`gio21/mercado-libre-scraper`) Actor

Scrape Mercado Libre products by keyword across 17 LATAM marketplaces: price, discount, installments, rating, seller, shipping, images. No login required. $0.00175 per product, no run fee.

- **URL**: https://apify.com/gio21/mercado-libre-scraper.md
- **Developed by:** [Gio](https://apify.com/gio21) (community)
- **Categories:** E-commerce
- **Features:** Limited permissions
- **Stats:** 63 total users, 8 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$1.75 / 1,000 product scrapeds

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

## Mercado Libre Scraper - 17 LATAM Countries, No Login

### Why use this scraper

Mercado Libre does not offer a public API for product search, and every one
of its 17 country sites (Argentina, Mexico, Colombia, Chile and more) is a
separate catalog with its own prices, currency and stock. If you need price
data, competitor listings or product research from Mercado Libre today, the
only two options are building and maintaining your own scraper against a
site that changes its markup often, or paying a person to copy rows by hand.
Both are slow and both break.

**Mercado Libre Scraper** does the job in one API call: give it a keyword
and a country, and it returns every product on the search results, with
price, discount, installments, seller, rating, shipping and images already
structured as JSON. No login, no cookies, no CAPTCHA to solve on your end.
It runs on Apify's infrastructure, so it scales from a 10-item test run to a
5,000-item daily monitor without you touching a proxy or a browser.

### Overview

The actor takes a search keyword and a target country, crawls the Mercado
Libre search-results pages for that marketplace, and returns one record per
product listed. Each run is scoped to a single country because each country
is a fully separate catalog with its own currency and pricing; run it once
per country if you need multi-country coverage. A typical run of 50 items
finishes in under a minute. You are charged **$0.0025 per product scraped**
plus a small $0.02 run-start fee (prices from Nov 26, 2026).

### Supported inputs

This actor has a single, focused input mode: **keyword search on one
country marketplace**.

- **keyword** (required) - the search term exactly as a shopper would type
  it: `"iphone"`, `"notebook gamer"`, `"celular samsung"`.
- **country** (required) - the ISO code of the Mercado Libre marketplace to
  search: `AR`, `MX`, `CO`, `CL`, `PE`, `UY`, `VE`, `EC`, `BO`, `PY`, `PA`,
  `DO`, `CR`, `GT`, `HN`, `NI` or `SV`. Each code maps to its own domain
  (`mercadolibre.com.ar`, `mercadolibre.com.mx`, and so on) and its own
  prices in local currency.
- **maxItems** (optional, default 50) - hard cap on how many products the
  run returns, across all result pages.
- **maxPages** (optional, default 5) - hard cap on how many result pages
  (roughly 48 products each) the run crawls, whichever cap is hit first.
- **sort** (optional, default `relevance`) - `relevance`, `price_asc`,
  `price_desc` or `newest`.

There is no direct product-URL or product-ID input mode: this actor is
built for search and discovery, not for re-scraping a fixed list of URLs.
See **Notes & limitations** below.

For Brazil (`mercadolivre.com.br`), use the separate **Mercado Livre
Scraper**, since it is a distinct marketplace with its own catalog.

### Use cases

- **Price monitoring for resellers.** Track a product line's price,
  discount and installment offers across sellers on one or more country
  sites, and get alerted when a competitor undercuts you.
- **Market research for expansion.** Before entering a new LATAM country,
  pull the top listings for your category on that country's Mercado Libre
  to see incumbent prices, ratings and shipping offers.
- **Dropshipping and sourcing teams.** Search a product niche across
  several countries in one pass to find winning listings, then compare
  price points before sourcing.
- **Lead generation for B2B sales.** Collect seller names surfaced by a
  keyword search to build a prospect list of active Mercado Libre sellers
  in a given country and category.
- **AI shopping agents and RAG pipelines.** Feed clean, structured product
  JSON (price, images, ratings, shipping) into an assistant that compares
  options or answers "what's the cheapest X in Mexico right now" queries.

### How it works

The actor opens the Mercado Libre search-results page for the chosen
keyword and country, and reads the product cards exactly as a shopper's
browser would render them: title, price, discount badge, installment
offer, rating, seller name, shipping label and image. It paginates through
result pages until it hits `maxItems` or `maxPages`, whichever comes first.
Because it reads the public search results directly, it needs no login and
no session cookie, and it adapts automatically when Mercado Libre changes
small layout details on a page.

### Input configuration

**1. Basic keyword search (default country, Argentina)**

```json
{
  "keyword": "iphone"
}
```

**2. Cheapest-first search in a specific country**

```json
{
  "keyword": "iphone",
  "country": "MX",
  "maxItems": 30,
  "sort": "price_asc"
}
```

**3. Deep crawl for a broad category, newest listings first**

```json
{
  "keyword": "notebook gamer",
  "country": "CO",
  "maxItems": 200,
  "maxPages": 5,
  "sort": "newest"
}
```

### Output sample

Real output from a production run against `mercadolibre.com.ar` (keyword
`iphone`, September 2026):

```json
[
  {
    "productId": "MLA1055308620",
    "title": "Apple iPhone 17 Pro Max (256 GB) - Naranja cosmico - Distribuidor Autorizado",
    "price": 3129999,
    "currency": "ARS",
    "originalPrice": 3999999,
    "discount": null,
    "installments": "Mismo precio 6 cuotas de $521.666",
    "rating": 4.9,
    "reviewCount": null,
    "seller": "Apple",
    "condition": null,
    "shipping": "Llega gratis manana",
    "freeShipping": true,
    "highlight": null,
    "coupon": null,
    "variations": null,
    "image": "https://http2.mlstatic.com/D_Q_NP_2X_964942-MLA104127286834_012026-E.webp",
    "url": "https://www.mercadolibre.com.ar/apple-iphone-17-pro-max-256-gb-naranja-cosmico-distribuidor-autorizado/p/MLA1055308620",
    "keyword": "iphone",
    "country": "AR",
    "scrapedAt": "2026-09-28T19:09:39.753Z"
  },
  {
    "productId": "MLA1040287808",
    "title": "Apple iPhone 16 (128 GB) - Negro - Distribuidor Autorizado",
    "price": 1859999,
    "currency": "ARS",
    "originalPrice": 2569999,
    "discount": null,
    "installments": "Mismo precio 6 cuotas de $309.999",
    "rating": 4.9,
    "reviewCount": null,
    "seller": "Apple",
    "condition": null,
    "shipping": "Llega gratis manana",
    "freeShipping": true,
    "highlight": null,
    "coupon": null,
    "variations": null,
    "image": "https://http2.mlstatic.com/D_Q_NP_2X_838311-MLA99501450112_112025-E.webp",
    "url": "https://www.mercadolibre.com.ar/apple-iphone-16-128-gb-negro-distribuidor-autorizado/p/MLA1040287808",
    "keyword": "iphone",
    "country": "AR",
    "scrapedAt": "2026-09-28T19:09:39.753Z"
  }
]
```

### Key output fields

| Field | Type | Description |
|-------|------|-------------|
| `productId` | string | Mercado Libre item ID, prefixed by marketplace (`MLA` Argentina, `MLM` Mexico, `MCO` Colombia, `MLC` Chile, `MPE` Peru, ...). |
| `title` | string | Product title as shown on the listing. |
| `price` | number | Current price, in the marketplace's local currency. |
| `currency` | string | Local currency code (`ARS`, `MXN`, `COP`, `CLP`, `PEN`, `UYU`, `VES`, `BOB`, `PYG`, ...). |
| `originalPrice` | number | null | Pre-discount price; `null` when the item is not on sale. |
| `discount` | string | null | Discount label as shown (e.g. `46% OFF`); `null` when not on sale. |
| `installments` | string | null | Installment offer text, when Mercado Libre shows one. |
| `rating` | number | null | Average buyer rating, 1 to 5. |
| `reviewCount` | number | null | Number of buyer reviews, when shown on the card. |
| `seller` | string | null | Seller or brand name. |
| `condition` | string | null | `Nuevo`, `Usado` or `Reacondicionado`, when shown. |
| `shipping` | string | null | Shipping label as shown (e.g. free-shipping text). |
| `freeShipping` | boolean | `true` when the listing offers free shipping. |
| `highlight` | string | null | Promotional badge (e.g. `MAS VENDIDO`), when present. |
| `coupon` | string | null | Coupon label, when present. |
| `variations` | string | null | Variation summary (size, color), when present. |
| `image` | string | Product image URL. |
| `url` | string | Canonical product page URL. |
| `keyword` / `country` / `scrapedAt` | string | The search keyword, ISO country code and scrape timestamp for that record. |

### Pricing

Pay-per-event (prices from Nov 26, 2026):

| Event | Price |
|-------|-------|
| Product scraped | $0.0025 |
| Actor start (per GB of memory, default 1 GB) | $0.02 |

That is **$2.50 per 1,000 products** scraped, regardless of country or
plan tier, plus $0.02 per run. Until Nov 26, 2026 the price is $0.00175
per product with no run-start fee. Free-plan runs return up to 5 products.

### What makes this richer than the competition

Two other actors cover Mercado Libre product search on the Apify Store:

- **[karamelo/mercadolibre-scraper-espanol-castellano](https://apify.com/karamelo/mercadolibre-scraper-espanol-castellano)**
  (166 users in the last 30 days) charges $0.005 per result on its Free
  plan tier, only dropping to $0.0012 once a buyer is on a Gold plan or
  higher. Our flat $0.0025 per product beats its Free, Bronze and Silver
  tier pricing outright, with no plan upgrade required.
- **[sourabhbgp/mercadolibre-scraper](https://apify.com/sourabhbgp/mercadolibre-scraper)**
  (149 users in the last 30 days) is broader in scope, it also scrapes
  reviews, buyer Q\&A and seller catalogs, but charges $0.005 per product
  result on its Free tier plus a $0.005 one-time run fee. For teams that
  only need product search data, this actor is cheaper per item and has a
  lower run fee.

If your use case needs reviews, Q\&A or seller-catalog scraping alongside
products, sourabhbgp's actor covers more ground than this one does. If you
only need product listings by keyword, this actor is the cheaper, simpler
option.

### Notes & limitations

- **Search only, no direct URL/ID mode.** This actor takes a keyword and a
  country, and returns search results. It does not accept a list of
  product URLs or IDs to re-scrape individually.
- **One country per run.** Each country is a separate catalog with its own
  currency; to cover multiple countries, run the actor once per country.
- **Fields are `null` when Mercado Libre doesn't show them.** Not every
  listing has a rating, coupon, discount or condition label; the actor
  returns `null` rather than guessing.
- **~48 products per result page.** Very deep result sets (hundreds of
  items for a broad keyword) take proportionally more pages and more time.
- **Public data only.** The actor reads publicly visible search-result
  data; it does not access buyer accounts, order history or any
  authenticated area of Mercado Libre.

### FAQ

**Do I need a Mercado Libre account to use this?**
No. The actor reads public search results; no login, cookies or
credentials are required.

**Which countries can I search?**
17 Hispanic LATAM marketplaces: Argentina, Mexico, Colombia, Chile, Peru,
Uruguay, Venezuela, Ecuador, Bolivia, Paraguay, Panama, Dominican Republic,
Costa Rica, Guatemala, Honduras, Nicaragua and El Salvador. For Brazil, use
the separate Mercado Livre Scraper.

**Can I search multiple countries in one run?**
No, one country per run, since each is a separate catalog with its own
prices and currency. Run the actor once per country you need.

**Can I get product reviews or seller profiles with this actor?**
No, this actor returns product search results only. If you need reviews,
buyer Q\&A or seller-catalog data, see the comparison in **What makes this
richer than the competition** above.

**Why is a field like `rating` or `coupon` sometimes `null`?**
Mercado Libre does not show every field on every listing card. When a
value is not present, the actor returns `null` instead of inventing one.

**How much does a 1,000-product run cost?**
$2.52: $0.0025 per product scraped plus the $0.02 run-start fee (from Nov 26, 2026).

**Can I schedule this to run automatically?**
Yes, use Apify's built-in [schedules](https://docs.apify.com/platform/schedules)
to run it daily or hourly for ongoing price monitoring.

### For AI Agents & LLM Apps

This actor is callable from any MCP-compatible AI assistant through the
[Apify MCP server](https://mcp.apify.com), and directly from code through
the Apify API.

**Via MCP** (`mcp.apify.com`): add the Apify MCP server to your AI
assistant (Claude, ChatGPT, or any MCP client) and call the
`gio21/mercado-libre-scraper` actor by name with a `keyword` and `country`.
The assistant gets back structured JSON it can reason over directly.

**Via API** (`run-sync-get-dataset-items`), for a synchronous call that
returns the dataset items in the same request:

```bash
curl "https://api.apify.com/v2/acts/gio21~mercado-libre-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"keyword": "iphone", "country": "MX", "maxItems": 30, "sort": "price_asc"}'
```

### Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by,
or sponsored by Mercado Libre or any of its subsidiaries. All trademarks
mentioned are the property of their respective owners.

### SEO Keywords

mercado libre scraper, mercadolibre api, mercado libre product scraper, scrape mercado libre products, mercado libre price monitoring, LATAM ecommerce scraper, mercadolibre data extraction

# Actor input Schema

## `keyword` (type: `string`):

Product keyword to search on the chosen Mercado Libre marketplace, exactly as a shopper would type it. Plain text, no operators required. Example: "iphone" (also "notebook", "refrigerador", "celular samsung").

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

ISO country code of the Mercado Libre marketplace to scrape. Each country has its own catalog, currency and prices, so results differ per country. One country per run. Example: "MX" for Mexico. For Brazil use the dedicated Mercado Livre Scraper instead.

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

Hard cap on the total number of products to scrape across all pages. Stops early once reached. Integer >= 1. Example: 30 (default 50).

## `maxPages` (type: `integer`):

Maximum number of search-result pages to crawl; each page holds ~48 products. Limits depth independently of maxItems (whichever cap hits first wins). Integer >= 1. Example: 3 (default 5).

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

Order in which Mercado Libre returns the search results. Use price sorts to surface cheapest/priciest listings, or newest for fresh stock. Example: "price_asc" (default "relevance").

## Actor input object example

```json
{
  "keyword": "iphone",
  "country": "AR",
  "maxItems": 50,
  "maxPages": 3,
  "sort": "relevance"
}
```

# Actor output Schema

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

All scraped Mercado Livre products with title, price, rating, reviews, seller, shipping, image, and URL.

# 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 = {
    "keyword": "iphone",
    "country": "AR",
    "maxItems": 50,
    "maxPages": 3,
    "sort": "relevance"
};

// Run the Actor and wait for it to finish
const run = await client.actor("gio21/mercado-libre-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 = {
    "keyword": "iphone",
    "country": "AR",
    "maxItems": 50,
    "maxPages": 3,
    "sort": "relevance",
}

# Run the Actor and wait for it to finish
run = client.actor("gio21/mercado-libre-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 '{
  "keyword": "iphone",
  "country": "AR",
  "maxItems": 50,
  "maxPages": 3,
  "sort": "relevance"
}' |
apify call gio21/mercado-libre-scraper --silent --output-dataset

```

## MCP server setup

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