ActorStack.dev

How to scrape Mercado Libre across 17 countries

A working method for extracting listings and product pages from any of the 17 Mercado Libre marketplaces, including the two decisions — pagination and detail pages — that decide what a run costs.

By Oswaldo Carabano9 min read
Aerial view of a Latin American city centre at night, streets picked out in light.
Photo: K on Pexels

Short answer

Scraping Mercado Libre needs a browser with a coherent fingerprint and a residential proxy exiting in the marketplace's own country, because plain HTTP, a Chrome TLS fingerprint and even a solved proof-of-work all end at the anti-bot wall. The run is then shaped by two decisions. Pagination reaches roughly 2,000 items per query and only under the `_NoIndex_True` URL form that Mercado Libre's own robots.txt disallows by name, so it is a choice rather than a default. Detail pages carry rating, stock ranges, attributes and the Venezuelan dual price — none of which exist on listing pages — at about 40 times the page loads. Everything else follows from the marketplace: an `iphone` query returns 6,372 results in Mexico and 26 in Panama.

Key points

  • A residential proxy exiting in the marketplace's own country is a requirement rather than a tuning option, because plain HTTP and a Chrome TLS fingerprint both end at the anti-bot wall.
  • An `iphone` query returns 6,372 results in Mexico and 26 in Panama, so the same run configuration behaves completely differently between the large and small marketplaces.
  • Rating, reviews, location, stock ranges, attributes and seller identity appear on no marketplace's listing pages and require a product page load each.
  • Pagination reaches a hard ceiling of roughly 2,000 items per query, which for an Argentine `iphone` search is about 39% of what the site says it holds.
  • Each listing page weighs 2.4 to 4.5 MB, which is why a concurrency of 2 is the measured default rather than the platform maximum.
On this page8 sections

Mercado Libre looks like one site with seventeen flags on it. Underneath, the large marketplaces and the small ones behave so differently that a run configuration tuned for Argentina is close to meaningless in Panama.

What a Mercado Libre run actually needs

A browser with a coherent fingerprint, and a residential proxy that exits in the marketplace's own country. Not one of those is optional. Plain HTTP, a Chrome TLS fingerprint and even a solved proof-of-work all end at the same anti-bot wall — a wall that answers HTTP 200 and is therefore invisible to anything checking status codes.

What you do not need is an account. No API key, no OAuth, no cookies and no sign-in at any point, which also means no account to lose — though it does mean the official API, closed to anonymous callers, is not the route being taken.

Step 1 — pick the marketplace, and expect it to differ

siteId selects one of seventeen, from MLA (Argentina) to MPA (Panamá). The choice decides far more than a domain name:

Marketplaceiphone resultsCatalog pagesPagination useful?
MLM — Mexico6,372YesYes
MLA — Argentina5,078YesYes
MLV — Venezuela436NoBarely
MPA — Panamá26NoNo — one page is everything

The full table, with currency and installments per market, is in the marketplace reference.

Step 2 — searches, categories or URLs

Three ways in, and they are not interchangeable. searchQueries takes free text and returns up to 48 listings on page 1. categoryUrls goes straight at a category listing when you already know the category rather than the phrase. startUrls accepts listing or product URLs — and a product URL is scraped as a detail page, which means it is billed at the detail rate.

Step 3 — decide about pagination deliberately

This is the decision most runs get wrong by not making it. Pagination is on by default, it reaches roughly 2,000 items per query, and it requests a URL form that Mercado Libre's own robots.txt disallows by name — because that is the only form the site still serves.

Step 4 — decide whether you need product pages

scrapeDetail multiplies browser page loads by about 40. What it buys is a set of fields that exist on no marketplace's listing pages at all — rating, reviews, location, stock ranges, attributes, seller identity and the Venezuelan dual price. If you do not need those, leaving it off is the single largest saving available.

Reading the output

input.json — Venezuela, listings only
{
  "siteId": "MLV",
  "searchQueries": ["iphone"],
  "maxItems": 500,
  "scrapeDetail": false
}

Rows arrive in snake_case with product text left in the marketplace's own language, because Envío gratis is data rather than interface. Two fields deserve attention before anything else: currency, which belongs to the row and not the country, and item_id, which comes from the page's embedded results array rather than from the URL — for a reason worth knowing.

Reading the run statistics

RUN_STATS is part of the output. wall_hits and captcha_hits say how much of the run met resistance; pages_disallowed_by_robots_fetched and pages_truncated_by_robots_policy say which side of the robots decision the run actually landed on; items_from_cache says how much of the dataset is up to 24 hours old. Failed pages go to a separate ERRORS dataset rather than mixing into results.

Four mistakes that waste a run

Leaving scrapeDetail on by habit. Forty times the page loads and a separate charge per row, for fields many jobs never read.

Expecting Argentina's numbers in Panama. Twenty-six results is the whole market, not a failed run.

Raising concurrency. Each listing page is 2.4 to 4.5 MB. The default of 2 is measured, not conservative by reflex.

Reading an empty dataset as an empty market. A fully blocked run fails on purpose so those two outcomes stay distinguishable.

Frequently asked questions

Do I need a Mercado Libre API key?
No. The Actor needs no API key, no account, no cookies and no OAuth, and it never signs in. What it does need is a browser with a coherent fingerprint and a residential proxy that exits in the marketplace's own country.
Why is my Panama run so much smaller than my Mexico run?
Because the marketplaces are genuinely different sizes. The same `iphone` query returns 6,372 results in Mexico and 26 in Panama, and in the small markets one page is the entire result set with nothing to paginate at all.
How many items can I get from one search?
Roughly 2,000 per query is a hard ceiling. Paginating an Argentine `iphone` search to the very end reached about 39% of what the site itself reported for that query, and category slicing is the only documented route past it.
What does scrapeDetail actually cost me?
About 40 times the browser page loads, and a separate charge per enriched row at $0.018 against $0.0045 for a listing row on the Free plan. It is the right switch when you need rating, stock ranges or the Venezuelan dual price, and waste otherwise.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 18 Sept 2026
    Mercado Libre Scraper & API — Actor README and input schemaActorStack / Apify Store
  2. Site declarationchecked 18 Sept 2026
    listado.mercadolibre.com.ar/robots.txtMercado Libre
  3. Platform docschecked 18 Aug 2026
    Crawlee — web scraping and browser automation libraryApify
Paper receipts and printed documents arranged on a desk beside office stationery.
Mercado LibreGuide

Listing versus detail

Which fields only exist on product pages, what turning on `scrapeDetail` does to a run's page loads and its bill, and how to get the enriched fields for only the rows that need them.

6 min
Aerial view of a Latin American city centre at night, streets picked out in light.
Mercado LibreReference

The 17 marketplaces

A reference table of every Mercado Libre site id, its country, its currency, the depth of a single query and whether it has catalog pages, mixed currencies and installments.

6 min
A laptop screen showing a plain text-mode terminal with a command prompt.
Mercado LibreComparison

API alternative

The official Mercado Libre API requires OAuth and returns 403 to an anonymous request. A comparison of what the API gives an authorised caller, what scraping gives anyone, and which fields exist in only one of the two.

7 min