MercadoLibre Listing Scraper avatar

MercadoLibre Listing Scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
MercadoLibre Listing Scraper

MercadoLibre Listing Scraper

MercadoLibre Listing Scraper extracts Latin American marketplace listings - title, link, currency, current and previous price, discount, installments, promotions, stock, seller, official-store flag, SKU and reviews. πŸ›’ For price tracking.

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Hub

Scrapers Hub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

πŸ›’ MercadoLibre Listing Scraper – Product Listings, Prices & Seller Data via Google SERP

The MercadoLibre listing scraper extracts product listings, prices, sellers and promotions from MercadoLibre country sites by searching Google with a site: filter rather than hitting the marketplace directly. MercadoLibre blocks direct scraping aggressively, so this MercadoLibre listing scraper takes the indirect route: it queries Google's index scoped to a chosen listado.mercadolibre.* domain, parses the result pages, and returns structured listing records for the keyword you searched.

That architectural choice shapes what you get. The scraper returns Spanish-named fields matching MercadoLibre's own vocabulary β€” articuloTitulo, nuevoPrecio, Vendedor, esTiendaOficial, Envio β€” so anyone familiar with the marketplace will recognise the schema immediately. The Google search layer runs through Apify's GOOGLE_SERP proxy group by default, which is the proxy pool built specifically for search result pages, and this is the one proxy setting you can and should configure yourself.


πŸ“Š What Data Can You Extract with This MercadoLibre Scraper?

Records fall into six categories. Note that the actor produces two distinct record shapes β€” see the Output section β€” and not every field appears in both.

CategoryFieldsWhat you get
πŸ” Search contextpalabraClave, itemPosition, resultadosTotales, esAnuncio, esProductoIndividualThe keyword that produced the record, its rank position, total result count, whether it is a sponsored placement, and whether the URL is an individual product page
🏷️ Product identityarticuloTitulo, zProductoLink, snippet, imgDireccion, productoMarca, SKUTitle, canonical listing URL, result snippet, image address, brand and stock keeping unit
πŸ’° PricingnuevoPrecio, precioAnterior, precioDiscount, Moneda, installments, promocionesCurrent price, previous price, discount percentage, currency, instalment terms and promotional labels
πŸ§‘β€πŸ’Ό SellerVendedor, sellerID, esTiendaOficial, esCompraIternacionalSeller name and ID, whether they are an official store, and whether the listing is an international purchase
⭐ Social proofprodutoReviews, numeroEvaluaciones, highlightRating, number of evaluations and any marketplace highlight badge
🚚 Logistics & taxonomyEnvio, envioDesde, enStock, disponibleEn, ubicacion, produtoCategoryID, produtoDomainID, vertical, verticalIDShipping terms and origin, stock state, availability, location, and MercadoLibre's internal category, domain and vertical identifiers

The field worth building analysis around is produtoDomainID. MercadoLibre's domain IDs are its internal product taxonomy β€” a stable machine identifier for what kind of product a listing is, independent of how the seller wrote the title. Grouping on it lets you compare like with like across sellers whose titles are keyword-stuffed and inconsistent, which is precisely the problem that makes marketplace price monitoring hard.


🌟 Key Features of the MercadoLibre Listing Scraper

FeatureDescription
🌎 Any MercadoLibre country sitecountry accepts any listado.mercadolibre.* base URL β€” Argentina, Mexico, Brazil, Chile, Colombia and the rest
πŸ”Ž Google-based accessSearches Google with a site: filter instead of hitting MercadoLibre directly, sidestepping the marketplace's anti-scraping layer
πŸ›‘οΈ GOOGLE_SERP proxy groupShips with Apify's search-optimised proxy pool preconfigured, and the proxy setting is fully user-configurable
πŸ“„ Multi-page paginationmaxPages controls how many Google result pages are scraped, at ten results per page
🚫 Ad filteringpromoted set to false strips sponsored blocks so only organic results are returned
πŸ’΅ Full pricing captureCurrent price, previous price, discount, currency, instalments and promotional labels in one record
πŸͺ Official store detectionesTiendaOficial flags brand-operated stores, separating them from third-party resellers
πŸ—‚οΈ Native taxonomy IDsReturns MercadoLibre's own category, domain and vertical identifiers for reliable product grouping
πŸ‡ͺπŸ‡Έ Marketplace-native schemaField names mirror MercadoLibre's own terminology, so the output reads naturally to anyone who knows the platform

