MercadoLibre Listing Scraper
Pricing
from $1.99 / 1,000 results
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
Maintained by CommunityActor 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.
| Category | Fields | What you get |
|---|---|---|
| π Search context | palabraClave, itemPosition, resultadosTotales, esAnuncio, esProductoIndividual | The 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 identity | articuloTitulo, zProductoLink, snippet, imgDireccion, productoMarca, SKU | Title, canonical listing URL, result snippet, image address, brand and stock keeping unit |
| π° Pricing | nuevoPrecio, precioAnterior, precioDiscount, Moneda, installments, promociones | Current price, previous price, discount percentage, currency, instalment terms and promotional labels |
| π§βπΌ Seller | Vendedor, sellerID, esTiendaOficial, esCompraIternacional | Seller name and ID, whether they are an official store, and whether the listing is an international purchase |
| β Social proof | produtoReviews, numeroEvaluaciones, highlight | Rating, number of evaluations and any marketplace highlight badge |
| π Logistics & taxonomy | Envio, envioDesde, enStock, disponibleEn, ubicacion, produtoCategoryID, produtoDomainID, vertical, verticalID | Shipping 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
| Feature | Description |
|---|---|
| π Any MercadoLibre country site | country accepts any listado.mercadolibre.* base URL β Argentina, Mexico, Brazil, Chile, Colombia and the rest |
| π Google-based access | Searches Google with a site: filter instead of hitting MercadoLibre directly, sidestepping the marketplace's anti-scraping layer |
| π‘οΈ GOOGLE_SERP proxy group | Ships with Apify's search-optimised proxy pool preconfigured, and the proxy setting is fully user-configurable |
| π Multi-page pagination | maxPages controls how many Google result pages are scraped, at ten results per page |
| π« Ad filtering | promoted set to false strips sponsored blocks so only organic results are returned |
| π΅ Full pricing capture | Current price, previous price, discount, currency, instalments and promotional labels in one record |
| πͺ Official store detection | esTiendaOficial flags brand-operated stores, separating them from third-party resellers |
| ποΈ Native taxonomy IDs | Returns MercadoLibre's own category, domain and vertical identifiers for reliable product grouping |
| πͺπΈ Marketplace-native schema | Field 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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | string | Yes | prefilled zapatillas | Term to search for on MercadoLibre |
country | string | Yes | prefilled 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 |
maxPages | integer | No | 1 | How many Google result pages to scrape, at 10 results per page |
promoted | boolean | No | false | If false, Google Ads blocks are filtered out and only organic results are returned |
proxyConfiguration | object | No | {"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.
| Field | Type | Description |
|---|---|---|
palabraClave | β | Keyword that produced the item |
articuloTitulo | β | Title of the article |
zProductoLink | string | null | Link to the product listing |
snippet | string | null | Short 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.
| Field | Type | Description |
|---|---|---|
imgDireccion | β | Image address for the listing |
Moneda | β | Currency of the listing |
nuevoPrecio | string | null | Current price |
precioAnterior | β | Previous price before discount |
precioDiscount | integer | null | Discount amount |
installments | β | Instalment terms |
promociones | string | null | Promotional label |
enStock | β | Stock state |
Vendedor | β | Seller name |
esTiendaOficial | β | Whether the seller is an official store |
SKU | string | null | Stock keeping unit |
esCompraIternacional | β | Whether the listing is an international purchase |
produtoReviews | β | Review rating |
numeroEvaluaciones | string | null | Number 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 |
produtoCategoryID | string | null | MercadoLibre category identifier |
produtoDomainID | string | null | MercadoLibre domain identifier |
sellerID | string | null | Seller identifier |
vertical | β | Vertical of the listing |
verticalID | string | null | Vertical 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 ApifyClientclient = 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
listadobase URL.countryexpects something likehttps://listado.mercadolibre.com.ar/, notArgentinaorAR. The domain is extracted from this value for the Googlesite: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
promotedfalse for analysis. Sponsored blocks corruptitemPositionand inflate result counts. Only enable them when studying paid placement specifically. - Start at one page, then scale. Validate the keyword-and-country pairing with
maxPagesof 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.