Mercado Libre Seller Scraper — Every Listing of a Store avatar

Mercado Libre Seller Scraper — Every Listing of a Store

Pricing

from $1.50 / 1,000 listing scrapeds

Go to Apify Store
Mercado Libre Seller Scraper — Every Listing of a Store

Mercado Libre Seller Scraper — Every Listing of a Store

Scrape every listing of any Mercado Livre / Mercado Libre seller or official store, past the 2,000-result limit: reputation, MercadoLider level, price, discount, shipping, Full, units sold, rating. BR, MX, AR, CO, CL. $1.50 per 1,000 listings plus $0.01 per seller profile. Blocked pages free.

Pricing

from $1.50 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Gangary

Gangary

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

mercado-libre-seller-scraper

Mercado Libre Seller Scraper — Every Listing of a Store

US$1.50 per 1,000 listings + US$0.01 per seller profile + US$0.02 per run. Residential proxies included; blocked pages and sellers that cannot be found are never charged.

  • Past the 2,016-result cap: in a cloud run, Nike's official store in Brazil (2,068 listings) came back with 2,058 listings; the site's own search stops at 2,016.
  • Up to 50 sellers and up to 20,000 listings per seller in one run, in Brazil, Mexico, Argentina, Colombia and Chile.
  • Seller profile on top: reputation, MercadoLíder tier, sales tier, followers and official-store data in one seller row.

Spy on any Mercado Livre / Mercado Libre seller or official store. Give it a seller ID, a nickname, a store link or just one of their listings, and get back the seller profile (reputation, MercadoLider level, sales tier, official-store data) plus every listing with price, crossed-out price, discount, installments, shipping and Full flags, sold counts and ratings.

It works in Brazil, Mexico, Argentina, Colombia and Chile and goes past the ~2,000-result cap of the site's search: big catalogs are split by category and price range, then merged and de-duplicated, so a 40,000-listing store does not stop at page 42.

Built for competitor research, price positioning, assortment gap analysis, brand/MAP monitoring and lead lists of sellers.

Em português: extraia o perfil e todos os anúncios de qualquer vendedor ou loja oficial do Mercado Livre (Brasil) e do Mercado Libre (México, Argentina, Colômbia, Chile): reputação, nível MercadoLíder, preço, desconto, frete grátis, Full e vendidos. Passa do limite de ~2.000 resultados da busca do site. US$1,50 por 1.000 anúncios mais US$0,01 por perfil de vendedor.

En español: extrae el perfil y todas las publicaciones de cualquier vendedor o tienda oficial de Mercado Libre (México, Argentina, Colombia, Chile) y Mercado Livre (Brasil): reputación, nivel MercadoLíder, precios, descuentos, envío gratis y Full. Supera el tope de ~2.000 resultados de la búsqueda. Ideal para espiar a la competencia.

Use cases

  • Competitor research: the full assortment of a rival store with price, discount, Full and units sold per listing.
  • Assortment gaps: compare categoryId and domainId across your store and a competitor's to see what they sell and you do not.
  • Brand and MAP audits: list every listing of a reseller or official store and check prices against your policy.
  • Seller lead lists: reputation, MercadoLíder tier and sales tier per seller, to qualify sellers you want to sell services to.
  • Weekly watch: schedule the same sellers and compare prices and new listings between runs.

What you get

Two kinds of rows share one dataset: one seller row per seller and one listing row per listing (filter on type). Real output from a cloud run for seller 3413781093 (Brazil, maxItemsPerSeller 150 of 388 listings):

