# MercadoLibre Scraper — Products, Reviews, Q\&A (`sourabhbgp/mercadolibre-scraper`) Actor

Scrape MercadoLibre / Mercado Livre products, reviews, buyer Q\&A, and seller catalogs across Mexico, Argentina, Brazil, Ecuador, Dominican Republic. HTTP-only, no login. 4 modes: search, product, reviews, seller.

- **URL**: https://apify.com/sourabhbgp/mercadolibre-scraper.md
- **Developed by:** [Sourabh Kumar](https://apify.com/sourabhbgp) (community)
- **Categories:** E-commerce
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## MercadoLibre Scraper 🇲🇽🇦🇷🇧🇷 | Products, Reviews, Q&A, Sellers — No Login, No Proxy

Scrape **MercadoLibre** and **Mercado Livre** at scale. Extract full product listings, customer reviews, buyer questions & seller answers, and entire seller catalogs across **5 Latin American countries**: 🇲🇽 Mexico, 🇦🇷 Argentina, 🇧🇷 Brazil, 🇪🇨 Ecuador, 🇩🇴 Dominican Republic.

**One actor. Four modes. Pure HTTP.** No login, no cookies, no proxy required. Pay-per-result at $5 per 1,000 records.

### 🎯 What makes this the best MercadoLibre scraper on Apify

- 🧾 **Only scraper with buyer Q&A extraction** — every product includes the full questions and seller-answered replies (up to 20 per product)
- 🎨 **Only scraper with product variations** — captures every color, storage, and size variant with their own catalog IDs
- 📦 **4 modes in one actor** — replaces running Search + Product Detail + Reviews + Seller as separate scrapers
- ⭐ **Top 5 reviews inline for free** on every product (via JSON-LD) — no extra charge
- 💯 **50+ product specs** — RAM, battery, model, brand, dimensions, color — full spec table parsed
- 🏪 **Seller reputation** — level (`5_green`), power status (`platinum`), official-store flag
- 💵 **Installments / "meses sin intereses"** — quantity, per-installment amount, total
- 🚚 **Free shipping detection** + return policy (days, method, fees)
- ⚡ **HTTP-only, datacenter IPs** — 90% margins, no residential proxy cost
- 📊 **Structured error codes + per-run diagnostic report** — every failure logged with grep-able reason code

### 🌎 Supported marketplaces

| Country | Site ID | Domain | Currency |
|---------|:-------:|--------|:--------:|
| 🇲🇽 Mexico | MLM | mercadolibre.com.mx | MXN |
| 🇦🇷 Argentina | MLA | mercadolibre.com.ar | ARS |
| 🇧🇷 Brazil | MLB | mercadolivre.com.br | BRL |
| 🇪🇨 Ecuador | MEC | mercadolibre.com.ec | USD |
| 🇩🇴 Dominican Republic | MRD | mercadolibre.com.do | DOP |

> Chile, Colombia, Peru, and Uruguay are intentionally **not** supported — MercadoLibre serves an SPA shell on those domains which cannot be read by HTTP-only scrapers. The actor returns an explicit `INPUT_UNSUPPORTED_COUNTRY` event rather than silently failing.

### 📦 Four scraping modes

#### 🔍 Search mode — keyword or listing URL → products

Input a keyword (`"iphone 15"`) or a `listado.*` URL. Returns paginated product results:

- Title, brand, thumbnail, product URL
- Price, currency, discount %, original price
- Aggregate rating + rating count
- Free shipping flag, position in results
- Catalog product ID + individual item ID

#### 📦 Product mode — URL or raw ID → full PDP

Input a catalog URL (`/p/MLM…`), article URL (`articulo.*/MLM-…`), or raw product ID (`MLM27172669`). Returns:

- Core: title, description, brand, SKU, condition (new/used/refurbished), up to 20 images
- Pricing: current price, original price, discount %, currency, availability
- Ratings: rating, rating count, review count, **top 5 reviews inline** (via JSON-LD)
- Seller: ID, nickname, reputation level, power seller status, official store flag
- Installments: quantity, per-payment amount, total, currency
- Shipping: free flag, origin/destination, handling + transit days
- Return policy: country, category, days, method (by mail / in-store), fees
- **Variations**: every color, storage, and size variant with catalog IDs
- **Q&A**: up to 20 buyer questions + seller answers with timestamps
- Breadcrumbs, category ID, domain ID, 50+ spec attributes

#### ⭐ Reviews mode — paginated reviews for any product

Input a product URL or ID. Returns up to 500 reviews, each with:

- Review ID, 1-5 star rating, full review text
- Review date, reviewer country, likes count
- Attached media (photos/videos)
- Variant info (which color/size was reviewed)

#### 🏪 Seller mode — all items + reputation for a seller

Input a `_CustId_` URL, `/tienda/slug` URL, or numeric seller ID. Returns the seller's full catalog paginated (up to 2,000 items per run) with title, price, currency, URL, free-shipping flag.

### 💼 Top use cases

- **Price monitoring** across MX/AR/BR in a single scheduled run — track competitor pricing
- **E-commerce catalog enrichment** — pull product images, specs, descriptions for Shopify or WooCommerce imports
- **Competitive analysis** — monitor a rival seller's entire catalog and reputation trajectory
- **Review sentiment analytics** — scrape thousands of reviews for ML or product research
- **Lead generation** — identify official stores, platinum-reputation sellers, category leaders
- **SEO / keyword research** — mine buyer Q&A for long-tail search intent and FAQ content
- **Dropshipping sourcing** — find Brazilian / Mexican suppliers with ratings and reviews
- **Market research** — which brands dominate which categories in each LATAM market

### 💰 Pricing

Pay-per-result (PPE) at a **flat $5 per 1,000 results** — one price for search results, product pages, reviews, or seller items. No minimum spend, no monthly fee, no subscription.

**Examples**:
- Scrape 500 products: **$2.50**
- Scrape 50 full product PDPs with reviews + Q&A: **$0.25**
- Scrape 300 reviews for one product: **$1.50**
- Scrape 1,000-item seller catalog: **$5.00**

At $5/1K you get buyer Q&A extraction, full variations, 50+ product specs, seller reputation, return policy, and shipping details in every record — features the cheaper scrapers ($1.20–$4.99) don't provide.

### 🔧 Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | enum | `search`, `product`, `reviews`, or `seller` |
| `country` | enum | `MX`, `AR`, `BR`, `EC`, `DO` |
| `searchQuery` | string | Keyword for search mode |
| `startUrls` | array | Search URLs (auto-detects country + mode) |
| `productUrls` | array | Product URLs or raw IDs (product/reviews modes) |
| `sellerUrls` | array | `_CustId_` URLs, tienda URLs, or numeric seller IDs |
| `maxItems` | integer | 0 = unlimited, default 50, ceiling 10,000 |
| `includeReviews` | boolean | Include top 5 reviews in product mode (default: true) |
| `includeQuestions` | boolean | Fetch buyer Q&A (default: true) |
| `includeVariations` | boolean | Include all product variants (default: true) |

#### Input example

```json
{
  "mode": "product",
  "country": "MX",
  "productUrls": [
    "https://www.mercadolibre.com.mx/apple-iphone-15-256-gb-negro/p/MLM27172669",
    "MLM27172669"
  ],
  "maxItems": 50,
  "includeReviews": true,
  "includeQuestions": true,
  "includeVariations": true
}
````

### 📊 Output example

```json
{
  "mode": "product",
  "country": "MX",
  "siteId": "MLM",
  "productId": "MLM27172669",
  "catalogProductId": "MLM27172669",
  "title": "Apple iPhone 15 (256 GB) - Negro",
  "url": "https://www.mercadolibre.com.mx/apple-iphone-15-256-gb-negro/p/MLM27172669",
  "images": ["https://http2.mlstatic.com/D_NQ_NP_2X_898880-..."],
  "brand": "Apple",
  "price": 13229,
  "originalPrice": 16016,
  "discountPercentage": 17,
  "currency": "MXN",
  "availability": "InStock",
  "condition": "NewCondition",
  "rating": 4.8,
  "ratingCount": 13049,
  "reviewCount": 4921,
  "installments": { "quantity": 15, "amount": 881.93, "total": 13228.95 },
  "freeShipping": true,
  "returnPolicy": {
    "country": "MX", "days": 30, "method": "ReturnByMail", "fees": "FreeReturn"
  },
  "sellerId": "2706404087",
  "sellerName": "vicer",
  "sellerReputation": "5_green",
  "sellerPowerStatus": "platinum",
  "breadcrumbs": ["Celulares y Telefonía", "Celulares y Smartphones"],
  "categoryId": "MLM1055",
  "domainId": "MLM-CELLPHONES",
  "attributes": [
    { "name": "Marca", "value": "Apple" },
    { "name": "Memoria interna", "value": "256 GB" },
    { "name": "Memoria RAM", "value": "6 GB" }
  ],
  "variations": [
    { "id": "MLM27172679", "attributes": { "color": "Amarillo" } },
    { "id": "MLM27172667", "attributes": { "color": "Azul" } },
    { "id": "MLM27172677", "attributes": { "internal_memory": "128 GB" } }
  ],
  "reviews": [
    { "rating": 5, "text": "Producto chino pero 100% original..." }
  ],
  "questions": [
    { "text": "Es version china o americana!?", "answer": "Hola, es la versión global" }
  ],
  "scrapedAt": "2026-04-21T07:30:05.595Z"
}
```

### ❓ Frequently asked questions

**Q: Does this scraper work for Mercado Livre Brasil?**
Yes. Brazil uses the domain `mercadolivre.com.br` (with a `v`) — the actor auto-detects BR URLs and returns BRL prices.

**Q: Can I scrape MercadoLibre without logging in or providing cookies?**
Yes. This actor uses pure HTTP scraping against MercadoLibre's public SSR pages. No authentication, no cookies, no browser automation.

**Q: Will I get blocked?**
MercadoLibre has no anti-bot protection as of this writing — plain datacenter IPs and a standard browser User-Agent are sufficient. The actor includes automatic proxy fallback (direct → datacenter → residential opt-in) in case MercadoLibre deploys anti-bot protection in the future, plus built-in detection for DataDome, PerimeterX, Cloudflare, Akamai, and AWS WAF.

**Q: How do I find a seller's ID to use seller mode?**
Open any of the seller's listings on MercadoLibre. Right-click → View Page Source → search for `_CustId_`. The numeric ID after that is the seller ID.

**Q: What happens when a product URL returns 404?**
The actor emits an `HTTP_404` event and automatically falls back to the alternate URL format (catalog `/p/` ↔ article `articulo.*`). If both 404, you get an empty record with a clear reason code.

**Q: Can I scrape Chile, Colombia, Peru, or Uruguay?**
Not yet. Those marketplaces serve a JavaScript-only SPA shell that HTTP scrapers cannot read. The actor returns a clear `INPUT_UNSUPPORTED_COUNTRY` error when those countries are requested.

**Q: What's in the run's key-value store?**
Every run persists a `last-run-report.json` with full event log, quality scores per record, proxy usage, and anti-bot hits. Useful for debugging your own runs.

**Q: How do I scrape products by keyword, not URL?**
Use search mode with `searchQuery`: `{"mode":"search","country":"MX","searchQuery":"iphone 15","maxItems":100}`.

**Q: Does it support scheduled runs?**
Yes. Schedule it daily in Apify Console to monitor price changes, inventory, or new listings.

### 🌐 Proxy requirements (important)

MercadoLibre serves a "suspicious traffic" page to requests coming from non-LATAM datacenter IPs. The actor detects this and returns `ANTIBOT_CAPTCHA_PAGE` cleanly instead of silently failing.

**How to avoid it:**

| Plan | Recommended setting |
|------|---------------------|
| **Apify FREE** | Runs may be blocked when Apify's US datacenter proxies are flagged. Expect low success rate. Consider upgrading. |
| **Apify Starter+ ($49/mo)** | Enable `useResidentialProxy: true` in input. Residential proxy resolves the blocking at ~$8/GB extra. Recommended. |
| **Local / your own IP** | Works cleanly if your IP is in LATAM or a major region not flagged by ML. |

If you see many `ANTIBOT_CAPTCHA_PAGE` events in `topErrorCodes`, toggle on `useResidentialProxy` — the actor escalates through direct → datacenter → residential automatically.

### 🛠️ Data source

All data is scraped from publicly accessible pages on MercadoLibre / Mercado Livre. No login, no cookies, no API keys required. Pure server-side-rendered HTML parsing using JSON-LD, Schema.org microdata, and embedded Redux state.

### 📝 Legal

This actor is not affiliated with, endorsed by, or sponsored by MercadoLibre S.R.L. or its subsidiaries. Only data from publicly accessible pages is extracted. Respect MercadoLibre's Terms of Service and use the data responsibly.

# Actor input Schema

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

What to scrape. 'search' returns product listings from a keyword or listing URL. 'product' returns full detail (price, specs, reviews, Q\&A, variations, seller). 'reviews' returns paginated reviews for one product. 'seller' returns all items + reputation for one seller.

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

MercadoLibre country marketplace. MX, AR, BR, EC, DO are fully supported. CL, CO, PE, UY are NOT supported — ML serves SPA shells on those domains; we return 0 items with an INPUT\_UNSUPPORTED\_COUNTRY error code.

## `searchQuery` (type: `string`):

Keyword to search. Only used in 'search' mode when startUrls is empty.

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

Direct URLs to scrape. Accepts: search URLs (listado.*/keyword), product URLs (both .../p/MLM… and articulo.*/MLM-…), reviews URLs, or seller URLs (perfil.\*/nickname or *CustId*…). Pasting full URLs is supported — country/mode will be auto-detected.

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

One or more MercadoLibre product URLs. Alias for startUrls in product/reviews modes.

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

Seller listing URLs — accepts *CustId* URLs (e.g., https://listado.mercadolibre.com.mx/\_CustId\_2706404087), tienda URLs (e.g., https://www.mercadolibre.com.mx/tienda/apple), or a bare numeric seller ID (e.g., 2706404087). Find the seller ID by opening any of their listings and looking at the URL after *CustId*. Plain nicknames are not supported — they return inconsistent data.

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

Maximum items to return. 0 = no limit. Search: products; Product: PDPs; Reviews: reviews per product; Seller: items per seller.

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

In 'product' mode, include the top 5 reviews from JSON-LD. Full paginated reviews require 'reviews' mode.

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

In 'product' mode, include buyer questions + seller answers from the PDP.

## `includeVariations` (type: `boolean`):

In 'product' mode, include all product variations (color/size/storage).

## `useResidentialProxy` (type: `boolean`):

Enable residential proxy fallback when MercadoLibre serves a 'suspicious traffic' page to our datacenter IP. Recommended on Apify Starter+ plans if you run from non-LATAM regions. Costs ~$8/GB residential traffic on top of actor pricing.

## Actor input object example

```json
{
  "mode": "search",
  "country": "MX",
  "searchQuery": "iphone",
  "startUrls": [],
  "productUrls": [],
  "sellerUrls": [],
  "maxItems": 50,
  "includeReviews": true,
  "includeQuestions": true,
  "includeVariations": true,
  "useResidentialProxy": false
}
```

# Actor output Schema

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

View the scraped items in the dataset.

# 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 = {
    "searchQuery": "iphone",
    "startUrls": [],
    "productUrls": [],
    "sellerUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sourabhbgp/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 = {
    "searchQuery": "iphone",
    "startUrls": [],
    "productUrls": [],
    "sellerUrls": [],
}

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MercadoLibre Scraper — Products, Reviews, Q&A",
        "description": "Scrape MercadoLibre / Mercado Livre products, reviews, buyer Q&A, and seller catalogs across Mexico, Argentina, Brazil, Ecuador, Dominican Republic. HTTP-only, no login. 4 modes: search, product, reviews, seller.",
        "version": "0.0",
        "x-build-id": "Z7ICqNZZiOxKVv9OV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sourabhbgp~mercadolibre-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sourabhbgp-mercadolibre-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sourabhbgp~mercadolibre-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sourabhbgp-mercadolibre-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sourabhbgp~mercadolibre-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sourabhbgp-mercadolibre-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "product",
                            "reviews",
                            "seller"
                        ],
                        "type": "string",
                        "description": "What to scrape. 'search' returns product listings from a keyword or listing URL. 'product' returns full detail (price, specs, reviews, Q&A, variations, seller). 'reviews' returns paginated reviews for one product. 'seller' returns all items + reputation for one seller.",
                        "default": "search"
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "MX",
                            "AR",
                            "BR",
                            "EC",
                            "DO",
                            "CL",
                            "CO",
                            "PE",
                            "UY"
                        ],
                        "type": "string",
                        "description": "MercadoLibre country marketplace. MX, AR, BR, EC, DO are fully supported. CL, CO, PE, UY are NOT supported — ML serves SPA shells on those domains; we return 0 items with an INPUT_UNSUPPORTED_COUNTRY error code.",
                        "default": "MX"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword to search. Only used in 'search' mode when startUrls is empty."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Direct URLs to scrape. Accepts: search URLs (listado.*/keyword), product URLs (both .../p/MLM… and articulo.*/MLM-…), reviews URLs, or seller URLs (perfil.*/nickname or _CustId_…). Pasting full URLs is supported — country/mode will be auto-detected.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "productUrls": {
                        "title": "Product URLs (product / reviews modes)",
                        "type": "array",
                        "description": "One or more MercadoLibre product URLs. Alias for startUrls in product/reviews modes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sellerUrls": {
                        "title": "Seller URLs (seller mode)",
                        "type": "array",
                        "description": "Seller listing URLs — accepts _CustId_ URLs (e.g., https://listado.mercadolibre.com.mx/_CustId_2706404087), tienda URLs (e.g., https://www.mercadolibre.com.mx/tienda/apple), or a bare numeric seller ID (e.g., 2706404087). Find the seller ID by opening any of their listings and looking at the URL after _CustId_. Plain nicknames are not supported — they return inconsistent data.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum items to return. 0 = no limit. Search: products; Product: PDPs; Reviews: reviews per product; Seller: items per seller.",
                        "default": 50
                    },
                    "includeReviews": {
                        "title": "Include Inline Reviews (product mode)",
                        "type": "boolean",
                        "description": "In 'product' mode, include the top 5 reviews from JSON-LD. Full paginated reviews require 'reviews' mode.",
                        "default": true
                    },
                    "includeQuestions": {
                        "title": "Include Q&A (product mode)",
                        "type": "boolean",
                        "description": "In 'product' mode, include buyer questions + seller answers from the PDP.",
                        "default": true
                    },
                    "includeVariations": {
                        "title": "Include Variations (product mode)",
                        "type": "boolean",
                        "description": "In 'product' mode, include all product variations (color/size/storage).",
                        "default": true
                    },
                    "useResidentialProxy": {
                        "title": "Use Residential Proxy (paid plans)",
                        "type": "boolean",
                        "description": "Enable residential proxy fallback when MercadoLibre serves a 'suspicious traffic' page to our datacenter IP. Recommended on Apify Starter+ plans if you run from non-LATAM regions. Costs ~$8/GB residential traffic on top of actor pricing.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
