10 guides
Marketplace prices that carry their own currency
Listings and product pages from Latin America's largest marketplace: a currency on every row because six countries mix local and US dollars on one page, the Venezuelan dual price, and a robots.txt that now disallows the only URL form the site still serves.

How to scrape Mercado Libre
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.

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.

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.

Mixed-currency pages
In Uruguay, Paraguay, the Dominican Republic, Nicaragua, Guatemala and Panama the local currency and US dollars appear in the same list of results — which makes a per-country currency column quietly wrong.

Venezuela's dual price
Venezuelan product pages show a dollar price and a bolívar price at once. Deriving the implied rate from the page's structured data rather than the rendered price is the difference between a stable number and one that drifts.

Pagination and robots.txt
Measured in September 2026: the plain paginated path returns the anti-bot wall and the `_NoIndex_True` form returns results — and robots.txt disallows the second by name. There is currently no polite pagination available.

item_id and link shapes
Mercado Libre results mix `articulo.…/MLA-…`, `/p/MLA…` and `/up/MLAU…` links. Deriving the item id from the URL looks fine until the third shape appears, which can be nearly half a page.

The anti-bot wall
Mercado Libre's anti-bot response is a well-formed page with a 200 status and zero listings. Six different responses have to be told apart, and only one of them is data.

Stock and sales ranges
The site shows `+25 vendidos` and the official API answers `RANGO_1_50`. Any dataset with an exact sales integer in it invented that integer.

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.