# Mercado Libre Scraper — Products, Prices, Sellers & Ratings (`omao/mercado-libre-scraper`) Actor

Scrape Mercado Libre search results across Latin America into clean JSON: title, clean permalink, price, discount, rating, review count, seller, shipping and category.

- **URL**: https://apify.com/omao/mercado-libre-scraper.md
- **Developed by:** [Marouane Oulabass](https://apify.com/omao) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

# README

## Mercado Libre Scraper — Products, Prices, Sellers & Ratings to JSON

Scrape **Mercado Libre** search results into clean, structured JSON — across Mexico, Argentina, Brazil, Chile, Colombia, Peru and Uruguay. Give it search terms, get back every product with its **clean product URL, price, discount, rating, review count, seller and shipping** — ready for price monitoring, market research and lead generation.

> AI-agent ready: this Actor is callable and payable by AI agents via [x402](https://docs.apify.com/platform/integrations/x402) (USDC on Base), no Apify account required.

Unlike most Mercado Libre scrapers, this Actor returns the **real product permalink** (not an ad‑tracking redirect) and the **real star rating** shown on the listing, and never charges you for empty, duplicate or failed results.

### Who uses this

- 🛒 **E‑commerce & repricing teams** — monitor competitor prices and discounts across LatAm.
- 📊 **Market researchers** — analyze catalog depth, ratings and seller mix per category.
- 💼 **Sellers & brands** — benchmark against official stores and top sellers in your niche.
- 🤖 **Data & AI pipelines** — feed clean, structured product data into your models.
- 🧑‍💻 **Developers** — a reliable Mercado Libre endpoint by search term, no anti‑bot to handle.

### Features

- 🌎 **7 Latin American marketplaces** — MX, AR, BR, CL, CO, PE, UY, from one input.
- 🔗 **Clean permalinks** — real `articulo.mercadolibre.*` product URLs, not `click1…mclics` tracking links.
- ⭐ **Complete data** — price, original price, discount %, **star rating**, seller, free‑shipping, installments, sponsored flag (review count included when Mercado Libre displays it on the listing).
- 📄 **Full pagination** — collect as many results per search term as you need.
- 💸 **Fair billing** — pay per product actually delivered; empty/blocked pages cost you nothing.
- 🧱 **Stable output schema** — documented, no debug fields.

### Input

| Field | Type | Description |
|---|---|---|
| `targets` | array of strings | Search terms (one search per term). Required. |
| `country` | string | `mx`, `ar`, `br`, `cl`, `co`, `pe`, `uy`. Required. |
| `sortBy` | string | `relevance` (default), `price_asc`, `price_desc`. |
| `maxResults` | integer | Max products per search term (50 per page). Default 100. |
| `maxItems` | integer | Optional global cap across all terms. |

```json
{
  "targets": ["laptop", "iphone 15"],
  "country": "mx",
  "sortBy": "relevance",
  "maxResults": 100
}
```

### Output

Each dataset item (real fields produced by the Actor):

```json
{
  "id": "MLM123456",
  "title": "MacBook Pro 14\" M3 8GB 1TB",
  "permalink": "https://articulo.mercadolibre.com.mx/MLM-123456-macbook",
  "currentPrice": 39999,
  "originalPrice": 49999,
  "currency": "MXN",
  "discountPercent": 20,
  "ratingValue": 4.7,
  "reviewCount": 1234,
  "sellerName": "Apple",
  "isOfficialStore": true,
  "freeShipping": true,
  "shippingText": "Llega gratis mañana",
  "installmentsText": "15 meses sin intereses",
  "categoryId": "MLM1652",
  "isSponsored": false,
  "site": "MLM",
  "country": "mx",
  "sourceTarget": "laptop",
  "pageNumber": 1,
  "searchRank": 1,
  "scrapedAt": "2026-07-11T00:00:00Z"
}
```

### Pricing

Pay‑per‑result. A typical search of 1,000 products costs about **$1.50–$2.00** total, billed only for products actually returned. Empty or blocked pages are never charged.

### Use cases

- **Price monitoring** — track competitor prices and discounts across LatAm marketplaces.
- **Market research** — analyze catalog depth, ratings and seller mix per category.
- **Lead generation** — build lists of official stores and top sellers by niche.
- **Repricing / e‑commerce ops** — feed clean product data into your pricing tools.

### FAQ

**How do I scrape Mercado Libre product data into a spreadsheet?**
Run this Actor with your search terms and export the dataset to CSV, Excel or JSON from the Apify console or API.

**Does it work for Mercado Libre Mexico, Argentina and Brazil?**
Yes — set `country` to `mx`, `ar`, `br`, `cl`, `co`, `pe` or `uy`.

**Can I get the real product URL instead of a tracking link?**
Yes — the `permalink` field is the clean `articulo.mercadolibre.*` URL, stripped of tracking parameters.

**Does it return review counts and ratings?**
Yes — both `ratingValue` and `reviewCount` are included when the listing shows them.

**Will I be charged for failed runs?**
No. Billing happens per product delivered; blocked or empty pages cost nothing.

**Which countries does it cover?**
Seven Mercado Libre marketplaces: Mexico (mx), Argentina (ar), Brazil (br), Chile (cl), Colombia (co), Peru (pe) and Uruguay (uy).

**Can I monitor prices on a schedule?**
Yes — schedule the Actor (or its task) to run daily and export each run to build your own Mercado Libre price‑history dataset.

### Limitations

- Search‑results scraping (listing pages). Full product‑detail pages (description, all photos, seller reputation history) are out of scope for v0.1.
- Mercado Libre serves anti‑bot challenges to some traffic; the Actor uses residential proxies and skips (never charges for) any page that is challenged.

### Support

Found a missing field or a bug? Open an issue on the Actor's **Issues** tab — we respond within 48h.

# Actor input Schema

## `targets` (type: `array`):

Keywords to search on Mercado Libre (one search per term).

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

Mercado Libre marketplace to search.

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

Result ordering: relevance (default), price low to high, or price high to low.

## `maxResults` (type: `integer`):

Upper bound of products to collect per search term (50 per page).

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

Global cap across all search terms. Leave empty for no global cap.

## `deduplicateProducts` (type: `boolean`):

Skip products already collected in this run (same product id). Duplicates are never charged.

## `debugSnapshots` (type: `boolean`):

Save an HTML snapshot to the key-value store when a page yields zero products (diagnostics).

## `healthCheckMode` (type: `boolean`):

Internal monitoring: verify extraction-fidelity thresholds and FAIL the run if broken (no billing). Used by the daily health canary.

## Actor input object example

```json
{
  "targets": [
    "laptop",
    "iphone 15"
  ],
  "country": "mx",
  "sortBy": "relevance",
  "maxResults": 100,
  "deduplicateProducts": true,
  "debugSnapshots": true,
  "healthCheckMode": false
}
```

# Actor output Schema

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

All scraped products (title, price, discount, rating, review count, seller, shipping, clean 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 = {
    "targets": [
        "laptop"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("omao/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 = { "targets": ["laptop"] }

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

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

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

```

## CLI example

```bash
echo '{
  "targets": [
    "laptop"
  ]
}' |
apify call omao/mercado-libre-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=omao/mercado-libre-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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