{
  "openapi": "3.0.1",
  "info": {
    "title": "MercadoLibre Products Scraper",
    "description": "Scrape MercadoLibre and Mercado Livre products in 18 countries: price, discount, sold count, seller, shipping, ratings, full product sheet, reviews and Q&A. Keywords or URLs, every site filter, new products and price changes only.",
    "version": "0.0",
    "x-build-id": "ffxwEvr6Y9tEjmo3g"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~mercadolibre-products-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-mercadolibre-products-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/nice_dev~mercadolibre-products-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-mercadolibre-products-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/nice_dev~mercadolibre-products-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-mercadolibre-products-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Start URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "MercadoLibre / Mercado Livre URLs of any of the 18 countries: search results (`https://listado.mercadolibre.com.mx/laptop`, every filter set on the site is kept), category pages, product pages (`/p/MLM…`, `/up/MLMU…`, `articulo.mercadolibre…/MLM-…-_JM`), official stores (`/tienda/<name>`, Brazil `/loja/<name>`), seller listings (`_CustId_<id>`), deals (`/ofertas`) and best sellers (`/mas-vendidos`, Brazil `/mais-vendidos`). The country is read from each URL. When this list is not empty, the keyword fields below are ignored; filters, caps and monitoring still apply. Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "query": {
            "title": "Search keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Free-text search, exactly as typed on the site (e.g. `notebook`, `iphone 15`)."
          },
          "searchQueries": {
            "title": "More search keywords",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several keywords in one run: one search per keyword (times each country below). Added to **Search keyword**; products found by several searches are saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "productIds": {
            "title": "Product ids",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Single products to read, by id: catalog product `MLB12345678`, seller product `MLMU1234567890` or listing `MLA1234567890` (also written `MLA-1234567890`). The 3 letters give the country (MLA Argentina, MLB Brazil, MLM Mexico, MLC Chile, MCO Colombia, MPE Peru, MLU Uruguay, MEC Ecuador, MLV Venezuela, MBO Bolivia, MPY Paraguay, MRD Dominican Republic, MCR Costa Rica, MPA Panama, MGT Guatemala, MHN Honduras, MSV El Salvador, MNI Nicaragua). Max 1 000.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country site",
            "enum": [
              "ar",
              "bo",
              "br",
              "cl",
              "co",
              "cr",
              "do",
              "ec",
              "gt",
              "hn",
              "mx",
              "ni",
              "pa",
              "pe",
              "py",
              "sv",
              "uy",
              "ve"
            ],
            "type": "string",
            "description": "MercadoLibre site the keywords are searched on. Prices come in its currency. URLs and ids keep their own country.",
            "default": "br"
          },
          "countries": {
            "title": "More country sites",
            "maxItems": 18,
            "uniqueItems": true,
            "type": "array",
            "description": "Several country sites in one run, as the 2-letter codes of **Country site** (`mx`, `ar`, `co`…): every keyword is searched on every site (3 keywords × 4 countries = 12 searches, max 500). Added to **Country site**.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of products to save for the whole run (after deduplication and filters). 0 = no limit.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max products per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap for EACH search (keyword × country, or search URL), so that the first search cannot use up the whole **Max products** budget. 0 = no per-search cap.",
            "default": 0
          },
          "splitByPrice": {
            "title": "Go past 2,000 results per search",
            "type": "boolean",
            "description": "MercadoLibre shows at most about 2,000 products per search. When a search has more, the Actor splits it into price ranges (each one under the limit) and reads them all, so a broad search returns everything. Off = the first 2,000 only. No extra charge. Not with **Condition**: the site drops the condition when a price range is added, so a search with a condition stays at about 2,000 results (paste a category URL to get more).",
            "default": true
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Order of the search results, as on the site. The site has no 'newest' order: use **Only new products** below.",
            "default": "relevance"
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "used",
              "refurbished"
            ],
            "type": "string",
            "description": "Only new, used or refurbished products.",
            "default": "any"
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "number",
            "description": "Only products from this price, in the currency of the country site (R$, MXN, ARS…)."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "number",
            "description": "Only products up to this price, in the currency of the country site. 0 = no maximum."
          },
          "minDiscountPercent": {
            "title": "Min discount (%)",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Only products whose price is reduced by at least this share (5 to 90 %), as the site filters it."
          },
          "freeShippingOnly": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only products with free shipping. The site's own filter (Envío gratis); on Mercado Livre Brazil, where the site has no reliable one, the Actor checks each product instead (a product that does not show free shipping is left out).",
            "default": false
          },
          "fullShippingOnly": {
            "title": "FULL only",
            "type": "boolean",
            "description": "Site filter 'FULL': products stored and shipped by Mercado Libre's own warehouses (faster delivery).",
            "default": false
          },
          "officialStoresOnly": {
            "title": "Official stores only",
            "type": "boolean",
            "description": "Site filter 'Official stores' (Tiendas oficiales / Lojas oficiais): brands and authorised resellers.",
            "default": false
          },
          "interestFreeOnly": {
            "title": "Interest-free installments only",
            "type": "boolean",
            "description": "Site filter 'Interest-free installments' (Meses sin intereses / Parcelamento sem juros).",
            "default": false
          },
          "bestSellersOnly": {
            "title": "Best sellers only",
            "type": "boolean",
            "description": "Site filter 'Best sellers' (MercadoLíder sellers: Mejores vendedores / Melhores vendedores).",
            "default": false
          },
          "includeSponsored": {
            "title": "Include sponsored products",
            "type": "boolean",
            "description": "Keep the products the site shows as ads in the search results (`isSponsored` = true). Off = drop them.",
            "default": true
          },
          "extractDetails": {
            "title": "Full product details",
            "type": "boolean",
            "description": "Read each product's page: full description, all specifications, every photo, variations (color, size…) with price and stock, stock left, warranty, returns, payment methods, category path, other sellers of the same product (count and lowest price), and the seller's profile (MercadoLíder level, reputation, sales, followers, official store).",
            "default": false
          },
          "includeReviews": {
            "title": "Buyer reviews",
            "type": "boolean",
            "description": "Add each product's buyer reviews (rating, text, date, buyer country, likes, photos) and the rating breakdown by star. Charged per review delivered.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Reviews kept per product, in the order chosen in Reviews order.",
            "default": 20
          },
          "reviewSort": {
            "title": "Reviews order",
            "enum": [
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "Order the reviews are read in, as on the site: most helpful first, or newest first.",
            "default": "relevance"
          },
          "reviewMinRating": {
            "title": "Reviews: min stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only the reviews with at least this many stars (1-5). Empty = all."
          },
          "reviewMaxRating": {
            "title": "Reviews: max stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only the reviews with at most this many stars, e.g. 2 for the complaints. Empty = all."
          },
          "includeQuestions": {
            "title": "Questions and answers",
            "type": "boolean",
            "description": "Add the buyers' questions on each product with the seller's answer and its date. Charged per question delivered.",
            "default": false
          },
          "maxQuestionsPerProduct": {
            "title": "Max questions per product",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Questions kept per product, newest first. Read 40 at a time.",
            "default": 40
          },
          "includeMarketStats": {
            "title": "Add market statistics per search",
            "type": "boolean",
            "description": "Adds one record, `MARKET_STATS`, to the run's key-value store (Output tab): one sheet per search, worked out from the products of this run — number of results the site announces, price minimum, median and quartiles, average discount, shares with free shipping / FULL / official store / interest-free installments, top sellers and brands, units sold. Brands are given by the product page only: without Full product details the brand list stays empty. A search needs at least 10 products delivered; products pasted by URL or id belong to no search. Charged per search delivered (event `market-stats`); unticked (default) = nothing.",
            "default": false
          },
          "minRating": {
            "title": "Min rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only products rated at least this (out of 5). Products without a rating are dropped."
          },
          "minSoldCount": {
            "title": "Min units sold",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only products with at least this many units sold, as the site shows it ('+5 mil vendidos' counts as 5000)."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the products whose title contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new products",
            "type": "boolean",
            "description": "Skip the products that a previous run (same **Memory key**) already delivered: they are not saved and not charged, and their page is not even opened. First run = everything is new.",
            "default": false
          },
          "includePriceChanges": {
            "title": "Also products whose price changed",
            "type": "boolean",
            "description": "With **Only new products**: also return the products already delivered whose price went up or down since the last row delivered (`changeType` = `price_drop` / `price_rise`, with `previousPrice` and `priceChangePercent`). Charged per price change delivered (event `price-change`).",
            "default": false
          },
          "minPriceChangePercent": {
            "title": "Min price change (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "With **Also products whose price changed**: a product comes back only if its price moved by at least this many percent.",
            "default": 3
          },
          "stateKey": {
            "title": "Memory key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new products**. Give each schedule / task its own key (e.g. `notebooks-br`) so that they do not share their memory. Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget everything remembered under this **Memory key** before the run: this run returns (and charges) every product again. Untick it afterwards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Keep the default: the Actor uses its own residential proxy of each country, included in the price (MercadoLibre turns away data-center IPs). Your own proxies: they must be residential and in the country of the site. The residential Apify proxy is not available in this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum number of pages read in parallel.",
            "default": 4
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 600,
            "type": "integer",
            "description": "Most pages read from the site in any 60 seconds, all of them counted: search pages, product pages, review and question pages. Lower it if the log shows the site turning requests away.",
            "default": 60
          },
          "minRequestIntervalMs": {
            "title": "Min delay between requests",
            "minimum": 0,
            "maximum": 60000,
            "type": "integer",
            "description": "Smallest gap between two requests, in milliseconds. 0 = no gap.",
            "default": 0
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed. A page the site turns away is also retried in a new browser session with a new IP, up to 10 times, without using up these retries; a page refused on its own while the session reads the others is given up after 3 sessions.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Include debug messages in the run log.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}