{
  "openapi": "3.0.1",
  "info": {
    "title": "MercadoLibre Scraper: Search, Products, Reviews, Q&A, Sellers",
    "description": "Scrape MercadoLibre and Mercado Livre in 18 Latin American countries. Paste a keyword or URL and get up to 2,000 search results per query, full product pages with specs and variations, product reviews, buyer Q&A, and seller catalogs. Optional product details on search rows.",
    "version": "0.0",
    "x-build-id": "6SPzhNfeqaocfkQwA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sourabhbgp~mercadolibre-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sourabhbgp-mercadolibre-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/sourabhbgp~mercadolibre-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sourabhbgp-mercadolibre-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/sourabhbgp~mercadolibre-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sourabhbgp-mercadolibre-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "product",
              "reviews",
              "seller"
            ],
            "type": "string",
            "description": "What to scrape. 'search' returns up to 2,000 organic results per keyword or search URL, in 18 countries. 'product' returns the full product page for each URL: price, brand, specs, variations, seller, warranty, top reviews and Q&A. 'reviews' returns the reviews of each product URL, one row per review. 'seller' returns a seller's catalog, one row per listing, plus a profile row for brand stores and shops.",
            "default": "reviews"
          },
          "country": {
            "title": "Country",
            "enum": [
              "MX",
              "AR",
              "BR",
              "EC",
              "DO",
              "CL",
              "CO",
              "PE",
              "UY",
              "BO",
              "CR",
              "GT",
              "HN",
              "NI",
              "PA",
              "PY",
              "SV",
              "VE"
            ],
            "type": "string",
            "description": "MercadoLibre country marketplace. Search mode (with or without product details), product mode and reviews mode work in all 18. MercadoLibre shows reviews in Mexico, Argentina, Brazil, Chile, Colombia, Peru, Uruguay, Ecuador and Venezuela; product pages in the Dominican Republic, Bolivia, Costa Rica, Guatemala, Honduras, Nicaragua, Panama, Paraguay and El Salvador have no reviews today, so a reviews run there ends with a 'No reviews' message and no charge. Seller mode works in every country except Costa Rica, where MercadoLibre currently shows no seller listings (the run says so and costs nothing). Pasted URLs use the country in the URL.",
            "default": "MX"
          },
          "productUrls": {
            "title": "Product URLs",
            "type": "array",
            "description": "One or more MercadoLibre product URLs or IDs. Used by 'reviews' and 'product' modes. Accepts catalog (.../p/MLM…), listing (.../up/MLMU…) and item (articulo.*/MLM-…) URLs, and plain IDs like MLM27172669. In 'reviews' mode, an item URL returns the listing's own reviews, or, when the listing belongs to a catalog product, the same reviews its catalog URL returns. In 'product' mode, car and motorcycle ads work too. The prefilled example is an iPhone product page in Mexico.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many rows to return. 0 means as many as available. Search: total results for the run, up to 2,000 per keyword or search URL. Product: product pages. Reviews: reviews per product, so 3 product URLs at 50 return up to 150 rows. Products with up to a few hundred reviews come back complete; the most reviewed products can return a couple of thousand unique reviews, because MercadoLibre limits how deep any review list can be read. Seller: total rows for the run, the profile row included, up to 2,000 listings per seller.",
            "default": 50
          },
          "reviewRating": {
            "title": "Review Rating Filter",
            "enum": [
              "all",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "In 'reviews' mode, scrape only reviews with this star rating. Leave it on 'all' (the default) to sweep every rating, both sort orders and each country's own review list, which returns the most unique reviews. Picking a single rating returns that bucket only, which is a much smaller set.",
            "default": "all"
          },
          "reviewOrder": {
            "title": "Review Sort Order",
            "enum": [
              "relevance",
              "dateCreated"
            ],
            "type": "string",
            "description": "Sort order for reviews. 'relevance' is MercadoLibre's helpfulness-ranked default; 'dateCreated' returns newest first. This applies when 'Review Rating Filter' is set to a specific rating (1-5). When the filter is 'all', the deep sweep already runs both sort orders in parallel, so the result is the same either way and this setting has no effect on how much you get.",
            "default": "relevance"
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Keyword to search, for example iphone 15. Returns up to 2,000 organic results (sponsored listings are left out). Only used in 'search' mode when no Start URLs are provided."
          },
          "scrapeProductDetails": {
            "title": "Scrape Product Details For Each Result",
            "type": "boolean",
            "description": "Search mode: open each result's product page and add description, image gallery, seller reputation, stock, attributes, breadcrumbs, warranty, returns, shipping type, features and star breakdown to the row. Off by default; runs take longer. Until October 8, 2026 the price per result stays the same. From October 8, 2026 it is a paid add-on charged on top of each Search result, only for rows whose product page was read. See the Pricing tab.",
            "default": false
          },
          "sellerUrls": {
            "title": "Seller URLs",
            "type": "array",
            "description": "One or more sellers: a seller's listings URL (https://listado.mercadolibre.com.mx/_CustId_95428411), a brand store (https://www.mercadolibre.com.mx/tienda/phone-depot, or /loja/ on Brazil), a shop page (/pagina/...), a seller profile URL (/perfil/NICKNAME), a numeric seller ID, or a plain seller nickname. A brand store returns that store's listings; the other forms return all of the seller's listings. Brand stores and shops also return one profile row.",
            "items": {
              "type": "string"
            }
          },
          "includeSellerProfile": {
            "title": "Include Seller Profile Row",
            "type": "boolean",
            "description": "When enabled, adds one profile row per brand store or shop before its listings: followers, logo, banner, date created, tags, brand info, section menu, free trial dates and compliance flags (moderations, debts, restrictions). Sellers without a store or shop page return listings only. The profile row counts toward Max Items.",
            "default": true
          },
          "includeFeaturedItems": {
            "title": "Include Featured Corridor Items",
            "type": "boolean",
            "description": "No longer used: seller mode ignores this setting. Kept so saved inputs that still send it keep working.",
            "default": false
          },
          "maxItemsPerSeller": {
            "title": "Max Items Per Seller",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Per-seller cap on catalog rows. 0 = derived automatically from Max Items (divided across input sellers). Set explicitly for batch runs where you want, e.g., 100 items × 20 sellers regardless of the global cap.",
            "default": 0
          },
          "includeReviews": {
            "title": "Include Inline Reviews",
            "type": "boolean",
            "description": "In 'product' mode, include the top 5 reviews shown on the product page. For every review, use 'reviews' mode.",
            "default": true
          },
          "includeQuestions": {
            "title": "Include Q&A",
            "type": "boolean",
            "description": "In 'product' mode, include buyer questions and seller answers from the product page, up to 20 per product.",
            "default": true
          },
          "includeVariations": {
            "title": "Include Variations",
            "type": "boolean",
            "description": "In 'product' mode, include all product variations (color/size/storage).",
            "default": true
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Direct URLs to scrape, from any of the 18 supported marketplaces. Match the URLs to the mode: search or category URLs (or plain keywords) in search mode, product URLs in product or reviews mode, seller URLs in seller mode. The country is read from each URL. In search mode, when Start URLs are given the search keyword is not used, and if none of them can be read the run stops with a message and charges nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 24,
            "type": "integer",
            "description": "How many pages are fetched at the same time. 8 is a safe default. Raise it for large reviews batches if runs feel slow. Capped at 24; search and seller mode use at most 12, product mode at most 8.",
            "default": 8
          },
          "useResidentialProxy": {
            "title": "Allow extra retry route for reviews",
            "type": "boolean",
            "description": "Leave this on. Product, search and seller modes always use their own retry route. In reviews mode this lets the actor retry a refused request through a different route. There is no extra charge either way: you pay only per result.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}