ActorStack.dev

Product pages cost about 40 times a listing row, so decide before the run

Which fields only exist on product pages, what turning on `scrapeDetail` does to a run's page loads and its bill, and how to get the enriched fields for only the rows that need them.

By Oswaldo Carabano6 min read

Short answer

Turning on `scrapeDetail` multiplies a Mercado Libre run's browser page loads by about 40 and is billed as a separate event at $0.018 per enriched row on the Free plan, against $0.0045 for a listing row. What that buys is a set of fields that exist on no marketplace's listing pages at all: rating, reviews count, location, stock ranges, attributes, seller identity, description, images, brand, warranty and the Venezuelan dual price. The efficient pattern is two passes — a cheap listing sweep to decide which items matter, then a second run over those specific product URLs through `startUrls`, which pays the detail rate only on rows that earned it.

Key points

  • Turning on `scrapeDetail` multiplies browser page loads by about 40, because each listing row becomes its own page fetch.
  • A product page is billed at $0.018 on the Free plan against $0.0045 for a listing row, and only when the page actually opened.
  • Rating, reviews, location, stock ranges, attributes, seller identity and the dual price appear on no marketplace's listing pages, so they cannot be obtained more cheaply.
  • A failed detail fetch returns the listing row at the listing rate rather than charging for a page that produced nothing.
  • Two passes — a listing sweep to select rows, then a detail run over those specific URLs — pays the detail rate only on the rows that earned it.
On this page5 sections

One switch changes a run's cost by more than an order of magnitude. It is worth understanding before it is worth setting.

What a product page adds

rating, reviews_count, location, sold_quantity_text, available_quantity_text, attributes, seller_id, description, images, brand, sku, availability, breadcrumb, warranty_text — and the Venezuelan dual price.

None of these appear on listing pages on any marketplace. Competing Actors that promise them from listings return null.

What it costs in loads and in money

Without detail, one page load yields up to 48 listing rows. With it, every row needs its own product page — about 40 times the browser page loads for the same number of results. The billing follows the work: $0.0045 per listing row on the Free plan against $0.018 per enriched row, falling to $0.0011 and $0.0095 on Gold and above.

What happens when a detail fetch fails

You get the listing row and pay the listing rate. The detail event is charged only when the page actually opened and produced its fields, which is the same rule that governs pages lost to the anti-bot wall.

The two-pass pattern

Run a cheap listing sweep first. Decide from it which items actually matter — the top 200 by price, the ones from a particular seller, the ones that changed since last week. Then run a second job with those product URLs in startUrls, which are scraped as detail pages.

Pass 2 — enrich only the rows that earned it
{
  "siteId": "MLA",
  "startUrls": [
    { "url": "https://articulo.mercadolibre.com.ar/MLA-1234567890" },
    { "url": "https://articulo.mercadolibre.com.ar/MLA-1234567891" }
  ],
  "maxItems": 200
}

Deciding which one you need

Price monitoring, assortment tracking and competitor catalogues run entirely on listing rows. Rating, stock and attribute work needs detail. If you are unsure, start without it — a listing run is cheap enough to throw away and a detail run over a whole catalogue is not.

Frequently asked questions

Why is scrapeDetail so much more expensive?
Because it changes the unit of work. Without it, one page load yields up to 48 listing rows; with it, each row needs its own product page fetch, which is about 40 times the browser page loads for the same number of results.
Can I get ratings without scraping product pages?
No. Rating, reviews count, location, stock ranges, attributes and seller identity are absent from listing pages on every one of the seventeen marketplaces, so there is no cheaper route to them within Mercado Libre's public pages.
Am I charged if a product page fails to open?
No. A failed detail fetch returns the listing row and is charged at the listing rate, because the product page produced nothing. The detail event is only charged when the page actually opened and yielded its fields.
What is the two-pass pattern?
Run a cheap listing sweep first and decide from it which items are worth enriching, then run a second job over those specific product URLs through `startUrls`. That pays the product-page rate only on the rows that earned it rather than on the whole catalogue.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 18 Sept 2026
    Mercado Libre Scraper & API — Actor README and input schemaActorStack / Apify Store
  2. Platform docschecked 18 Aug 2026
    Actor pricing modelsApify
  3. Platform docschecked 18 Aug 2026
    Dataset storageApify
Aerial view of a Latin American city centre at night, streets picked out in light.
Mercado LibreGuide

How to scrape Mercado Libre

A working method for extracting listings and product pages from any of the 17 Mercado Libre marketplaces, including the two decisions — pagination and detail pages — that decide what a run costs.

9 min
A laptop screen showing a plain text-mode terminal with a command prompt.
Mercado LibreComparison

API alternative

The official Mercado Libre API requires OAuth and returns 403 to an anonymous request. A comparison of what the API gives an authorised caller, what scraping gives anyone, and which fields exist in only one of the two.

7 min
A laptop screen showing a plain text-mode terminal with a command prompt.
Mercado LibreExplainer

item_id and link shapes

Mercado Libre results mix `articulo.…/MLA-…`, `/p/MLA…` and `/up/MLAU…` links. Deriving the item id from the URL looks fine until the third shape appears, which can be nearly half a page.

5 min