{
  "openapi": "3.0.1",
  "info": {
    "title": "MercadoLibre & Mercado Livre Scraper - 9 LATAM Markets",
    "description": "Scrape MercadoLibre / Mercado Livre across 9 LATAM marketplaces. Modes: search, product, reviews, questions, seller, category. API-first reliability with HTML fallback. MCP-ready.",
    "version": "0.1",
    "x-build-id": "Lvc2fbquSaCa2lajB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~mercadolibre-all-in-one-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-mercadolibre-all-in-one-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/khadinakbar~mercadolibre-all-in-one-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-mercadolibre-all-in-one-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/khadinakbar~mercadolibre-all-in-one-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-mercadolibre-all-in-one-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": {
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text keyword run against MercadoLibre search. Example: 'iphone 15 pro' or 'macbook air m3'. Used only when mode is 'search' or 'auto' with no startUrls. NOT a product URL or seller name - put those in startUrls."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Direct MercadoLibre URLs to scrape. Accepts: product pages (/p/MLA1234 or /MLA-1234567890-title), search-results URLs (listado.mercadolibre.com.ar/iphone), category URLs (mercadolibre.com.mx/c/celulares), seller pages (perfil.mercadolibre.com.ar/SELLERNAME), or 'MLA1234567890' raw item IDs. Mode is auto-detected from each URL when 'mode' is 'auto'. Mix and match countries freely.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "auto",
              "search",
              "product",
              "reviews",
              "questions",
              "seller",
              "category"
            ],
            "type": "string",
            "description": "What to extract. 'auto' picks based on the URL (search/category URL -> listing; product URL -> product; seller URL -> seller). Use an explicit mode to force behavior - 'reviews' or 'questions' on a product URL pulls those instead of the product itself, 'seller' on a product URL pulls the seller catalog. NOT a search filter - that lives in 'searchQuery' and 'condition'.",
            "default": "auto"
          },
          "country": {
            "title": "Country / marketplace",
            "enum": [
              "MX",
              "BR",
              "AR",
              "CL",
              "CO",
              "PE",
              "UY",
              "EC",
              "DO"
            ],
            "type": "string",
            "description": "LATAM marketplace to query when running by searchQuery. Each country has a site ID: AR=MLA, BR=MLB, MX=MLM, CL=MLC, CO=MCO, PE=MPE, UY=MLU, EC=MEC, DO=MRD. Ignored when startUrls is provided - country is taken from each URL's domain. Defaults to MX (largest by GMV).",
            "default": "MX"
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on total records emitted to the dataset across all start URLs and search pages. Each record is a billable event. Example: 100 returns up to 100 search cards or 100 reviews; for product-mode the actor returns 1 record per product URL. Default 100, max 10000.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort order (search & category modes)",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "newest"
            ],
            "type": "string",
            "description": "Result ordering for search and category modes. 'relevance' is MercadoLibre default. 'price_asc' / 'price_desc' sort by listed price. 'newest' shows recently listed. Ignored for product/reviews/questions/seller modes.",
            "default": "relevance"
          },
          "condition": {
            "title": "Item condition (search & category modes)",
            "enum": [
              "any",
              "new",
              "used"
            ],
            "type": "string",
            "description": "Filter listings by condition. 'any' returns both new and used. 'new' shows only first-hand products. 'used' shows only second-hand. Ignored outside search/category modes.",
            "default": "any"
          },
          "minPrice": {
            "title": "Min price (search & category modes)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price filter in the marketplace's local currency (ARS for AR, BRL for BR, MXN for MX, etc.). Example: 5000 on a BR run means BRL 5,000.00 minimum. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max price (search & category modes)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price filter in the marketplace's local currency. Example: 50000 on a MX run means MXN 50,000.00 maximum. Leave empty for no maximum."
          },
          "freeShipping": {
            "title": "Free shipping only (search & category modes)",
            "type": "boolean",
            "description": "When true, restricts results to listings with free shipping. Useful for dropshipping research and end-to-end price comparison. Defaults to false (all listings).",
            "default": false
          },
          "officialStoreOnly": {
            "title": "Official stores only (search & category modes)",
            "type": "boolean",
            "description": "When true, restricts results to listings from MercadoLibre Official Stores (brand-verified sellers). Useful for cleaner data when scraping for brand analytics. Defaults to false.",
            "default": false
          },
          "extendedDetails": {
            "title": "Fetch full product detail for every search result",
            "type": "boolean",
            "description": "When true and mode is 'search' or 'category', the actor follows each result to its product API and returns the full product object (attributes, variations, pictures, descriptions) instead of just the card data. Cost rises proportionally - each detail is a billable result. Defaults to false (card data only).",
            "default": false
          },
          "includeReviews": {
            "title": "Include reviews when fetching products",
            "type": "boolean",
            "description": "When true and mode is 'product', the actor also pulls reviews for each product (separate records, charged per review). Combine with maxResults to cap. Defaults to false.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy configuration. Defaults to Apify Proxy with country-pinned residential IPs matching each requested marketplace. Override only if you have a specific need.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}