{
"type": "seller",
"sellerId": "3413781093",
"nickname": "ningboxiangcaistore",
"name": "Ning Boxiangcai Store",
"country": "BR",
"url": "https://www.mercadolivre.com.br/pagina/ningboxiangcaistore",
"totalListings": 388,
"listingsDelivered": 150,
"listingsComplete": true,
"reputation": "5_green",
"reputationLevel": 5,
"powerSellerStatus": "silver",
"isOfficialStore": false,
"officialStoreId": null,
"storeSlug": null,
"salesText": "+1000 vendas",
"followersText": "+500",
"inputValue": "3413781093",
"scrapedAt": "2026-10-28T04:30:00.000Z"
}
{
"type": "listing",
"position": 1,
"itemId": "MLB5103948957",
"productId": "MLB2043925233",
"title": "Enfeite Natalino Pendente Papai Noel Balão",
"url": "https://www.mercadolivre.com.br/kit-10-enfeites-de-madeira-penduraveis-de-natal-8-cm/p/MLB2043925233",
"price": 20.28,
"originalPrice": null,
"discountPct": null,
"currency": "BRL",
"installments": null,
"freeShipping": false,
"isFull": false,
"sellerName": "Ning Boxiangcai Store",
"cardSellerLabel": "AIRAY",
"isOfficialStore": false,
"rating": 3.7,
"soldText": null,
"soldQuantity": 500,
"isAd": false,
"categoryId": "MLB117799",
"domainId": "MLB-CHRISTMAS_DOLLS",
"thumbnail": "https://http2.mlstatic.com/D_NQ_NP_886641-CBT115126914884_082026-O.webp",
"country": "BR",
"sellerId": "3413781093",
"sellerNickname": "ningboxiangcaistore",
"officialStoreId": null,
"inputValue": "3413781093",
"scrapedAt": "2026-10-28T04:29:41.000Z"
}
FieldMeaning
typeseller, listing or (failed input) error
sellerId / nickname / nameSeller identity. nickname is the slug of the seller page (/pagina/{nickname})
totalListings / listingsDeliveredActive listings the site reports for the seller vs rows delivered in this run
listingsCompletefalse when the run stopped early: spending limit, a page kept failing, the site stopped serving pages, or a catalog the site would not let us split. The site's own counts are not exact, so a shortfall of up to 10 listings (or 1%) still counts as complete
reputation / reputationLevelReputation thermometer as the site names it (5_green ... 1_red) and its 1-5 level
powerSellerStatusMercadoLider tier: silver, gold, platinum or empty
isOfficialStore / officialStoreId / storeSlugOfficial store flag, ID and store address slug (/loja/... or /tienda/...)
salesText / followersTextSales tier and followers as shown on the product page (+1000 vendas, +100 mil ventas)
price / originalPrice / discountPct / currencyCurrent price, crossed-out price, discount %, currency (BRL, MXN, ARS, COP, CLP)
installments / freeShipping / isFullInstallment plan, free shipping and Fulfillment (Full) flags
soldQuantity / soldText / ratingUnits sold and rating, when the listing card shows them
itemId / productId / url / categoryIdIDs and canonical link
sellerId / sellerNickname / officialStoreId (listing rows)The seller of the listing. In an official store, listing rows carry sellerId: null plus officialStoreId and sellerNickname (the store slug); the sellerId is on the seller row
sellerName / cardSellerLabelName of the seller page, and the label printed on the card (a brand or "official store" tag, which can differ)
inputValueThe line you entered, so rows can be joined back to your list
errorOnly on failed inputs. Not charged

How to use it

  1. Put one seller per line in Sellers or official stores (up to 50). Any of these forms works, and countries can be mixed:
    • a numeric seller ID (3413781093),
    • a nickname (ningboxiangcaistore; if there is no seller page with that name the actor also tries an official store of that name),
    • a seller page link (.../pagina/ningboxiangcaistore),
    • an official store link (.../loja/electrolux in Brazil, .../tienda/oster-mexico in the Spanish-language sites),
    • a listing page link that contains _CustId_,
    • the link or ID of any listing or product of the seller (MLB5258671363). Product (/p/...) links point to the catalog winner unless they carry the listing (item_id, wid) or the seller (seller_id) in the link, so they may resolve to a different seller than the one you meant. The same seller entered twice (for example an ID and its nickname, or two of its listings) is read and billed once; the repeat is skipped.
  2. Pick the Country for plain IDs and nicknames. Links use the country of their domain.
  3. Set Max listings per seller (default 500, up to 20,000).
  4. Keep Include seller profile on to get reputation and tier. Turn it off for a listings-only run.
  5. Run and export to CSV, Excel or JSON, or schedule it weekly to watch a competitor's assortment and prices.
InputTypeDefaultNotes
sellersarray of strings— (required)Up to 50; IDs, nicknames, seller/store links or any listing of the seller
countryBR, MX, AR, CO, CLBRUsed only for plain IDs and nicknames
maxItemsPerSellerinteger5001 to 20,000; above ~2,000 the catalog is split
includeProfilebooleantrueOff = listings plus basic seller fields, no seller-profile charge

Pricing

Pay per event: a small start fee, one seller-profile event per seller whose profile was read, and one listing event per listing delivered. Rows with an error, invalid input, blocked pages and sellers that could not be found are never charged, and the run stops at the maxTotalChargeUsd budget you set on Apify. When the budget runs out the actor still writes the seller row of every seller it already read (listingsComplete: false for the one that was cut) and skips the profile reads. If Apify migrates the run to another server, sellers already finished are not read or billed again. Residential proxies in the chosen country are included.

EventPrice
Actor start$0.02 per run
Listing delivered$0.0015 each ($1.50 per 1,000)
Seller profile read$0.01 per profile
ScenarioApproximate cost
1 seller, 500 listings + profile$0.78
10 sellers, 500 listings each + profiles$7.62
1 official store with 20,000 listings + profile$30.03

Run it from code

Replace <YOUR_APIFY_TOKEN> with your token from Apify Console → Settings → API & Integrations.

cURL (waits for the run and returns the items):