πŸš€ Why Choose This MercadoLibre Listing Scraper?

A working route into a marketplace that blocks scrapers. MercadoLibre's direct anti-bot defences are the reason most attempts at scraping it fail. Routing through Google's index is a fundamentally different access path, and it is why this actor returns data where a naive HTTP crawler returns challenge pages.

Configurable proxies, which is unusual and useful. Unlike many actors that hide proxy handling, this one exposes proxyConfiguration directly. It defaults to Apify's GOOGLE_SERP group, purpose-built for search result pages, but you can substitute residential proxies or your own configuration if your use case demands it.

Organic-only results when you need clean data. Sponsored placements distort any ranking or share-of-shelf analysis. Setting promoted to false filters Google Ads blocks out entirely, leaving organic results and an honest itemPosition sequence.

Native taxonomy identifiers, not just scraped text. produtoCategoryID, produtoDomainID, verticalID and sellerID are MercadoLibre's own identifiers. They make joins, deduplication and category-level aggregation reliable in a way that title-string matching never is.


πŸ“₯ Input

{
"keyword": "zapatillas",
"country": "https://listado.mercadolibre.com.ar/",
"maxPages": 1,
"promoted": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["GOOGLE_SERP"]
}
}

πŸ”§ MercadoLibre Scraper Input Fields

FieldTypeRequiredDefaultDescription
keywordstringYesprefilled zapatillasTerm to search for on MercadoLibre
countrystringYesprefilled https://listado.mercadolibre.com.ar/Base listado URL of the MercadoLibre country site to search. Used only to derive the domain for Google's site: filter
maxPagesintegerNo1How many Google result pages to scrape, at 10 results per page
promotedbooleanNofalseIf false, Google Ads blocks are filtered out and only organic results are returned
proxyConfigurationobjectNo{"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]}Proxy settings. MercadoLibre blocks direct scraping, so this actor searches Google instead; GOOGLE_SERP is Apify's proxy pool built for scraping Google search results

πŸ’‘ Input Examples

Mexican site, three pages, organic results only:

{
"keyword": "audifonos bluetooth",
"country": "https://listado.mercadolibre.com.mx/",
"maxPages": 3,
"promoted": false
}

Argentine site including sponsored placements, for share-of-voice analysis:

{
"keyword": "notebook gamer",
"country": "https://listado.mercadolibre.com.ar/",
"maxPages": 2,
"promoted": true
}

Chilean site with an explicit proxy configuration:

{
"keyword": "cafetera",
"country": "https://listado.mercadolibre.cl/",
"maxPages": 5,
"promoted": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["GOOGLE_SERP"]
}
}

πŸ“€ Output

The actor produces two distinct record shapes depending on how a result is resolved. Search-result records carry the SERP-level fields; listing records carry the full product detail set.

{
"palabraClave": "zapatillas",
"articuloTitulo": "Zapatillas Deportivas Running Unisex",
"zProductoLink": "https://articulo.mercadolibre.com.ar/MLA-EXAMPLE-zapatillas",
"snippet": "Zapatillas deportivas con envΓ­o gratis a todo el paΓ­s. 12 cuotas sin interΓ©s.",
"esProductoIndividual": true,
"esAnuncio": false,
"itemPosition": 1,
"Moneda": "ARS",
"nuevoPrecio": "89999",
"precioDiscount": 25,
"Vendedor": "DeportesOnline",
"esTiendaOficial": false,
"SKU": "MLA1234567890",
"produtoDomainID": "MLA-SNEAKERS",
"Envio": "EnvΓ­o gratis"
}

🧾 MercadoLibre Search Result Fields

These fields are produced for every result found on a Google result page.

FieldTypeDescription
palabraClaveβ€”Keyword that produced the item
articuloTituloβ€”Title of the article
zProductoLinkstring | nullLink to the product listing
snippetstring | nullShort snippet from the result
esProductoIndividualβ€”Whether the URL is an individual product page
esAnuncioβ€”Whether the result is a sponsored ad block
itemPositionβ€”Position of the item in the result sequence

