Skip to content
    ↑↓ to choose · Enter to open

    · 12 min read

    MercadoLibre Product Scraper: 17 Data Fields per Record (2026)

    By CrawlerBros Engineering Team

    A thousand results cost $2.00 on the free-plan price, and each record carries 17 output fields including the product ID, current price in MXN, and seller name. This collector uses a hardcoded MX-residential proxy pool to handle account-verification block walls while rotating session IDs across 5 different browser-impersonate profiles. Records can also carry the original price, discount percentage, and shipping label when the listing shows them; fields a listing lacks are omitted.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 2,500 results at $0.002 each before platform usage. Open MercadoLibre Product Scraper on Apify and run the prefilled example.

    How reliable is MercadoLibre Product Scraper in production?

    Across the last 30 days of public runs on the Apify platform, MercadoLibre Product Scraper recorded 56 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 56 100.0%
    Failed 0 0.0%
    Aborted by the user 0 0.0%
    Timed out 0 0.0%
    Total 56 100.0%

    No run failed or timed out in the last 30 days. Keep a retry and an alert on scheduled runs all the same: a clean month is a record, not a guarantee.

    What does it cost to run MercadoLibre Product Scraper?

    Each result costs $0.002 on Apify's free plan, which is $2.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.002 $2.00
    BRONZE $0.00167 $1.67
    SILVER $0.00133 $1.33
    GOLD $0.001 $1.00
    PLATINUM $0.001 $1.00
    DIAMOND $0.001 $1.00

    Worked example: collecting 10,000 results costs $20.00 in result charges before run-start fees and platform usage. No run failed or timed out in the last 30 days, so the list price is a fair budget; keep a retry in place all the same.

    The maxItems control has the largest effect on your bill because you are charged for each result written to the dataset. The cheapest way to test your query is to use the example input cap of 5 items, which costs at most $0.01 in result charges.

    How do you run MercadoLibre Product Scraper from the API?

    None of its 7 controls is strictly required, so the defaults below produce a valid run on their own. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for MercadoLibre Product Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~mercadolibre-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"country":"MX","searchQuery":"iphone","condition":"any","maxItems":5}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "country": "MX",
      "searchQuery": "iphone",
      "condition": "any",
      "maxItems": 5
    }
    
    run = client.actor("crawlerbros~mercadolibre-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "country": "MX",
      "searchQuery": "iphone",
      "condition": "any",
      "maxItems": 5
    }
    
    const run = await client.actor('crawlerbros~mercadolibre-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which MercadoLibre Product Scraper inputs matter, and which can you skip?

    The searchQuery and condition controls are the primary fields for defining your results. Most practitioners should leave the country set to MX and only use startUrls if they need to override the structured price and condition filters with a direct URL.

    • country (string): MercadoLibre country site to scrape. Currently only Mexico (MX) is supported reliably from Apify's residential proxy pool - AR/BR/other LATAM markets are heavily anti-bot gated and were removed because they return blocked stub pages on every retry. Default: "MX".
    • searchQuery (string): Free-text keyword. Required if startUrls is empty.
    • condition (string): Filter by item condition. Default: "any".
    • priceMin (integer): Minimum price in the country's local currency.
    • priceMax (integer): Maximum price in the country's local currency.
    • startUrls (array): Direct MercadoLibre API search URLs. If set, overrides structured filters.
    • maxItems (integer): Maximum items to return. Default: 50.

    Fixed-choice controls: country accepts MX (Mexico); condition accepts any, new, used.

    What does MercadoLibre Product Scraper return?

    The returned records provide structured visibility into current market pricing and product metadata. They do not contain any information that is not available on the public product listing page.

    • id: string - ✓ - MercadoLibre item ID (e.g. MLM1018500855)
    • title: string - ✓ - Product title
    • url: string - ✓ - Full product URL
    • countryCode: string - ✓ - Always MX
    • scrapedAt: string - ✓ - UTC ISO 8601 scrape timestamp
    • price: number - - - Current price in MXN
    • originalPrice: number - - - Strikethrough / original price (before discount)
    • currency: string - - - Always MXN
    • currencySymbol: string - - - Currency symbol as displayed on the site
    • discountPercentage: number - - - Percentage off (0-100)
    • condition: string - - - new or used (refurbished items are mapped to used)
    • thumbnail: string - - - Product image URL
    • sellerName: string - - - Seller / brand name
    • brand: string - - - Brand attribute
    • shippingLabel: string - - - Shipping badge text (e.g. Envío gratis)
    • rating: number - - - Seller or product star rating
    • reviewsCount: number - - - Number of reviews

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open MercadoLibre Product Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set the searchQuery to a product keyword like "iphone" or provide a list of search URLs in the startUrls array.
    2. Choose between new, used, or any in the condition selector to filter by item state.
    3. Define the price range using priceMin and priceMax in MXN to target specific market segments.
    4. Configure maxItems between 1 and 1000 to manage the total records written to the dataset.
    5. Check the results for the id field, which should contain a valid identifier such as MLM1018500855.
    6. Inspect the scrapedAt field to confirm the UTC ISO 8601 timestamp for the run.
    7. Verify that the price and currency fields are populated to ensure successful extraction of monetary data.

    How do you apply it? Three worked playbooks

    These are MercadoLibre Product Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Price monitoring

    Outcome: Daily runs to track Mexico market prices

    Configure: Set searchQuery to "iphone" and maxItems to 50, then save this as an Apify schedule.

    Working method: Run the Actor daily and compare the price and originalPrice fields in the new dataset against previous runs to detect price fluctuations.

    Deliverable: A historical price log in CSV format showing price changes over time for specific product IDs.

    Stop condition: The price field is consistently omitted from results for items that were previously priced.

    Use case 2: Refurbished-market analysis

    Outcome: Filter condition=used to map the secondary market

    Configure: Set condition to "used" and provide a targeted keyword in the searchQuery.

    Working method: Collect listings and use the price field to calculate the average discount for used goods by comparing it to the originalPrice attribute.

    Deliverable: A secondary market report detailing the average depreciation rate for products in a specific category.

    Stop condition: The condition field in the output contains "new" despite the input filter being set to "used".

    Use case 3: Trend research

    Outcome: Ingest product names and prices across major keywords

    Configure: Enter a broad category keyword in searchQuery and set maxItems to 500.

    Working method: Analyze the reviewsCount and rating fields across the returned dataset to identify products with high engagement in the Mexico market.

    Deliverable: A market trend report identifying brands based on the sellerName and brand attributes.

    Stop condition: The reviewsCount field is missing from more than 80% of the returned product records.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 0.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    If you hit the 1,000 item limit, you should use priceMin and priceMax to split your search into smaller price brackets.

    When should you not use MercadoLibre Product Scraper?

    Do not use this Actor if you require data from Argentina, Brazil, or other LatAm markets, as they are removed from the input because they return hard-block stub responses. If you need to monitor luxury resale trends across Europe, use the Vestiaire Collective Scraper instead. For projects requiring global marketplace coverage including the US or UK, eBay Items Scraper is the more appropriate tool. If your target is specific to Central European classifieds, look at the Bazos.cz / Bazos.sk / Bazos.at / Bazos.pl Scraper.

    What should you check before trusting the output?

    • Monitor the dataset for any mercadolibre_blocked record indicating that the residential proxy pool is currently blocked.
    • Verify that the price field is a non-null number for every product record where pricing is present on the site.
    • Check that the countryCode is consistently MX to ensure regional data integrity.
    • Alert if the rating or reviewsCount fields are missing across a large batch of products that usually display them.
    • Stop the schedule if the scraper returns zero results for a known searchQuery that previously returned data.

    None of this proves a record is correct. It gives a scheduled MercadoLibre Product Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What is the exact cost per 1,000 results?

    The free-plan price is $2.00 per 1,000 results, which works out to $0.002 per result. Apify's free plan includes $5.00 of monthly usage, allowing you to extract up to 2,500 results for free before platform usage charges. Paid plans on Apify offer even lower per-result costs.

    Why is only Mexico supported?

    MercadoLibre anti-bot measures are country-specific. These countries were removed to prevent the Actor from shipping a configuration that always fails, leaving Mexico as the only reliably supported market.

    How does the scraper bypass anti-bot blocks?

    The Actor uses a hardcoded MX-residential proxy pool and rotates session IDs up to 6 times per run. It uses 5 different browser-impersonate profiles, including Chrome and Firefox.

    What does the 'mercadolibre_blocked' record mean?

    On rare occasions when the entire residential proxy pool is blocked, the Actor emits a mercadolibre_blocked sentinel record with the reason and timestamp. This prevents a hard failure and informs you that the residential IPs are currently being gated by the marketplace security systems.

    How many fields are included in the JSON output?

    These include the item ID, title, URL, price, original price, discount percentage, condition, thumbnail, seller name, brand, shipping label, rating, and reviews count. Missing fields are omitted from the record rather than being returned as null.

    Where to go next

    When you are ready to run it, open MercadoLibre Product Scraper on Apify; the free plan covers up to 2,500 results a month.

    Start with the MercadoLibre Product Scraper Actor page for the current input schema, pricing tier, and run history.

    If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-25.

    • Actor last updated by its maintainers on 2026-05-01.

    • Run outcome figures cover the 30 day public window ending 2026-09-25.

    • MercadoLibre Product Scraper on Apify

    Featured actors

    MercadoLibre Product Scraper

    Scrape products from MercadoLibre across Mexico. Returns product title, price, currency, condition, seller, thumbnail, and permalink.

    Run on Apify ↗