curl -X POST "https://api.apify.com/v2/acts/gangary~mercado-libre-seller-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"sellers": ["3413781093"], "country": "BR", "maxItemsPerSeller": 500, "includeProfile": true}'

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("gangary~mercado-libre-seller-scraper").call(
run_input={"sellers": ["https://www.mercadolibre.com.mx/tienda/oster-mexico"], "maxItemsPerSeller": 500}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("type") == "listing":
print(item["itemId"], item.get("price"), item.get("title"))

Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('gangary~mercado-libre-seller-scraper').call({
sellers: ['3413781093'],
country: 'BR',
maxItemsPerSeller: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const seller = items.find((row) => row.type === 'seller');
console.log(seller, items.filter((row) => row.type === 'listing').length);

The synchronous endpoint waits up to 300 seconds; for big stores (thousands of listings) start the run asynchronously and read the dataset when it finishes.

Integrations

Everything below is built into Apify, no extra setup on our side:

  • Schedules: run the same sellers weekly or daily to follow their prices and new listings.
  • Webhooks: get a call to your own endpoint when a run finishes.
  • Make, n8n and Zapier: send the listings to Google Sheets, a database or your CRM.
  • Google Drive: drop each run's export into a shared folder.
  • Exports: JSON, CSV, Excel, XML or HTML from the dataset, or straight from the API.

Use with AI agents (MCP)

Apify runs a hosted MCP server, so Claude, Cursor, VS Code and other MCP clients can call this actor as a tool. Add this server URL to your client (it signs in with OAuth on first use, or send Authorization: Bearer <YOUR_APIFY_TOKEN>):

https://mcp.apify.com?tools=gangary/mercado-libre-seller-scraper

Then ask in plain words, e.g. "Get every listing of the Oster official store on Mercado Libre Mexico and tell me which categories they sell most." Setup details for each client: Apify MCP server docs.

FAQ

How does it get past the 2,000-result limit? Mercado Livre never shows more than 2,016 results (42 pages of 48) for any listing. When a seller has more, the actor reads the category and price filters of the seller's own page, splits the catalog into parts that fit under the limit, reads each part page by page and removes duplicates by listing ID. It only splits when you ask for more than the limit, so small runs stay cheap.

Why does a seller row have fewer listings than totalListings? Either you set a lower Max listings per seller, or the seller changes stock while the run is going (the count is read once at the start). listingsComplete tells you whether the run stopped for another reason.

Is the seller phone, e-mail or address included? No. The actor only collects data the site shows publicly on seller pages and listings. Seller location is not part of the public profile any more.

Why do some inputs come back as seller-not-found? The nickname, ID or store does not exist in that country (the site silently turns a wrong nickname into a text search, which the actor detects and rejects). Check the country, or paste the seller page link.

Is proxy included? Yes. A residential IP of the seller's country is used automatically. Nothing to configure.

Does it use any login or API? No. It reads the same public pages a shopper sees, with a real browser.

What if I enter the same seller twice? It is read and billed once. An ID and its nickname, or two listings of the same seller, are recognized as the same seller and the repeat is skipped.

Can I cap what a run costs? Yes. The run stops at the Max total charge you set on Apify. The seller rows of sellers already read are still written, and the seller that was cut comes back with listingsComplete: false.

Can I get only the listings, without the profile? Yes. Turn off Include seller profile: you get the listings plus basic seller fields and no seller-profile charge.

Honest limitations

  • Only listings that are active and visible in the seller's public listing page are returned. Paused listings and private data are not reachable.
  • The profile (reputation, tier, followers) comes from one product page of the seller, so it is a snapshot of that moment. Sellers with no active listing come back without a profile.
  • Counts and amounts such as +1000 vendas are the rounded tiers the site publishes, not exact figures.
  • The full list of offers of a catalog product, and anything behind a login, is not delivered.
  • Official stores that group several seller accounts are returned as a store (isOfficialStore: true). Their listing rows have sellerId: null and carry officialStoreId plus sellerNickname (the store slug); the sellerId is only on the seller row, read from one of the store's listings.
  • Only Brazil, Mexico, Argentina, Colombia and Chile are supported. Peru, Uruguay and other Mercado Libre sites are not.
  • Sellers with a catalog that cannot be split by the site's filters stop at 2,016 listings and are flagged with listingsComplete: false.
  • Huge catalogs can come back a few listings short of the count the site shows (the site's count moves while the run is going): in a cloud run, Nike's official store (2,068 listings, above the 2,016 cap) returned 2,058 after being split by category.

Changelog

  • 0.1.4 (2026-10-28): first public release. A seller entered twice is read once, /p/ links from Argentina, Colombia and Chile find the seller, and a seller that does not exist is an error row with no charge.

From the same maker


If this actor helped you, a rating on its Store page helps others find it. Something broke or a field is missing? Open an issue on the actor's Issues tab.

Keywords: mercado livre seller scraper, mercado libre vendedor scraper, espiar concorrente mercado livre, scraper loja oficial mercado livre, mercado libre tienda oficial scraper, extraer publicaciones de un vendedor, reputación vendedor mercado libre, competitor analysis mercado libre, mercadolider, latam e-commerce scraper.