# Unblocker MercadoLibre Scraper - Products, Prices, Sellers (`scrapers_lat/unblocker-mercadolibre-scraper`) Actor

Unblocker MercadoLibre scraper (LATAM). Get the best-seller ranking by category with rank, price, rating and units sold, plus full product detail: attributes, variations, stock, seller reputation, reviews and images. Bypasses MercadoLibre anti-bot. Export JSON, CSV, Excel.

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

## Pricing

from $26.15 / 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.
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?

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

[![MercadoLibre Scraper - Products, Prices, Sellers (LATAM)](https://scrapers.lat/banners/mercadolibre-scraper.png)](https://console.apify.com/actors/sh0sjNMKZyhplAsQW/input)

## Unblocker MercadoLibre Scraper - Products, Prices and Sellers (LATAM)

Scrape MercadoLibre (Mercado Libre) product listings, prices and sellers across 18 Latin American country sites. This MercadoLibre scraper turns any keyword, category, seller store or search URL into clean, structured product data for price monitoring, competitor analysis, market research and catalog enrichment. Use it as a no-code MercadoLibre API alternative that exports to JSON, CSV or Excel.

### Best-seller ranking mode (Argentina)

Enable **Best-seller ranking mode** to pull MercadoLibre Argentina's official "más vendidos" ranking per category, with each product's rank position. Perfect for product research and finding winning products: run it daily to track the top sellers, price moves and rank changes per category.

- Enable `bestSellers` and (optionally) list `bestSellerCategories` by name (`Celulares`, `Electrodomesticos`, `Deportes`) or category id (`MLA1051`). Leave empty to cover all main categories.
- Each ranked product returns: rank position, title, product URL, product id, price, previous price, discount, currency, free shipping, average rating and units sold ("+X vendidos").
- Turn on **Fetch Product Details** to additionally get, per product: full technical attributes, variations, available stock, exact units sold, review count, seller name and seller reputation, condition, description and all images.

Here is one real result, with every field the actor returns for a search listing:

```json
{
  "imageUrl": "https://http2.mlstatic.com/D_NQ_NP_2X_915570-MLA115292753441_072026-F.webp",
  "title": "Notebook Lenovo Ideapad Slim 3 Ryzen 5 40 8gb 256gb Ssd Pantalla 15,6 Full Hd Windows 11",
  "price": 899999,
  "currency": "ARS",
  "originalPrice": null,
  "discountPercentage": null,
  "sellerName": "EW Electro World",
  "freeShipping": true,
  "category": "MLA-NOTEBOOKS",
  "listingId": "MLA1932840933",
  "url": "https://articulo.mercadolibre.com.ar/MLA-1932840933",
  "catalogProductId": "MLA75901817",
  "categoryId": "MLA1652",
  "domainId": "MLA-NOTEBOOKS",
  "position": -1,
  "installments": {
    "quantity": 6,
    "amount": 202484,
    "currency": "ARS",
    "interestFree": false,
    "text": "6 cuotas de 202484"
  },
  "promotions": [
    { "type": "coupon", "text": "Cupon OFF" }
  ],
  "dealType": "commercial_event",
  "dealEndsAt": null,
  "condition": null,
  "ratingAverage": null,
  "unitsSold": 25,
  "officialStore": true,
  "shippingText": null,
  "fulfillment": false,
  "fastShipping": false,
  "internationalItem": false,
  "originCountry": null,
  "observedAt": "2026-08-10T14:03:44.921Z",
  "error": null
}
```

The most complete MercadoLibre scraper available. It returns every field the search card exposes for each listing (price, currency, installments, promotions, sponsored flag, seller and shipping flags), adds catalog and category identifiers, and with detail scraping on it opens each product page for attributes, full specs table, description, the full image gallery, seller identity and reputation, stock and reviews across 18 LATAM country sites. One run can fan out across many keywords, and you can filter by keyword, category, seller, price, condition, discount, free shipping, official store and sort. See [how we compare](#how-we-compare).

**📥 [Input](https://apify.com/scrapers_lat/mercadolibre-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/mercadolibre-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/mercadolibre-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/mercadolibre-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-18%20LATAM%20sites-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What this MercadoLibre scraper does](#what-this-mercadolibre-scraper-does)
- [Use cases](#use-cases)
- [How we compare](#how-we-compare)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What this MercadoLibre scraper does

The actor loads a MercadoLibre search or listing results page (from a `startUrl`, or built from a `searchTerm` plus `country`), paginates through the matching products, and writes one normalized record per listing to the run's dataset. Each record carries title, price, currency, original price and discount, installments, promotions, seller name, shipping and fulfillment flags, and catalog and category identifiers. It works as a MercadoLibre price scraper, seller catalog scraper and product data API in one.

Coverage spans 18 MercadoLibre and Mercado Livre country sites: Argentina, Mexico, Brazil, Colombia, Chile, Peru, Uruguay, Venezuela, Bolivia, Paraguay, Ecuador, Costa Rica, Panama, Dominican Republic, Guatemala, Honduras, Nicaragua and El Salvador. Brazil (mercadolivre.com.br) is in Portuguese and the other 17 sites are in Spanish; the actor handles both.

With `withDetails` on (the default), the actor opens each product page to add attributes, description, the full image gallery, seller identity, available stock, review counts, warranty, logistics and catalog paths. Missing source values are returned as `null`, never invented.

### Use cases

- **Price monitoring and repricing.** Track MercadoLibre prices, discounts and installments over time by keyword, category or seller, and feed a repricing or dynamic-pricing engine.
- **Competitor and seller analysis.** Pull a competitor's full seller catalog by `sellerId`, compare assortment, official-store status and reputation across markets.
- **Market and product research.** Discover top listings, best sellers and demand signals (units sold, reviews) per country for MercadoLibre Mexico, Argentina, Brazil and beyond.
- **Catalog and MAP enrichment.** Enrich your own product catalog with specs, brand, model, images, category paths and catalog ids, or run minimum-advertised-price (MAP) checks.
- **Deals and promotion tracking.** Monitor coupons, lightning deals and commercial events to react to promotions fast.
- **E-commerce data feeds.** Export MercadoLibre product data to JSON, CSV or Excel, or pull it through the Apify API on a schedule.

### How we compare

We benchmarked this actor against the most used direct MercadoLibre scrapers on the Apify Store, using each competitor's own public actor page. We do not try to be the cheapest. We aim to be the most complete and the widest in country coverage, with the richest per-record data. Figures reflect each competitor's public page at the time of writing and can change.

| Scraper | ML countries | Targeting filters | Output fields | Multi-keyword run | Seller filter | Full specs + seller reputation | Pricing model |
|---|---|---|---|---|---|---|---|
| **scrapers.lat (this actor)** | **18** | **13** | **60+** | **Yes** | **Yes** | **Yes** | Pay per result |
| karamelo | 18 | ~5 | ~25 | No | No | Reviews only, no specs table | Pay per result (lower unit price) |
| maximedupre | 17 | ~11 | ~24 | Yes | No | No specs table | Pay per result (lower unit price) |
| devcake | 17 | 3 | ~20 | Yes | No | Detail enrich, no specs table | Pay per result (lower unit price) |
| gio21 | 17 | 5 | ~20 | No | No | No specs table | Pay per result (lower unit price) |
| ecomscrape | 18 | ~8 | ~18 | Yes | No | Specs in a separate actor | Monthly rental plus usage |
| trudax | ~18 | ~7 | ~11 | Yes | No | Description and images only | Monthly rental plus usage |
| crawlerbros | 1 (MX only) | ~5 | ~17 | No | No | Brand only | Pay per result (lower unit price) |

Where this actor is genuinely ahead:

- **Country coverage.** 18 MercadoLibre country sites, matching the widest competitor (karamelo, ecomscrape) and more than most (17 or, for crawlerbros, Mexico only).
- **Filters.** The only actor here with a seller or store filter, plus keyword, multiple keywords in one run, direct URLs, category, condition, price range, minimum discount, free shipping, official store, Mercado Envios FULL, and sort (relevance, price, newest).
- **Output depth.** 60+ fields per record: full attribute and spec table, category breadcrumb path, seller reputation level and power seller status, review split (with comment and with photos), logistics type and shipping mode, extended warranty and trade-in flags, catalog and variation ids, sponsored flag, currency symbol, installments and promotions. Most competitors return a flatter set of roughly 15 to 25 fields.
- **Architecture and speed.** Listings are parsed straight from the page's embedded JSON, result pages are fetched concurrently, and detail pages are fetched concurrently too. Turn detail off for a fast listing-only pass, or on for full enrichment.
- **Billing safety.** Pay per result with no monthly rental, no charge on failure, a run spend cap, and an advanced bring-your-own-proxy and session-cookie path for heavy runs.

Where a competitor wins, honestly:

- **Price per record.** karamelo, devcake, gio21, maximedupre and crawlerbros bill less per product than this actor. We price higher because each record carries far more validated fields and because runs handle proxy and anti-bot internally with no monthly subscription. If you only need a title and price at the lowest unit cost, a cheaper actor may fit better. If you need complete, analysis-ready records with seller, catalog and specs depth, this actor returns more per row.
- **Rental models.** trudax and ecomscrape use a flat monthly rental that can be cheaper at very high volume for a small field set. This actor stays pay per result with no monthly commitment.

### Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 notebook listings from MercadoLibre Argentina with product detail enrichment.

```json
{
  "searchTerms": ["notebook"],
  "country": "ar",
  "withDetails": true,
  "maxListings": 10
}
```

Run several searches in one go, and apply filters:

```json
{
  "searchTerms": ["notebook", "iphone 15"],
  "country": "mx",
  "condition": "new",
  "freeShipping": true,
  "sort": "price_asc",
  "maxListings": 100
}
```

You can instead pass one or more full search, category, or seller-store URLs, which keep any filters encoded in them:

```json
{
  "startUrls": ["https://listado.mercadolibre.com.mx/iphone-15"],
  "maxListings": 20
}
```

### Input reference

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `searchTerms` | string\[] | no | `["notebook"]` | One or more keywords. Each term runs a full search on the selected `country`, so one run can cover many searches. Every record is tagged with the `searchQuery` that produced it. |
| `startUrls` | string\[] | no | (empty) | One or more MercadoLibre search, category, or seller-store listing URLs, for example `https://listado.mercadolibre.com.ar/notebook`. Filters encoded in the URL are respected. Runs in addition to `searchTerms`. |
| `country` | enum | no | `ar` | MercadoLibre country site to search: `ar`, `mx`, `br`, `co`, `cl`, `pe`, `uy`, `ve`, `bo`, `py`, `ec`, `cr`, `pa`, `do`, `gt`, `hn`, `ni`, `sv`. |
| `sellerId` | string | no | (any) | Restrict results to a single seller by numeric seller id. Works on its own (that seller's catalog) or combined with a search term. |
| `category` | string | no | (any) | Narrow a search term to a category id (for example `MLA1652`) or slug. |
| `condition` | enum | no | (any) | `new`, `used`, or `refurbished`. Applied when using a search term. |
| `priceMin` | integer | no | (any) | Only items priced at or above this value (local currency). Applied with a search term. |
| `priceMax` | integer | no | (any) | Only items priced at or below this value (local currency). Applied with a search term. |
| `minDiscount` | integer | no | (any) | Only items with at least this discount percentage. Applied with a search term. |
| `freeShipping` | boolean | no | `false` | Only items that ship for free. Applied with a search term. |
| `fullFulfillment` | boolean | no | `false` | Only items fulfilled by Mercado Envios FULL. Applied with a search term. |
| `officialStore` | boolean | no | `false` | Only items sold by official brand stores. Applied with a search term. |
| `sort` | enum | no | `relevance` | Result ordering: `relevance`, `price_asc`, `price_desc`, `newest`. Applied with a search term. |
| `withDetails` | boolean | no | `true` | When on, each product page is opened to add attributes, description, full image gallery, seller identity, stock, reviews and logistics. Slower but richer. |
| `maxListings` | integer | no | `10` | Maximum listings to collect across all searches in the run. |
| `searchTerm` | string | no | (empty) | Single-keyword alias of `searchTerms`, kept for backward compatibility. |
| `startUrl` | string | no | (empty) | Single-URL alias of `startUrls`, kept for backward compatibility. |
| `proxyUrl` | string (secret) | no | (built-in proxy) | Optional. Route through your own residential or mobile proxy (`http://user:pass@host:port`). Strongly recommended for large or reliable runs; MercadoLibre heavily rate-limits shared datacenter IPs. |
| `proxySessionCookie` | string (secret) | no | (none) | Optional. A signed-in MercadoLibre `Cookie` header from your own browser session, reused for a higher success rate. Use only cookies you are authorized to use. |

Filters passed via `searchTerm` are applied by the actor; a `startUrl` keeps whatever filters are already encoded in it.

### Output reference

One dataset item per listing. Types: `string`, `integer`, `number`, `boolean`, `string[]`, `object`, or `null` when the source value is absent. Fields marked (detail) are populated only when `withDetails` is on.

| Field | Type | Description |
|---|---|---|
| `imageUrl` | string | Main listing image. |
| `title` | string | Product title. |
| `price` | integer | Current price in the site's local currency. |
| `currency` | string | Currency code, for example `ARS`, `MXN`, `BRL`. |
| `currencySymbol` | string | Local currency symbol, for example `$`, `R$`, `S/`. |
| `originalPrice` | integer | List price before discount, or `null`. |
| `discountPercentage` | integer | Discount percentage, or `null`. |
| `sellerName` | string | Seller or store name shown on the card. |
| `freeShipping` | boolean | Whether the item ships for free. |
| `category` | string | Category or domain label, for example `MLA-NOTEBOOKS`. |
| `listingId` | string | MercadoLibre item id, for example `MLA1932840933`. |
| `url` | string | Direct link to the listing. |
| `catalogProductId` | string | Catalog product id when the item maps to a catalog entry. |
| `categoryId` | string | Numeric category id, for example `MLA1652`. |
| `domainId` | string | Domain id, for example `MLA-NOTEBOOKS`. |
| `position` | integer | Position of the item in the results, `-1` when not reported. |
| `pageNumber` | integer | Result page the item was found on (1-based). |
| `totalResults` | integer | Total results MercadoLibre reported for the search, or `null`. |
| `searchQuery` | string | The keyword that produced this record, or `null` for URL-based jobs. |
| `countryCode` | string | ISO country of the site the record came from, for example `AR`, `MX`. |
| `isSponsored` | boolean | Whether the listing is a sponsored or promoted ad card. |
| `installments` | object | Installment plan: `quantity`, `amount`, `currency`, `interestFree`, `text`. |
| `promotions` | object\[] | Promotions on the card, each with `type` and `text`. |
| `dealType` | string | Deal or highlight type, for example `commercial_event`, or `null`. |
| `dealEndsAt` | string | Countdown end time for lightning deals, or `null`. |
| `condition` | string | Item condition (`new`, `used`), or `null` when not on the card. |
| `ratingAverage` | number | Average rating, or `null`. |
| `unitsSold` | integer | Units sold, when reported. |
| `officialStore` | boolean | Whether the seller is an official brand store. |
| `shippingText` | string | Free-text shipping label, or `null`. |
| `fulfillment` | boolean | Whether the item ships via Mercado Envios FULL. |
| `fastShipping` | boolean | Whether fast shipping is advertised. |
| `internationalItem` | boolean | Whether the item ships internationally. |
| `originCountry` | string | Origin country when flagged as an international item. |
| `catalogUrl` | string | Catalog page URL (detail). |
| `attributes` | object\[] | Product spec attributes, name/value pairs (detail). |
| `description` | string | Full product description (detail). |
| `images` | string\[] | Full image gallery URLs (detail). |
| `brand` | string | Brand parsed from attributes (detail). |
| `model` | string | Model parsed from attributes (detail). |
| `warranty` | string | Warranty terms parsed from attributes (detail). |
| `seller` | object | Seller identity: name, id, power seller status (detail). |
| `availableStock` | integer | Available stock reported on the product page (detail). |
| `soldQuantity` | integer | Total sold quantity from the product page (detail). |
| `reviewsCount` | integer | Number of reviews (detail). |
| `reviewsWithComment` | integer | Reviews that include a written comment (detail). |
| `reviewsWithPhotos` | integer | Reviews that include photos (detail). |
| `variants` | object | Variant pickers (color, size, and similar) (detail). |
| `categoryPath` | string\[] | Category id path (detail). |
| `categoryPathNames` | string\[] | Human-readable category path (detail). |
| `logisticType` | string | Logistics type (detail). |
| `shippingMode` | string | Shipping mode (detail). |
| `tags` | string\[] | Item tags reported by the product page (detail). |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |
| `error` | string | `null` on success. On a failed run, a single item with a populated `error` field is written instead. |

### Example output record

Real record from a live run (input `{"startUrl":"https://listado.mercadolibre.com.ar/notebook","withDetails":false,"maxListings":10}`). Detail fields above appear when `withDetails` is on.

```json
{
  "imageUrl": "https://http2.mlstatic.com/D_NQ_NP_2X_915570-MLA115292753441_072026-F.webp",
  "title": "Notebook Lenovo Ideapad Slim 3 Ryzen 5 40 8gb 256gb Ssd Pantalla 15,6 Full Hd Windows 11",
  "price": 899999,
  "currency": "ARS",
  "originalPrice": null,
  "discountPercentage": null,
  "sellerName": "EW Electro World",
  "freeShipping": true,
  "category": "MLA-NOTEBOOKS",
  "listingId": "MLA1932840933",
  "url": "https://articulo.mercadolibre.com.ar/MLA-1932840933",
  "catalogProductId": "MLA75901817",
  "categoryId": "MLA1652",
  "domainId": "MLA-NOTEBOOKS",
  "position": -1,
  "installments": { "quantity": 6, "amount": 202484, "currency": "ARS", "interestFree": false, "text": "6 cuotas de 202484" },
  "promotions": [ { "type": "coupon", "text": "Cupon OFF" } ],
  "dealType": "commercial_event",
  "dealEndsAt": null,
  "condition": null,
  "ratingAverage": null,
  "unitsSold": 25,
  "officialStore": true,
  "fulfillment": false,
  "fastShipping": false,
  "internationalItem": false,
  "observedAt": "2026-08-10T14:03:44.921Z",
  "error": null
}
```

### Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~mercadolibre-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"searchTerm":"notebook","country":"ar","withDetails":true,"maxListings":25}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~mercadolibre-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://listado.mercadolibre.com.mx/iphone-15","maxListings":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/mercadolibre-scraper \
  --input '{"searchTerm":"drone","country":"mx","freeShipping":true,"maxListings":50}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. Use `offset` and `limit` to page through large result sets. `clean=true` drops empty and internal fields.

### Billing and limits

This actor uses pay-per-event billing. Every event is listed below. See the [pricing tab](https://apify.com/scrapers_lat/mercadolibre-scraper/pricing) for the live prices.

| Event | When it is charged |
| --- | --- |
| `apify-actor-start` | Once per run, for every user, when the run starts. Covers the fixed compute and residential proxy setup cost of a run. |
| `result` | Once per product record written to the dataset (the primary event). |
| `details` | Once per product when the product page is fetched and detail enrichment is added (attributes, description, image gallery, seller reputation, stock, sold quantity, variants, catalog ids). Charged only when detail data is actually obtained. |
| `ai_summary` | Optional add-on. Once per product when `aiSummary` is enabled and the AI produces a usable summary and selling points. Paid plans only. Charged only on usable output. |

- **No charge on failure.** If a run is blocked or errors, the actor writes a single item with a populated `error` field and does not charge for it (only `apify-actor-start` applies). Empty runs incur only the per-run start fee.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results and add-ons.
- **Free Apify plans** are capped at 5 products per run, listing-only (no `details` or `ai_summary` add-ons). Upgrade to a paid plan for full product details, the AI summary add-on, and higher `maxListings`.
- **Rate limiting and anti-bot.** MercadoLibre heavily rate-limits shared datacenter IPs and can serve a suspicious-traffic or account-verification wall. For large or reliable runs, supply your own clean residential or mobile proxy via `proxyUrl`, and optionally a signed-in session cookie via `proxySessionCookie`. Blocked runs are never charged.

### FAQ and troubleshooting

**A run returned only an error record, or no products. Why?**
MercadoLibre served a suspicious-traffic or account-verification wall to the IP used. This is an IP-reputation and anti-bot block, not a bug in the actor. Supply a clean residential or mobile proxy via `proxyUrl` (and optionally a signed-in `proxySessionCookie`) and rerun. Blocked runs are not charged. On shared datacenter IPs this wall is common, so a bring-your-own clean proxy or session cookie is the reliable path for production runs today.

**How do I get product specs, description and the full image gallery?**
Leave `withDetails` on (the default). The actor then opens each product page and adds `attributes`, `description`, `images`, `seller`, stock and review fields.

**Should I use `startUrls` or `searchTerms`?**
Use `startUrls` to reuse searches, category pages, or seller-store pages you already built on the site, filters included. Use `searchTerms` + `country` for keyword searches (one or many in a single run), and apply the filter inputs (`condition`, `priceMin`, `freeShipping`, `sellerId`, and so on). The singular `startUrl` and `searchTerm` still work as aliases.

**Can I scrape a single seller's whole catalog?**
Yes. Pass a numeric `sellerId`, or paste that seller's store URL into `startUrls`. You can combine `sellerId` with a search term to search within that seller's catalog.

**Which countries are supported?**
All 18 MercadoLibre and Mercado Livre country sites, selected via `country` (or implied by the domain of your `startUrl`): Argentina, Mexico, Brazil, Colombia, Chile, Peru, Uruguay, Venezuela, Bolivia, Paraguay, Ecuador, Costa Rica, Panama, Dominican Republic, Guatemala, Honduras, Nicaragua and El Salvador.

**Why is `discountPercentage` null?**
The listing has no active discount, or the card did not expose an original price. Missing values are returned as `null`, never invented.

**Is this an official MercadoLibre tool or API?**
No. This actor is independent and has no affiliation with MercadoLibre. It reads only publicly listed data and does not use the official MercadoLibre API. Use it in accordance with MercadoLibre's terms.

***

## Scraper de Mercado Libre - Productos, Precios y Vendedores (LATAM)

Extrae publicaciones, precios y vendedores de Mercado Libre (MercadoLibre) en 18 sitios de paises de America Latina. Este scraper de Mercado Libre convierte cualquier palabra clave, categoria, tienda de vendedor o URL de busqueda en datos de productos limpios y estructurados para monitoreo de precios, analisis de competencia, investigacion de mercado y enriquecimiento de catalogo. Uselo como una alternativa sin codigo a la API de Mercado Libre, con exportacion a JSON, CSV o Excel.

Aqui tiene un resultado real, con todos los campos que el actor devuelve para una publicacion de busqueda:

```json
{
  "imageUrl": "https://http2.mlstatic.com/D_NQ_NP_2X_915570-MLA115292753441_072026-F.webp",
  "title": "Notebook Lenovo Ideapad Slim 3 Ryzen 5 40 8gb 256gb Ssd Pantalla 15,6 Full Hd Windows 11",
  "price": 899999,
  "currency": "ARS",
  "originalPrice": null,
  "discountPercentage": null,
  "sellerName": "EW Electro World",
  "freeShipping": true,
  "category": "MLA-NOTEBOOKS",
  "listingId": "MLA1932840933",
  "url": "https://articulo.mercadolibre.com.ar/MLA-1932840933",
  "catalogProductId": "MLA75901817",
  "categoryId": "MLA1652",
  "domainId": "MLA-NOTEBOOKS",
  "position": -1,
  "installments": {
    "quantity": 6,
    "amount": 202484,
    "currency": "ARS",
    "interestFree": false,
    "text": "6 cuotas de 202484"
  },
  "promotions": [
    { "type": "coupon", "text": "Cupon OFF" }
  ],
  "dealType": "commercial_event",
  "dealEndsAt": null,
  "condition": null,
  "ratingAverage": null,
  "unitsSold": 25,
  "officialStore": true,
  "shippingText": null,
  "fulfillment": false,
  "fastShipping": false,
  "internationalItem": false,
  "originCountry": null,
  "observedAt": "2026-08-10T14:03:44.921Z",
  "error": null
}
```

El scraper de Mercado Libre mas completo disponible. Devuelve todos los campos que la tarjeta de busqueda muestra en cada publicacion (precio, moneda, cuotas, promociones, indicador de publicidad, datos del vendedor y del envio), agrega identificadores de catalogo y de categoria y, con el scraping de detalle activado, abre cada pagina de producto para obtener atributos, la ficha tecnica completa, la descripcion, la galeria de imagenes completa, la identidad y reputacion del vendedor, el stock y las opiniones en 18 sitios de paises de LATAM. Una sola ejecucion puede recorrer muchas palabras clave, y usted puede filtrar por palabra clave, categoria, vendedor, precio, condicion, descuento, envio gratis, tienda oficial y orden. Vea [como nos comparamos](#como-nos-comparamos).

**📥 [Entrada](https://apify.com/scrapers_lat/mercadolibre-scraper/input-schema) · 📤 [Salida](https://apify.com/scrapers_lat/mercadolibre-scraper/output-schema) · 💰 [Precios](https://apify.com/scrapers_lat/mercadolibre-scraper/pricing) · ▶️ [Ejemplos](https://apify.com/scrapers_lat/mercadolibre-scraper/examples)**

![Apify](https://img.shields.io/badge/Plataforma-Apify-1CE1CE?logo=apify\&logoColor=white)
![Cobertura](https://img.shields.io/badge/Cobertura-18%20sitios%20LATAM-blue)
![Salida](https://img.shields.io/badge/Salida-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Facturacion](https://img.shields.io/badge/Facturacion-Pago%20por%20resultado-brightgreen)

### Tabla de contenidos

- [Que hace este scraper de Mercado Libre](#que-hace-este-scraper-de-mercado-libre)
- [Casos de uso](#casos-de-uso)
- [Como nos comparamos](#como-nos-comparamos)
- [Inicio rapido](#inicio-rapido)
- [Referencia de entrada](#referencia-de-entrada)
- [Referencia de salida](#referencia-de-salida)
- [Ejemplo de registro de salida](#ejemplo-de-registro-de-salida)
- [Ejecutar via API y CLI](#ejecutar-via-api-y-cli)
- [Obtener resultados](#obtener-resultados)
- [Facturacion y limites](#facturacion-y-limites)
- [Preguntas frecuentes y solucion de problemas](#preguntas-frecuentes-y-solucion-de-problemas)

### Que hace este scraper de Mercado Libre

El actor carga una pagina de resultados de busqueda o de listado de Mercado Libre (desde un `startUrl`, o construida a partir de un `searchTerm` mas un `country`), recorre las paginas de los productos que coinciden y escribe un registro normalizado por publicacion en el dataset de la ejecucion. Cada registro incluye titulo, precio, moneda, precio original y descuento, cuotas, promociones, nombre del vendedor, indicadores de envio y de logistica, e identificadores de catalogo y de categoria. Funciona a la vez como scraper de precios de Mercado Libre, scraper de catalogo de vendedores y API de datos de productos.

La cobertura abarca 18 sitios de paises de Mercado Libre y Mercado Livre: Argentina, Mexico, Brasil, Colombia, Chile, Peru, Uruguay, Venezuela, Bolivia, Paraguay, Ecuador, Costa Rica, Panama, Republica Dominicana, Guatemala, Honduras, Nicaragua y El Salvador. El sitio de Brasil (mercadolivre.com.br) esta en portugues y los otros 17 sitios estan en espanol; el actor maneja ambos idiomas.

Con `withDetails` activado (el valor por defecto), el actor abre cada pagina de producto para agregar atributos, descripcion, la galeria de imagenes completa, la identidad del vendedor, el stock disponible, el numero de opiniones, la garantia, la logistica y las rutas de catalogo. Los valores ausentes en la fuente se devuelven como `null`, nunca se inventan.

### Casos de uso

- **Monitoreo de precios y repricing.** Siga los precios, descuentos y cuotas de Mercado Libre en el tiempo por palabra clave, categoria o vendedor, y alimente un motor de repricing o de precios dinamicos.
- **Analisis de competencia y de vendedores.** Obtenga el catalogo completo de un vendedor competidor con `sellerId`, y compare surtido, condicion de tienda oficial y reputacion entre mercados.
- **Investigacion de mercado y de productos.** Descubra las publicaciones destacadas, los mas vendidos y las senales de demanda (unidades vendidas, opiniones) por pais en Mercado Libre Mexico, Argentina, Brasil y mas.
- **Enriquecimiento de catalogo y control de precios (MAP).** Enriquezca su propio catalogo con fichas tecnicas, marca, modelo, imagenes, rutas de categoria e identificadores de catalogo, o ejecute controles de precio minimo anunciado (MAP).
- **Seguimiento de ofertas y promociones.** Monitoree cupones, ofertas relampago y eventos comerciales para reaccionar rapido a las promociones.
- **Feeds de datos para e-commerce.** Exporte los datos de productos de Mercado Libre a JSON, CSV o Excel, o obtengalos a traves de la API de Apify de forma programada.

### Como nos comparamos

Comparamos este actor con los scrapers de Mercado Libre directos mas usados de la Apify Store, usando la propia pagina publica de cada competidor. No buscamos ser el mas barato. Buscamos ser el mas completo y el de mayor cobertura de paises, con los datos mas ricos por registro. Las cifras reflejan la pagina publica de cada competidor al momento de escribir y pueden cambiar.

| Scraper | Paises ML | Filtros de segmentacion | Campos de salida | Multiples palabras clave | Filtro por vendedor | Ficha tecnica completa + reputacion | Modelo de precios |
|---|---|---|---|---|---|---|---|
| **scrapers.lat (este actor)** | **18** | **13** | **60+** | **Si** | **Si** | **Si** | Pago por resultado |
| karamelo | 18 | ~5 | ~25 | No | No | Solo opiniones, sin ficha tecnica | Pago por resultado (precio unitario menor) |
| maximedupre | 17 | ~11 | ~24 | Si | No | Sin ficha tecnica | Pago por resultado (precio unitario menor) |
| devcake | 17 | 3 | ~20 | Si | No | Enriquece detalle, sin ficha tecnica | Pago por resultado (precio unitario menor) |
| gio21 | 17 | 5 | ~20 | No | No | Sin ficha tecnica | Pago por resultado (precio unitario menor) |
| ecomscrape | 18 | ~8 | ~18 | Si | No | Ficha tecnica en un actor aparte | Renta mensual mas uso |
| trudax | ~18 | ~7 | ~11 | Si | No | Solo descripcion e imagenes | Renta mensual mas uso |
| crawlerbros | 1 (solo MX) | ~5 | ~17 | No | No | Solo marca | Pago por resultado (precio unitario menor) |

Donde este actor esta genuinamente por delante:

- **Cobertura de paises.** 18 sitios de paises de Mercado Libre, igualando al competidor mas amplio (karamelo, ecomscrape) y superando a la mayoria (17 o, para crawlerbros, solo Mexico).
- **Filtros.** El unico actor aqui con filtro por vendedor o tienda, ademas de palabra clave, varias palabras clave en una sola ejecucion, URLs directas, categoria, condicion, rango de precios, descuento minimo, envio gratis, tienda oficial, Mercado Envios FULL y orden (relevancia, precio, mas nuevos).
- **Profundidad de salida.** Mas de 60 campos por registro: ficha tecnica y tabla de atributos completa, ruta de categoria (breadcrumb), nivel de reputacion del vendedor y estado de MercadoLider, desglose de opiniones (con comentario y con fotos), tipo de logistica y modo de envio, garantia extendida e indicadores de entrega usado, identificadores de catalogo y de variantes, indicador de publicidad, simbolo de moneda, cuotas y promociones. La mayoria de los competidores devuelven un conjunto mas plano de entre 15 y 25 campos.
- **Arquitectura y velocidad.** Las publicaciones se leen directamente del JSON incrustado en la pagina, las paginas de resultados se obtienen en paralelo y las paginas de detalle tambien. Desactive el detalle para una pasada rapida solo de listados, o activelo para el enriquecimiento completo.
- **Seguridad de facturacion.** Pago por resultado sin renta mensual, sin cargo en caso de fallo, un tope de gasto por ejecucion, y una ruta avanzada para usar su propio proxy y cookie de sesion en ejecuciones grandes.

Donde un competidor gana, con honestidad:

- **Precio por registro.** karamelo, devcake, gio21, maximedupre y crawlerbros cobran menos por producto que este actor. Cobramos mas porque cada registro incluye muchos mas campos validados y porque las ejecuciones manejan el proxy y el anti-bot internamente sin suscripcion mensual. Si solo necesita titulo y precio al menor costo unitario, un actor mas barato puede convenirle mas. Si necesita registros completos y listos para analisis con profundidad de vendedor, catalogo y ficha tecnica, este actor devuelve mas por fila.
- **Modelos de renta.** trudax y ecomscrape usan una renta mensual fija que puede resultar mas barata a muy alto volumen para un conjunto pequeno de campos. Este actor se mantiene en pago por resultado sin compromiso mensual.

### Inicio rapido

Abra el actor, pegue esto en la entrada y presione Ejecutar. Devuelve hasta 10 publicaciones de notebooks de Mercado Libre Argentina con enriquecimiento de detalle de producto.

```json
{
  "searchTerms": ["notebook"],
  "country": "ar",
  "withDetails": true,
  "maxListings": 10
}
```

Ejecute varias busquedas de una sola vez y aplique filtros:

```json
{
  "searchTerms": ["notebook", "iphone 15"],
  "country": "mx",
  "condition": "new",
  "freeShipping": true,
  "sort": "price_asc",
  "maxListings": 100
}
```

En su lugar, puede pasar una o varias URLs completas de busqueda, categoria o tienda de vendedor, que conservan los filtros que ya tengan codificados:

```json
{
  "startUrls": ["https://listado.mercadolibre.com.mx/iphone-15"],
  "maxListings": 20
}
```

### Referencia de entrada

| Campo | Tipo | Requerido | Por defecto | Descripcion |
|---|---|---|---|---|
| `searchTerms` | string\[] | no | `["notebook"]` | Una o mas palabras clave. Cada termino ejecuta una busqueda completa en el `country` seleccionado, de modo que una ejecucion puede cubrir muchas busquedas. Cada registro se etiqueta con el `searchQuery` que lo produjo. |
| `startUrls` | string\[] | no | (vacio) | Una o mas URLs de busqueda, categoria o tienda de vendedor de Mercado Libre, por ejemplo `https://listado.mercadolibre.com.ar/notebook`. Se respetan los filtros codificados en la URL. Se ejecuta ademas de `searchTerms`. |
| `country` | enum | no | `ar` | Sitio de pais de Mercado Libre a buscar: `ar`, `mx`, `br`, `co`, `cl`, `pe`, `uy`, `ve`, `bo`, `py`, `ec`, `cr`, `pa`, `do`, `gt`, `hn`, `ni`, `sv`. |
| `sellerId` | string | no | (cualquiera) | Restringe los resultados a un solo vendedor por su id numerico. Funciona por si solo (el catalogo de ese vendedor) o combinado con un termino de busqueda. |
| `category` | string | no | (cualquiera) | Acota un termino de busqueda a un id de categoria (por ejemplo `MLA1652`) o a un slug. |
| `condition` | enum | no | (cualquiera) | `new`, `used` o `refurbished`. Se aplica al usar un termino de busqueda. |
| `priceMin` | integer | no | (cualquiera) | Solo articulos con precio igual o mayor a este valor (moneda local). Se aplica con un termino de busqueda. |
| `priceMax` | integer | no | (cualquiera) | Solo articulos con precio igual o menor a este valor (moneda local). Se aplica con un termino de busqueda. |
| `minDiscount` | integer | no | (cualquiera) | Solo articulos con al menos este porcentaje de descuento. Se aplica con un termino de busqueda. |
| `freeShipping` | boolean | no | `false` | Solo articulos con envio gratis. Se aplica con un termino de busqueda. |
| `fullFulfillment` | boolean | no | `false` | Solo articulos con Mercado Envios FULL. Se aplica con un termino de busqueda. |
| `officialStore` | boolean | no | `false` | Solo articulos vendidos por tiendas oficiales de marca. Se aplica con un termino de busqueda. |
| `sort` | enum | no | `relevance` | Orden de los resultados: `relevance`, `price_asc`, `price_desc`, `newest`. Se aplica con un termino de busqueda. |
| `withDetails` | boolean | no | `true` | Cuando esta activo, se abre cada pagina de producto para agregar atributos, descripcion, galeria de imagenes completa, identidad del vendedor, stock, opiniones y logistica. Mas lento pero mas rico. |
| `maxListings` | integer | no | `10` | Maximo de publicaciones a recolectar en todas las busquedas de la ejecucion. |
| `searchTerm` | string | no | (vacio) | Alias de una sola palabra clave de `searchTerms`, mantenido por compatibilidad. |
| `startUrl` | string | no | (vacio) | Alias de una sola URL de `startUrls`, mantenido por compatibilidad. |
| `proxyUrl` | string (secreto) | no | (proxy integrado) | Opcional. Enrute a traves de su propio proxy residencial o movil (`http://usuario:clave@host:puerto`). Muy recomendado para ejecuciones grandes o confiables; Mercado Libre limita fuertemente las IP de datacenter compartidas. |
| `proxySessionCookie` | string (secreto) | no | (ninguno) | Opcional. Un encabezado `Cookie` de Mercado Libre con sesion iniciada, tomado de su propio navegador, reutilizado para una mayor tasa de exito. Use solo cookies que este autorizado a usar. |

Los filtros pasados via `searchTerm` los aplica el actor; un `startUrl` conserva los filtros que ya tenga codificados.

### Referencia de salida

Un item de dataset por publicacion. Tipos: `string`, `integer`, `number`, `boolean`, `string[]`, `object`, o `null` cuando el valor de la fuente esta ausente. Los campos marcados con (detalle) solo se completan cuando `withDetails` esta activo.

| Campo | Tipo | Descripcion |
|---|---|---|
| `imageUrl` | string | Imagen principal de la publicacion. |
| `title` | string | Titulo del producto. |
| `price` | integer | Precio actual en la moneda local del sitio. |
| `currency` | string | Codigo de moneda, por ejemplo `ARS`, `MXN`, `BRL`. |
| `currencySymbol` | string | Simbolo de la moneda local, por ejemplo `$`, `R$`, `S/`. |
| `originalPrice` | integer | Precio de lista antes del descuento, o `null`. |
| `discountPercentage` | integer | Porcentaje de descuento, o `null`. |
| `sellerName` | string | Nombre del vendedor o tienda que muestra la tarjeta. |
| `freeShipping` | boolean | Si el articulo tiene envio gratis. |
| `category` | string | Etiqueta de categoria o dominio, por ejemplo `MLA-NOTEBOOKS`. |
| `listingId` | string | Id del articulo en Mercado Libre, por ejemplo `MLA1932840933`. |
| `url` | string | Enlace directo a la publicacion. |
| `catalogProductId` | string | Id de producto de catalogo cuando el articulo mapea a una entrada de catalogo. |
| `categoryId` | string | Id numerico de categoria, por ejemplo `MLA1652`. |
| `domainId` | string | Id de dominio, por ejemplo `MLA-NOTEBOOKS`. |
| `position` | integer | Posicion del articulo en los resultados, `-1` cuando no se reporta. |
| `pageNumber` | integer | Pagina de resultados donde se encontro el articulo (base 1). |
| `totalResults` | integer | Total de resultados que Mercado Libre reporto para la busqueda, o `null`. |
| `searchQuery` | string | La palabra clave que produjo este registro, o `null` en trabajos por URL. |
| `countryCode` | string | Pais ISO del sitio del que vino el registro, por ejemplo `AR`, `MX`. |
| `isSponsored` | boolean | Si la publicacion es una tarjeta patrocinada o promocionada. |
| `installments` | object | Plan de cuotas: `quantity`, `amount`, `currency`, `interestFree`, `text`. |
| `promotions` | object\[] | Promociones en la tarjeta, cada una con `type` y `text`. |
| `dealType` | string | Tipo de oferta o destacado, por ejemplo `commercial_event`, o `null`. |
| `dealEndsAt` | string | Hora de fin de la cuenta regresiva de ofertas relampago, o `null`. |
| `condition` | string | Condicion del articulo (`new`, `used`), o `null` cuando no esta en la tarjeta. |
| `ratingAverage` | number | Calificacion promedio, o `null`. |
| `unitsSold` | integer | Unidades vendidas, cuando se reporta. |
| `officialStore` | boolean | Si el vendedor es una tienda oficial de marca. |
| `shippingText` | string | Etiqueta de envio en texto libre, o `null`. |
| `fulfillment` | boolean | Si el articulo se envia con Mercado Envios FULL. |
| `fastShipping` | boolean | Si se anuncia envio rapido. |
| `internationalItem` | boolean | Si el articulo se envia internacionalmente. |
| `originCountry` | string | Pais de origen cuando se marca como articulo internacional. |
| `catalogUrl` | string | URL de la pagina de catalogo (detalle). |
| `attributes` | object\[] | Atributos de ficha tecnica del producto, pares nombre/valor (detalle). |
| `description` | string | Descripcion completa del producto (detalle). |
| `images` | string\[] | URLs de la galeria de imagenes completa (detalle). |
| `brand` | string | Marca extraida de los atributos (detalle). |
| `model` | string | Modelo extraido de los atributos (detalle). |
| `warranty` | string | Terminos de garantia extraidos de los atributos (detalle). |
| `seller` | object | Identidad del vendedor: nombre, id, estado de MercadoLider (detalle). |
| `availableStock` | integer | Stock disponible reportado en la pagina de producto (detalle). |
| `soldQuantity` | integer | Cantidad total vendida desde la pagina de producto (detalle). |
| `reviewsCount` | integer | Numero de opiniones (detalle). |
| `reviewsWithComment` | integer | Opiniones que incluyen un comentario escrito (detalle). |
| `reviewsWithPhotos` | integer | Opiniones que incluyen fotos (detalle). |
| `variants` | object | Selectores de variantes (color, talle y similares) (detalle). |
| `categoryPath` | string\[] | Ruta de ids de categoria (detalle). |
| `categoryPathNames` | string\[] | Ruta de categoria legible (detalle). |
| `logisticType` | string | Tipo de logistica (detalle). |
| `shippingMode` | string | Modo de envio (detalle). |
| `tags` | string\[] | Etiquetas del articulo reportadas por la pagina de producto (detalle). |
| `observedAt` | string | Marca de tiempo ISO 8601 de cuando se recolecto el registro. |
| `error` | string | `null` en caso de exito. En una ejecucion fallida, se escribe un unico item con el campo `error` completado. |

### Ejemplo de registro de salida

Registro real de una ejecucion en vivo (entrada `{"startUrl":"https://listado.mercadolibre.com.ar/notebook","withDetails":false,"maxListings":10}`). Los campos de detalle de arriba aparecen cuando `withDetails` esta activo.

```json
{
  "imageUrl": "https://http2.mlstatic.com/D_NQ_NP_2X_915570-MLA115292753441_072026-F.webp",
  "title": "Notebook Lenovo Ideapad Slim 3 Ryzen 5 40 8gb 256gb Ssd Pantalla 15,6 Full Hd Windows 11",
  "price": 899999,
  "currency": "ARS",
  "originalPrice": null,
  "discountPercentage": null,
  "sellerName": "EW Electro World",
  "freeShipping": true,
  "category": "MLA-NOTEBOOKS",
  "listingId": "MLA1932840933",
  "url": "https://articulo.mercadolibre.com.ar/MLA-1932840933",
  "catalogProductId": "MLA75901817",
  "categoryId": "MLA1652",
  "domainId": "MLA-NOTEBOOKS",
  "position": -1,
  "installments": { "quantity": 6, "amount": 202484, "currency": "ARS", "interestFree": false, "text": "6 cuotas de 202484" },
  "promotions": [ { "type": "coupon", "text": "Cupon OFF" } ],
  "dealType": "commercial_event",
  "dealEndsAt": null,
  "condition": null,
  "ratingAverage": null,
  "unitsSold": 25,
  "officialStore": true,
  "fulfillment": false,
  "fastShipping": false,
  "internationalItem": false,
  "observedAt": "2026-08-10T14:03:44.921Z",
  "error": null
}
```

### Ejecutar via API y CLI

Inicie una ejecucion y espere a que termine, luego lea el dataset. Reemplace `<TOKEN>` con su token de API de Apify.

Ejecute de forma sincrona y obtenga los items del dataset en una sola llamada:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~mercadolibre-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"searchTerm":"notebook","country":"ar","withDetails":true,"maxListings":25}'
```

Inicie una ejecucion de forma asincrona:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~mercadolibre-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://listado.mercadolibre.com.mx/iphone-15","maxListings":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/mercadolibre-scraper \
  --input '{"searchTerm":"drone","country":"mx","freeShipping":true,"maxListings":50}'
```

### Obtener resultados

Cada ejecucion escribe en un dataset. Obtenga los items como JSON, CSV o Excel cambiando `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginar datasets grandes
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` se devuelve como `defaultDatasetId` en el objeto de la ejecucion. Use `offset` y `limit` para recorrer conjuntos de resultados grandes. `clean=true` descarta los campos vacios e internos.

### Facturacion y limites

Este actor usa facturacion de pago por evento. Todos los eventos se listan abajo. Vea la [pestana de precios](https://apify.com/scrapers_lat/mercadolibre-scraper/pricing) para los precios en vivo.

| Evento | Cuando se cobra |
| --- | --- |
| `apify-actor-start` | Una vez por ejecucion, para todos los usuarios, cuando la ejecucion inicia. Cubre el costo fijo de computo y de configuracion del proxy residencial de una ejecucion. |
| `result` | Una vez por cada registro de producto escrito en el dataset (el evento principal). |
| `details` | Una vez por producto cuando se obtiene la pagina del producto y se agrega el enriquecimiento de detalle (atributos, descripcion, galeria de imagenes, reputacion del vendedor, stock, cantidad vendida, variantes, ids de catalogo). Se cobra solo cuando realmente se obtienen datos de detalle. |
| `ai_summary` | Complemento opcional. Una vez por producto cuando `aiSummary` esta activo y la IA produce un resumen y puntos de venta utiles. Solo planes de pago. Se cobra solo con salida util. |

- **Sin cargo en caso de fallo.** Si una ejecucion se bloquea o falla, el actor escribe un unico item con el campo `error` completado y no cobra por el (solo aplica `apify-actor-start`). Las ejecuciones vacias solo generan la tarifa de inicio por ejecucion.
- **Se respeta el tope de gasto.** Configure `maxTotalChargeUsd` en la ejecucion; una vez alcanzado, el actor deja de emitir y cobrar mas resultados y complementos facturables.
- **Los planes gratuitos de Apify** estan limitados a 5 productos por ejecucion, solo listado (sin complementos `details` ni `ai_summary`). Actualice a un plan de pago para el detalle completo de producto, el complemento de resumen con IA y un `maxListings` mayor.
- **Limite de tasa y anti-bot.** Mercado Libre limita fuertemente las IP de datacenter compartidas y puede mostrar un muro de trafico sospechoso o de verificacion de cuenta. Para ejecuciones grandes o confiables, provea su propio proxy residencial o movil limpio via `proxyUrl` y, opcionalmente, una cookie de sesion iniciada via `proxySessionCookie`. Las ejecuciones bloqueadas nunca se cobran.

### Preguntas frecuentes y solucion de problemas

**Una ejecucion devolvio solo un registro de error, o ningun producto. Por que?**
Mercado Libre mostro un muro de trafico sospechoso o de verificacion de cuenta a la IP usada. Es un bloqueo por reputacion de IP y anti-bot, no un error del actor. Provea un proxy residencial o movil limpio via `proxyUrl` (y, opcionalmente, una `proxySessionCookie` con sesion iniciada) y vuelva a ejecutar. Las ejecuciones bloqueadas no se cobran. En IP de datacenter compartidas este muro es comun, por lo que hoy la ruta confiable para produccion es usar su propio proxy limpio o cookie de sesion.

**Como obtengo la ficha tecnica, la descripcion y la galeria de imagenes completa?**
Deje `withDetails` activo (el valor por defecto). El actor abre entonces cada pagina de producto y agrega `attributes`, `description`, `images`, `seller`, y los campos de stock y opiniones.

**Debo usar `startUrls` o `searchTerms`?**
Use `startUrls` para reutilizar busquedas, paginas de categoria o paginas de tienda de vendedor que ya armo en el sitio, con sus filtros incluidos. Use `searchTerms` + `country` para busquedas por palabra clave (una o muchas en una sola ejecucion) y aplique los filtros de entrada (`condition`, `priceMin`, `freeShipping`, `sellerId`, y demas). Los singulares `startUrl` y `searchTerm` siguen funcionando como alias.

**Puedo extraer todo el catalogo de un solo vendedor?**
Si. Pase un `sellerId` numerico, o pegue la URL de la tienda de ese vendedor en `startUrls`. Puede combinar `sellerId` con un termino de busqueda para buscar dentro del catalogo de ese vendedor.

**Que paises estan soportados?**
Los 18 sitios de paises de Mercado Libre y Mercado Livre, seleccionados via `country` (o implicados por el dominio de su `startUrl`): Argentina, Mexico, Brasil, Colombia, Chile, Peru, Uruguay, Venezuela, Bolivia, Paraguay, Ecuador, Costa Rica, Panama, Republica Dominicana, Guatemala, Honduras, Nicaragua y El Salvador.

**Por que `discountPercentage` es null?**
La publicacion no tiene un descuento activo, o la tarjeta no mostro un precio original. Los valores ausentes se devuelven como `null`, nunca se inventan.

**Es esta una herramienta o API oficial de Mercado Libre?**
No. Este actor es independiente y no tiene afiliacion con Mercado Libre. Lee solo datos publicados publicamente y no usa la API oficial de Mercado Libre. Uselo de acuerdo con los terminos de Mercado Libre.

### Related scrapers

- [Amazon Product Scraper](https://apify.com/scrapers_lat/amazon-product-scraper): Amazon product listings, prices and details.
- [OLX Scraper](https://apify.com/scrapers_lat/olx-scraper): classified listings across OLX marketplaces.
- [Falabella Scraper](https://apify.com/scrapers_lat/falabella-scraper): Falabella product listings and prices.
- [Americanas Scraper](https://apify.com/scrapers_lat/americanas-scraper): Americanas Brazil product listings.
- [Amazon Reviews Scraper](https://apify.com/scrapers_lat/amazon-reviews-scraper): Amazon product reviews.
- [Walmart Product Scraper](https://apify.com/scrapers_lat/walmart-product-scraper): Walmart product listings and prices.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

***

> Independent tool, not affiliated with MercadoLibre. Accesses only publicly available listing data and does not use the official MercadoLibre API. Use in accordance with MercadoLibre's terms of service. / Herramienta independiente, sin afiliacion con Mercado Libre. Accede solo a datos de publicaciones disponibles publicamente y no usa la API oficial de Mercado Libre. Uselo de acuerdo con los terminos de servicio de Mercado Libre.
>
> </content>

</invoke>

# Actor input Schema

## `searchTerms` (type: `array`):

One or more keywords to search. Each term runs a full search on the selected Country, so a single run can cover many searches. Every record is tagged with the searchQuery that produced it. Example: \["notebook", "iphone 15"].

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

One or more MercadoLibre search, category, or seller-store listing URLs (e.g. https://listado.mercadolibre.com.ar/notebook). Any filters already encoded in the URL are respected. Runs in addition to Search Terms.

## `bestSellers` (type: `boolean`):

When enabled, collect the official MercadoLibre Argentina best-seller ranking per category (each product with its rank position, price, rating and units sold). Ideal for market research: run daily to track top products, price and rank changes. Combine with Fetch Product Details for full attributes, variations, stock and seller reputation per product.

## `bestSellerCategories` (type: `array`):

Optional. Limit best-seller ranking to specific categories, by name (e.g. 'Celulares', 'Electrodomesticos', 'Deportes') or category id (e.g. MLA1051). Leave empty to cover all main Argentina categories.

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

MercadoLibre country site to search when using a Search Term.

## `maxListings` (type: `integer`):

Maximum number of product listings to collect across all searches in this run.

## `withDetails` (type: `boolean`):

When enabled, the actor opens each product page to add full technical attributes, variations, available stock, exact units sold, review count, seller reputation, description and all images. Much slower (about a minute per product) and best used on a focused set, so it is off by default; the best-seller ranking already includes price, rating and units sold.

## `sellerId` (type: `string`):

Optional. Restrict results to a single MercadoLibre seller by numeric seller id (found on the seller's store page). Works on its own (returns that seller's catalog) or combined with a Search Term. You can also just paste a seller store URL into Search URLs.

## `category` (type: `string`):

Optional. Narrow a Search Term to a MercadoLibre category, by category id (e.g. MLA1652) or category slug. Leave blank to search all categories.

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

Filter by item condition. Applied when using a Search Term (a Search URL keeps its own filters).

## `priceMin` (type: `integer`):

Only return items priced at or above this value (in the site's local currency). Applied when using a Search Term.

## `priceMax` (type: `integer`):

Only return items priced at or below this value (in the site's local currency). Applied when using a Search Term.

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

Only return items with at least this discount percentage. Applied when using a Search Term.

## `freeShipping` (type: `boolean`):

Only return items that ship for free. Applied when using a Search Term.

## `fullFulfillment` (type: `boolean`):

Only return items fulfilled by Mercado Envios FULL (fast, stocked in ML warehouses). Applied when using a Search Term.

## `officialStore` (type: `boolean`):

Only return items sold by official brand stores. Applied when using a Search Term.

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

Result ordering. Applied when using a Search Term.

## `aiSummary` (type: `boolean`):

Optional paid add-on. For each product, generate a concise buyer-oriented AI summary and key selling points. Requires a paid Apify plan; billed per product only when a usable summary is produced.

## `proxyUrl` (type: `string`):

Optional. Route this Actor through your own residential or mobile proxy pool for a much higher success rate (e.g. http://user:pass@host:port). MercadoLibre heavily rate-limits shared datacenter IPs, so a clean residential/mobile proxy is strongly recommended for large or reliable runs. Leave blank to use the built-in proxy.

## `proxySessionCookie` (type: `string`):

Optional. A signed-in MercadoLibre Cookie header string from your own browser session. When provided, the Actor reuses your session for a higher success rate on protected results. Use only cookies you are authorized to use.

## Actor input object example

```json
{
  "searchTerms": [
    "notebook",
    "iphone 15"
  ],
  "bestSellers": true,
  "bestSellerCategories": [
    "Celulares",
    "Electrodomesticos",
    "Deportes"
  ],
  "country": "ar",
  "maxListings": 10,
  "condition": "",
  "freeShipping": false,
  "fullFulfillment": false,
  "officialStore": false,
  "sort": "relevance",
  "aiSummary": false
}
```

# Actor output Schema

## `results` (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 = {
    "bestSellers": true,
    "bestSellerCategories": [
        "Celulares"
    ],
    "maxListings": 10,
    "withDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/unblocker-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 = {
    "bestSellers": True,
    "bestSellerCategories": ["Celulares"],
    "maxListings": 10,
    "withDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/unblocker-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 '{
  "bestSellers": true,
  "bestSellerCategories": [
    "Celulares"
  ],
  "maxListings": 10,
  "withDetails": false
}' |
apify call scrapers_lat/unblocker-mercadolibre-scraper --silent --output-dataset

```

## MCP server setup

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