BuildNot yet confirmed elsewhere1 publisher2 min readPublished
Mercado Libre puts the product ID of sponsored results only in a pdp_filters query parameter
Four of ten rows in a Mercado Libre search were sponsored ad-counter links that hold the product ID only in a query parameter, a scraper author reported. Path readers get no ID from them, and the page's /up/ links defeated the author's own router.
The Engineer · Build desk
Bar comparison of rows by link shape in the first 10 rows of the author's run: paid placements (ad-counter links), 4 rows; /up/ links, 4 rows; classic links, 2 rows.
Rows per link shape in the first 10 rows of the author's run In rows
| Item | Value | Claim |
|---|---|---|
| Paid placements (ad-counter links) | 4 rows | 7 |
| /up/ links | 4 rows | 16 |
| Classic links | 2 rows | 16 |
What happened
- Positions 5, 7, 8 and 10 used a /up/MLAU... path whose identifier is neither the item ID nor the catalog product ID that older /p/MLA... pages use.
- Positions 6 and 9 used the classic articulo.mercadolibre.com.ar/MLA-2815639876-... listing URL that existing regexes already handle.
- Plain HTTP hit Mercado Libre's 41 KB login wall, and the author's scraper switched to a browser on its own.
Why it matters
- decision Dedupe on the extracted ID. Two ad impressions of one product carry different a= blobs, so string comparison counts them as different products.
- cost Sponsored rows were 40% of the first ten results, and the author writes that "counting ads as rank is the most common way to get a chart that means nothing."
- constraint No single pattern covers the page. The /p/, hyphenated, wid=, pdp_filters and /up/ forms do not all identify the same object.
The author, who builds Apify scrapers on the side [17], shows what a path reader sees on the sponsored rows. The href is a click1.mercadolibre.com.ar address under /mclics/clicks/external/MLA/count, followed by an a= blob he puts at about a kilobyte [2]. The product is nowhere in that path [3]. The identifier survives only in pdp_filters, URL-encoded as item_id%3AMLA3183930614 [3].
His fallback for those rows is a regex on item_id followed by either %3A or a plain colon. It is one of four fallbacks in the extraction chain [8]. The chain is ugly, and the author says so, calling it "the honest shape of the problem" [8].
The post reports two failures. Ad rows give a path reader no ID [3]. And the /up/ URL, whose identifier is neither an item ID nor a catalog ID [4], reached a router that did not know its shape. The post does not report a scraper attaching the wrong product to a row.
The router's default for an unrecognized shape is the listing branch. It opened a browser, found no product cards and wrote the error row [9]. The author says he will not defend the router. His fix is to teach idFromUrl the /up/MLAU shape [11]. Until that ships, he says to feed reviews mode the productId or itemId from the search rows, not the page URL. For the /up/ row in his sample that value is MLA2796328360 [11].
He does defend the error row. It is in the dataset, names the URL and is billed at zero [13]. He wrote: "A scraper that silently drops the inputs it could not read is worse than one that admits them, because the dataset still looks finished." [10] We would keep that default.
Treat the split as one sample. It comes from a single query on the Argentine storefront on 11 October 2026 [1], and the marketplace runs 18 storefronts, each on its own domain [18]. The rows the post lists add up to ten: four ad links, four /up/ links and two classic links [16]. That is three shapes. The author counts four [1], and the post does not say which row carries the fourth.
For the 4-4-2 split to carry over, the same ad placement and link templates would have to hold across other queries and other country domains. The ad host in the sample is the Argentine one [2].
What to watch
- Whether the author ships the idFromUrl change for /up/MLAU URLs, which would let reviews mode accept page URLs from search results again.
- Whether the same ad-counter and /up/ shapes appear on the other 17 storefronts, such as mercadolivre.com.br, and on queries other than zapatillas.
- Whether the author's fourth shape turns up in a published sample, since the ten rows he lists show only three.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence45
- Adoption
- Insufficient
- Hype gap+10
- Incentives35
- Confidence50
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
On 11 October 2026 the author ran a 10-result search for zapatillas on the Argentine site and got back four distinct URL shapes in ten rows.
- [2]
Positions 1 to 4 were all flagged isSponsored: true and linked to https://click1.mercadolibre.com.ar/mclics/clicks/external/MLA/count followed by an a= blob, with the real URL about a kilobyte long.
- [3]
The sponsored link is the ad click counter, not a product page. The product it points at is nowhere in the path; the only place the identifier survives is the pdp_filters query parameter, URL-encoded (item_id%3AMLA3183930614).
- [4]
Positions 5, 7, 8 and 10 used a /up/MLAU3637728744 path: site prefix MLA, then a literal U, then digits. It is not the item ID and not the catalog product ID (/p/MLA...) that older pages use.
- [5]
Positions 6 and 9 used the classic listing URL form, articulo.mercadolibre.com.ar/MLA-2815639876-zapatillas-skate-oversize-clasicas-livianas-_JM?searchVariation=189936656896.
- [6]
URLs cannot be used to dedupe: two ad impressions of the same product carry different a= blobs, so string comparison says they are different products. The author advises deduping on the extracted ID.
- [7]
In the author's run, 4 of the first 10 rows were paid placements. He wrote that counting ads as rank is the most common way to get a chart that means nothing; his actor ships isSponsored as a field and includeSponsored: false drops them at the source.
- [8]
The author's extraction is four fallbacks deep: idFromUrl for /p/MLA... or MLA-123... forms, a wid= regex, and an item_id(%3A|:) regex for ad redirects, combined into itemId. He says this looks ugly and is "the honest shape of the problem".
- [9]
When the author pasted a /up/MLAU... URL into reviews mode, his router did not recognise the shape and fell through to the listing-page branch, opened a browser, found no product cards, and wrote an error row: "no product cards on listing page", kind "listing".
- [10]
A scraper that silently drops the inputs it could not read is worse than one that admits them, because the dataset still looks finished.
- [11]
The author says he will not defend the router. The fix is to teach idFromUrl the /up/MLAU... shape; until it ships, feed reviews mode the productId/itemId that search rows already give, not the page URL. For the sample row that is MLA2796328360.
- [12]
One pattern cannot pull the ID: the author lists the /p/MLA... path form, the MLA-1234567890 hyphenated form, the wid= and pdp_filters=item_id: query forms, and the /up/MLAU... form, and says they do not all mean the same object.
- [13]
The error row is in the dataset, names the URL, and is billed at zero.
- [14]
In the logs, plain HTTP got Mercado Libre's login wall (41 KB of "ingresa a tu cuenta") and the browser took over automatically with no human intervention.
- [15]
Sponsored share of the first ten rows in the sample: 4 of 10, or 40%.
- [16]
The three shapes the post lists account for all ten rows: 4 ad-counter links (positions 1-4), 4 /up/ links (5, 7, 8, 10) and 2 classic links (6, 9), which is three shapes, not the four the author counts.
- [17]
The post's author says he runs a visa agency in Bali and spends the rest of his week on Apify scrapers, the newest of which reads Mercado Libre.
- [18]
Mercado Libre runs 18 separate storefronts across Latin America, each on its own domain and currency.
Sources
1 independent publisher whose own reporting we read for this story.
- dev.toTen Mercado Libre Results, Four Kinds of Link — and Only Two Carry the Product ID
1 article · October 11, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- Web ScrapingFollow
- URL parsing and identifier extractionFollow
- E-commerce marketplacesFollow