MercadoLibre Product & Price Scraper (LATAM) avatar

MercadoLibre Product & Price Scraper (LATAM)

Pricing

from $6.15 / 1,000 results

Go to Apify Store
MercadoLibre Product & Price Scraper (LATAM)

MercadoLibre Product & Price Scraper (LATAM)

Scrape MercadoLibre product listings and prices across 18 countries including Mexico, Argentina and Brazil. Extract title, price, currency, discount, seller, rating, stock, sold quantity and images. Export to JSON, CSV or Excel. No login needed.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(2)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

2

Bookmarked

75

Total users

17

Monthly active users

6 days ago

Last modified

Share

MercadoLibre Product & Price Scraper (LATAM)

MercadoLibre Product & Price Scraper (LATAM)

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

{
"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": "Cupón 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.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it 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.

Coverage spans 18 MercadoLibre country sites: Argentina, Mexico, Brazil, Colombia, Chile, Peru, Uruguay, Venezuela, Bolivia, Paraguay, Ecuador, Costa Rica, Panama, Dominican Republic, Guatemala, Honduras, Nicaragua and El Salvador.

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.

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.

ScraperML countriesTargeting filtersOutput fieldsMulti-keyword runSeller filterFull specs + seller reputationPricing model
scrapers.lat (this actor)181360+YesYesYesPay per result
karamelo18~5~25NoNoReviews only, no specs tablePay per result (lower unit price)
maximedupre17~11~24YesNoNo specs tablePay per result (lower unit price)
devcake173~20YesNoDetail enrich, no specs tablePay per result (lower unit price)
gio21175~20NoNoNo specs tablePay per result (lower unit price)
ecomscrape18~8~18YesNoSpecs in a separate actorMonthly rental plus usage
trudax~18~7~11YesNoDescription and images onlyMonthly rental plus usage
crawlerbros1 (MX only)~5~17NoNoBrand onlyPay 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.

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

Run several searches in one go, and apply filters:

{
"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:

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

Input reference

FieldTypeRequiredDefaultDescription
searchTermsstring[]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.
startUrlsstring[]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.
countryenumnoarMercadoLibre country site to search: ar, mx, br, co, cl, pe, uy, ve, bo, py, ec, cr, pa, do, gt, hn, ni, sv.
sellerIdstringno(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.
categorystringno(any)Narrow a search term to a category id (for example MLA1652) or slug.
conditionenumno(any)new, used, or refurbished. Applied when using a search term.
priceMinintegerno(any)Only items priced at or above this value (local currency). Applied with a search term.
priceMaxintegerno(any)Only items priced at or below this value (local currency). Applied with a search term.
minDiscountintegerno(any)Only items with at least this discount percentage. Applied with a search term.
freeShippingbooleannofalseOnly items that ship for free. Applied with a search term.
fullFulfillmentbooleannofalseOnly items fulfilled by Mercado Envios FULL. Applied with a search term.
officialStorebooleannofalseOnly items sold by official brand stores. Applied with a search term.
sortenumnorelevanceResult ordering: relevance, price_asc, price_desc, newest. Applied with a search term.
withDetailsbooleannotrueWhen on, each product page is opened to add attributes, description, full image gallery, seller identity, stock, reviews and logistics. Slower but richer.
maxListingsintegerno10Maximum listings to collect across all searches in the run.
searchTermstringno(empty)Single-keyword alias of searchTerms, kept for backward compatibility.
startUrlstringno(empty)Single-URL alias of startUrls, kept for backward compatibility.
proxyUrlstring (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.
proxySessionCookiestring (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.

FieldTypeDescription
imageUrlstringMain listing image.
titlestringProduct title.
priceintegerCurrent price in the site's local currency.
currencystringCurrency code, for example ARS, MXN, BRL.
currencySymbolstringLocal currency symbol, for example $, R$, S/.
originalPriceintegerList price before discount, or null.
discountPercentageintegerDiscount percentage, or null.
sellerNamestringSeller or store name shown on the card.
freeShippingbooleanWhether the item ships for free.
categorystringCategory or domain label, for example MLA-NOTEBOOKS.
listingIdstringMercadoLibre item id, for example MLA1932840933.
urlstringDirect link to the listing.
catalogProductIdstringCatalog product id when the item maps to a catalog entry.
categoryIdstringNumeric category id, for example MLA1652.
domainIdstringDomain id, for example MLA-NOTEBOOKS.
positionintegerPosition of the item in the results, -1 when not reported.
pageNumberintegerResult page the item was found on (1-based).
totalResultsintegerTotal results MercadoLibre reported for the search, or null.
searchQuerystringThe keyword that produced this record, or null for URL-based jobs.
countryCodestringISO country of the site the record came from, for example AR, MX.
isSponsoredbooleanWhether the listing is a sponsored or promoted ad card.
installmentsobjectInstallment plan: quantity, amount, currency, interestFree, text.
promotionsobject[]Promotions on the card, each with type and text.
dealTypestringDeal or highlight type, for example commercial_event, or null.
dealEndsAtstringCountdown end time for lightning deals, or null.
conditionstringItem condition (new, used), or null when not on the card.
ratingAveragenumberAverage rating, or null.
unitsSoldintegerUnits sold, when reported.
officialStorebooleanWhether the seller is an official brand store.
shippingTextstringFree-text shipping label, or null.
fulfillmentbooleanWhether the item ships via Mercado Envios FULL.
fastShippingbooleanWhether fast shipping is advertised.
internationalItembooleanWhether the item ships internationally.
originCountrystringOrigin country when flagged as an international item.
catalogUrlstringCatalog page URL (detail).
attributesobject[]Product spec attributes, name/value pairs (detail).
descriptionstringFull product description (detail).
imagesstring[]Full image gallery URLs (detail).
brandstringBrand parsed from attributes (detail).
modelstringModel parsed from attributes (detail).
warrantystringWarranty terms parsed from attributes (detail).
sellerobjectSeller identity: name, id, power seller status (detail).
availableStockintegerAvailable stock reported on the product page (detail).
soldQuantityintegerTotal sold quantity from the product page (detail).
reviewsCountintegerNumber of reviews (detail).
reviewsWithCommentintegerReviews that include a written comment (detail).
reviewsWithPhotosintegerReviews that include photos (detail).
variantsobjectVariant pickers (color, size, and similar) (detail).
categoryPathstring[]Category id path (detail).
categoryPathNamesstring[]Human-readable category path (detail).
logisticTypestringLogistics type (detail).
shippingModestringShipping mode (detail).
tagsstring[]Item tags reported by the product page (detail).
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull 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.

{
"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": "Cupón 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:

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:

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:

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:

# 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 for the live prices.

EventWhen it is charged
apify-actor-startOnce per run, for every user, when the run starts. Covers the fixed compute and residential proxy setup cost of a run.
resultOnce per product record written to the dataset (the primary event).
detailsOnce 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_summaryOptional 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. MercadoLibre heavily rate-limits shared datacenter IPs and may serve a verification wall. For large or reliable runs, supply your own residential or mobile proxy via proxyUrl, and optionally a session cookie via proxySessionCookie. Blocked runs are never charged.

FAQ and troubleshooting

A run returned only an error record. Why? MercadoLibre served a suspicious-traffic verification wall to the IP used. This is an IP-reputation block, not a bug. Supply a clean residential or mobile proxy via proxyUrl (and optionally proxySessionCookie) and rerun. Blocked runs are not charged.

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.

Which countries are supported? All 18 MercadoLibre country sites, selected via country (or implied by the domain of your startUrl).

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? 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.

More scrapers at scrapers.lat

Built and maintained by 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.


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.