🧾 MercadoLibre Listing Detail Fields

These fields appear on records resolved to full listing detail.

FieldTypeDescription
imgDireccionβ€”Image address for the listing
Monedaβ€”Currency of the listing
nuevoPreciostring | nullCurrent price
precioAnteriorβ€”Previous price before discount
precioDiscountinteger | nullDiscount amount
installmentsβ€”Instalment terms
promocionesstring | nullPromotional label
enStockβ€”Stock state
Vendedorβ€”Seller name
esTiendaOficialβ€”Whether the seller is an official store
SKUstring | nullStock keeping unit
esCompraIternacionalβ€”Whether the listing is an international purchase
produtoReviewsβ€”Review rating
numeroEvaluacionesstring | nullNumber of evaluations
resultadosTotalesβ€”Total results reported for the search
Envioβ€”Shipping terms
highlightβ€”Marketplace highlight badge
disponibleEnβ€”Availability, such as colours available
envioDesdeβ€”Shipping origin
productoMarcaβ€”Product brand
produtoCategoryIDstring | nullMercadoLibre category identifier
produtoDomainIDstring | nullMercadoLibre domain identifier
sellerIDstring | nullSeller identifier
verticalβ€”Vertical of the listing
verticalIDstring | nullVertical identifier
ubicacionβ€”Location of the listing

πŸ’» How to Use the MercadoLibre Listing Scraper (Step by Step)

Step 1: Pick the right country site

country is not a country name β€” it is the base listado URL of the MercadoLibre site you want to search, such as https://listado.mercadolibre.com.ar/ for Argentina or https://listado.mercadolibre.com.mx/ for Mexico. It is used solely to derive the domain for Google's site: filter. Getting this wrong is the most common configuration mistake, and it produces an empty or irrelevant result set rather than an error.

Step 2: Choose a keyword in the right language

keyword should be phrased the way local shoppers search. Spanish for most sites, Portuguese for Brazil. "Zapatillas" and "tΓͺnis" describe the same product category on different MercadoLibre sites, and searching the wrong term against the wrong domain returns very little. Specific product terms outperform broad category words.

Step 3: Set pagination depth

maxPages controls how many Google result pages are fetched, at roughly ten results each. Start with the default of 1 to validate that your keyword and country combination returns relevant listings. Once confirmed, raise it β€” three to five pages gives a reasonable view of the competitive set for most keywords without a long run.

Step 4: Decide whether to include sponsored results

promoted defaults to false, which filters out Google Ads blocks and leaves only organic results. Keep it false for price monitoring and competitive analysis, where sponsored placements would skew itemPosition. Set it to true only when you specifically want to see who is paying for visibility on that keyword.

Step 5: Review the proxy configuration

The default proxyConfiguration uses Apify's GOOGLE_SERP group, which exists precisely for scraping search result pages and is the right choice for almost every run. Because this input is user-configurable, you can substitute residential proxies or a custom configuration if you have a reason to β€” but the default is the tested path and changing it is rarely necessary.

Step 6: Run and inspect the record shapes

Start the run and check the first few dataset items. You will see SERP-level records carrying palabraClave, articuloTitulo, zProductoLink, snippet, esProductoIndividual, esAnuncio and itemPosition, and, where a listing is resolved to full detail, the wider pricing, seller and taxonomy field set. Design your downstream parsing to tolerate both shapes.

Step 7: Export and analyse

Export as JSON, CSV or Excel, or pull the dataset through the API. For price tracking, key on SKU or zProductoLink and record nuevoPrecio and Moneda over time. For competitive analysis, group by sellerID and esTiendaOficial. For category work, aggregate on produtoDomainID rather than title strings.


πŸ”Œ API Access & Integrations

Run the MercadoLibre listing scraper synchronously and get the dataset back:

curl -X POST "https://api.apify.com/v2/acts/scrapers-hub~mercadolibre-listing-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keyword": "zapatillas",
"country": "https://listado.mercadolibre.com.ar/",
"maxPages": 2,
"promoted": false
}'

Python, using the official client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("scrapers-hub/mercadolibre-listing-scraper").call(
run_input={
"keyword": "audifonos bluetooth",
"country": "https://listado.mercadolibre.com.mx/",
"maxPages": 3,
"promoted": False,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("itemPosition"), item.get("articuloTitulo"), item.get("nuevoPrecio"))

Results can be routed into Zapier, Make, Google Sheets or Slack, or delivered to your own service through an Apify webhook fired on run completion.


πŸ’‘ Best Use Cases for MercadoLibre Listing Data

πŸ’² Competitive price monitoring

Track nuevoPrecio, precioAnterior and precioDiscount for the keywords that matter to your catalogue, keyed on SKU or zProductoLink. Running the scraper on a schedule builds a price history that shows not just current positioning but discount cadence β€” when competitors cut, by how much, and for how long.

πŸͺ Official store versus reseller analysis

esTiendaOficial distinguishes brand-operated stores from third-party sellers. For a brand, counting how many of the top results for your own product terms are official versus reseller listings is a direct measure of marketplace channel control, and a fast way to spot unauthorised sellers.

πŸ“Š Search ranking and share of shelf

With promoted set to false, itemPosition gives a clean organic ranking sequence. Tracking where your listings and your competitors' appear for a keyword over time is the marketplace equivalent of SEO rank tracking, and resultadosTotales provides the denominator for share-of-shelf calculations.

🚚 Shipping and logistics benchmarking

Envio, envioDesde and esCompraIternacional together describe how a listing is fulfilled. Comparing free-shipping prevalence and shipping origin across a competitive set explains a lot about conversion differences that price alone does not, particularly for cross-border listings.

⭐ Review and social proof benchmarking

produtoReviews and numeroEvaluaciones show how much accumulated social proof each listing carries. A competitor with a higher price but a far larger evaluation count is a different threat from a new entrant undercutting on price, and separating the two changes how you respond.

πŸ—‚οΈ Category and assortment research

produtoCategoryID, produtoDomainID, vertical and verticalID are MercadoLibre's own taxonomy. Aggregating listings by domain ID reveals which product types dominate a keyword, how brands (productoMarca) split across them, and where assortment gaps exist.

πŸ’³ Instalment and promotion strategy

In Latin American e-commerce, instalment terms often matter more to conversion than headline price. installments and promociones capture what each seller is offering, letting you benchmark financing terms and promotional messaging alongside nuevoPrecio.


βš™οΈ Tips for Better MercadoLibre Scraping Results

  • Always pass the full listado base URL. country expects something like https://listado.mercadolibre.com.ar/, not Argentina or AR. The domain is extracted from this value for the Google site: filter.
  • Search in the local language. Spanish for most sites, Portuguese for mercadolivre.com.br. Keyword language mismatch is the single biggest cause of thin results.
  • Keep promoted false for analysis. Sponsored blocks corrupt itemPosition and inflate result counts. Only enable them when studying paid placement specifically.
  • Start at one page, then scale. Validate the keyword-and-country pairing with maxPages of 1 before committing to a deep run.
  • Keep the GOOGLE_SERP proxy group. It is the pool built for search result pages. Switching to a generic group usually reduces the number of results parsed successfully.
  • Handle both record shapes downstream. Not every field is present on every record. Use null-safe accessors rather than assuming the full listing detail set.

πŸ› οΈ Troubleshooting

The run returned no results at all. Check country first β€” it must be a full listado.mercadolibre.* base URL. Then check that keyword is in the right language for that site. A valid domain with an English keyword on a Spanish-language site commonly returns nothing.

Why do many fields come back empty or null? The scraper produces two record shapes. SERP-level records only carry the search-result fields; the fuller pricing, seller and taxonomy set appears where a listing is resolved to detail. Empty values reflect what was available, not a failure.

I am getting fewer than ten results per page. Google does not always return a full page of results for a narrow site:-filtered query, and with promoted set to false any sponsored blocks are removed from the count. Both effects reduce the per-page yield legitimately.

The run is failing or returning blocked responses. Confirm proxyConfiguration still uses useApifyProxy with the GOOGLE_SERP group, and that your Apify account has access to that proxy group. This is the most common cause of a run that starts but parses nothing.

Prices look wrong or are missing a decimal separator. nuevoPrecio is returned as a cleaned numeric string, and Moneda carries the currency. Formatting conventions differ by country site, so apply locale-aware parsing rather than assuming a single format across markets.


❓ Frequently Asked Questions About MercadoLibre Scraping

What does the MercadoLibre listing scraper do? It searches Google with a site: filter scoped to a chosen MercadoLibre country domain, parses the result pages, and returns structured product listing records with pricing, seller, shipping and taxonomy fields.

Why does it search Google instead of MercadoLibre directly? MercadoLibre blocks direct scraping. Going through Google's index is a different access path that works where direct requests are challenged.

Which MercadoLibre country sites are supported? Any of them. Pass the site's listado base URL in country β€” Argentina, Mexico, Brazil, Chile, Colombia, Peru, Uruguay and the rest all work the same way.

How many results will I get per run? Roughly ten per Google result page, multiplied by maxPages. The actual number can be lower when Google returns a partial page or when sponsored blocks are filtered out.

Can I include sponsored listings? Yes. Set promoted to true. It defaults to false, which filters Google Ads blocks and leaves only organic results.

Do I need to configure proxies? The default configuration is already set to Apify's GOOGLE_SERP group and works out of the box. Unlike most actors, this one does let you change it β€” but the default is the tested path.

Why are the field names in Spanish? They mirror MercadoLibre's own terminology, so the schema reads naturally to anyone who works with the marketplace. articuloTitulo is the listing title, nuevoPrecio the current price, Vendedor the seller, and so on.

What is produtoDomainID and why does it matter? It is MercadoLibre's internal product-type identifier. Because it is assigned by the platform rather than written by sellers, it is far more reliable than title text for grouping comparable listings.

How do I tell an official store from a reseller? Use esTiendaOficial. It flags brand-operated stores, which is essential for channel-control and unauthorised-seller analysis.

Can I track prices over time? Yes. Schedule the actor and store nuevoPrecio, precioAnterior, precioDiscount and Moneda keyed on SKU or zProductoLink for each run. The history is what makes the data valuable.

What is the difference between esAnuncio and promociones? esAnuncio indicates the result came from a sponsored ad block in the search results. promociones is a promotional label on the listing itself, such as a "Promocionado" badge.

Does the actor use a headless browser? No. It works over HTTP requests with HTML parsing, which keeps runs fast and inexpensive.

Can I search multiple keywords in one run? keyword accepts a single term per run. For multiple keywords, start one run per term β€” which also keeps palabraClave attribution unambiguous.

How do I deduplicate results across runs? Use zProductoLink as the primary key, falling back to SKU. Both are stable per listing, whereas itemPosition changes with every search.

Is scraping MercadoLibre data legal? The actor collects publicly visible listing information from search results. You are responsible for complying with MercadoLibre's and the search engine's terms of service, and with applicable law in how you store and use the data.


πŸ†˜ Support & Feedback

If a country site is not resolving, a keyword returns nothing you expect, or a run fails, please open a report on the Issues tab with your full input and the run ID.

For custom work β€” additional fields, scheduled monitoring pipelines, other Latin American marketplaces, or a private build for your team β€” email scraperhubapi@gmail.com with your requirements.

If this MercadoLibre listing scraper helps your pricing or market research, a review on the actor page is much appreciated and guides what gets built next.


βš–οΈ Disclaimer

This MercadoLibre listing scraper collects only publicly available listing information that is already indexed and visible without authentication. It does not log into MercadoLibre, does not access seller dashboards, and does not retrieve any data behind a login.

Listing data can include seller names and identifiers that may constitute personal data for sole traders under GDPR, LGPD and comparable regimes. Where that applies, you are responsible for establishing a lawful basis for processing and honouring erasure requests. You are also responsible for complying with the terms of service of MercadoLibre and of any search engine involved in producing these results, including restrictions on republication and commercial reuse.

To request removal of specific data collected by this actor, email scraperhubapi@gmail.com with the details.