{
  "openapi": "3.0.1",
  "info": {
    "title": "MercadoLibre Scraper (Español)",
    "description": "Extrae páginas de producto, reseñas de compradores, preguntas y respuestas, y perfiles de tienda de MercadoLibre en 9 países de LATAM, todo en un solo Actor.",
    "version": "1.0",
    "x-build-id": "wosuvakrfrCwpm4sH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parsebird~mercadolibre-scraper-espanol/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parsebird-mercadolibre-scraper-espanol",
        "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/parsebird~mercadolibre-scraper-espanol/runs": {
      "post": {
        "operationId": "runs-sync-parsebird-mercadolibre-scraper-espanol",
        "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/parsebird~mercadolibre-scraper-espanol/run-sync": {
      "post": {
        "operationId": "run-sync-parsebird-mercadolibre-scraper-espanol",
        "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": "Modo",
            "enum": [
              "reviews",
              "product",
              "seller"
            ],
            "type": "string",
            "description": "Qué extraer. 'reviews' devuelve reseñas paginadas de un producto en los 9 marketplaces de LATAM. 'product' devuelve todos los campos de la página de producto (título, precio, marca, atributos, variaciones, vendedor, reseñas incluidas, preguntas y respuestas). 'seller' devuelve el perfil de la tienda de un vendedor.",
            "default": "reviews"
          },
          "country": {
            "title": "País",
            "enum": [
              "MX",
              "AR",
              "BR",
              "EC",
              "DO",
              "CL",
              "CO",
              "PE",
              "UY"
            ],
            "type": "string",
            "description": "Marketplace de MercadoLibre por país. Los nueve sitios de Latinoamérica son compatibles con todos los modos (reviews, product, seller). El país seleccionado enruta el proxy residencial a IPs del mismo país en el modo 'product' y define el dominio correcto para las URLs generadas. Las ejecuciones que no encuentran resultados para un país no se cobran por resultado.",
            "default": "MX"
          },
          "productUrls": {
            "title": "URLs de producto",
            "type": "array",
            "description": "Una o más URLs de producto de MercadoLibre. Se usan en los modos 'reviews' y 'product'. Acepta tanto URLs de catálogo (.../p/MLM…) como de artículo (articulo.*/MLM-…). El ejemplo precargado es la ficha de un iPhone en MLM.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Máximo de elementos",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Cantidad máxima de elementos a devolver. 0 = sin límite. Product: fichas de producto; Reviews: reseñas POR PRODUCTO, así que 3 URLs de producto con 50 devuelven hasta 150 filas (el techo práctico para un producto muy popular es ~900, porque MercadoLibre limita la paginación de un solo bucket a un offset de 300). No se usa en el modo 'seller' (siempre una fila de perfil por URL de vendedor).",
            "default": 50
          },
          "reviewRating": {
            "title": "Filtro de calificación de reseñas",
            "enum": [
              "all",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "En el modo 'reviews', extrae solo reseñas con esta calificación en estrellas. El valor predeterminado 'all' activa la estrategia de barrido profundo — 12 consultas simultáneas combinando calificación y orden — para recuperar el máximo de reseñas únicas por producto (hasta ~950 en productos populares frente a ~330 con un solo bucket).",
            "default": "all"
          },
          "reviewOrder": {
            "title": "Orden de las reseñas",
            "enum": [
              "relevance",
              "dateCreated"
            ],
            "type": "string",
            "description": "Orden de las reseñas. 'relevance' es el orden predeterminado de MercadoLibre según utilidad; 'dateCreated' devuelve las más recientes primero. Esto aplica cuando 'Filtro de calificación de reseñas' tiene una calificación específica (1-5). Cuando el filtro es 'all', el barrido profundo ya combina ambos órdenes en paralelo, así que devuelve el mismo conjunto completo de resultados y esta opción no cambia la cantidad obtenida.",
            "default": "relevance"
          },
          "sellerUrls": {
            "title": "URLs de vendedor",
            "type": "array",
            "description": "Una o más URLs de tiendas de vendedores: tiendas de marca (https://www.mercadolibre.com.mx/tienda/phone-depot), tiendas de marca en Brasil (https://www.mercadolivre.com.br/loja/samsung), o e-shops independientes (.../pagina/...). Cada vendedor genera una fila de perfil con seguidores, fechas, banner, información de marca y menú de categorías. No compatible en Argentina (framework de tienda diferente).",
            "items": {
              "type": "string"
            }
          },
          "includeReviews": {
            "title": "Incluir reseñas destacadas",
            "type": "boolean",
            "description": "En el modo 'product', incluye las 5 reseñas principales desde el JSON-LD de la página. Las reseñas completas y paginadas requieren el modo 'reviews'.",
            "default": true
          },
          "includeQuestions": {
            "title": "Incluir preguntas y respuestas",
            "type": "boolean",
            "description": "En el modo 'product', incluye preguntas de compradores y respuestas del vendedor (hasta 20 por producto) desde la página dedicada de preguntas de la publicación.",
            "default": true
          },
          "includeVariations": {
            "title": "Incluir variaciones",
            "type": "boolean",
            "description": "En el modo 'product', incluye las variaciones del producto (color/talla/capacidad) cuando la publicación las tiene.",
            "default": true
          },
          "startUrls": {
            "title": "URLs de inicio",
            "type": "array",
            "description": "URLs directas a extraer. Acepta URLs de producto (tanto .../p/MLM… como articulo./MLM-…) o URLs de tienda de vendedor (.../tienda/..., .../loja/..., .../pagina/...). Se admite pegar URLs completas — el país y el modo se detectan automáticamente. Alternativa a los campos de URL específicos de cada modo.",
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Concurrencia máxima",
            "minimum": 1,
            "maximum": 24,
            "type": "integer",
            "description": "Máximo de solicitudes en paralelo entre todas las combinaciones (producto × calificación × orden) en el modo 'reviews'. 8 es un valor seguro por defecto; auméntalo para lotes grandes (50+ productos) si notas que el rendimiento se estanca. Limitado a 24 para evitar los límites de velocidad de MercadoLibre.",
            "default": 8
          },
          "useResidentialProxy": {
            "title": "Usar proxy residencial (planes de pago)",
            "type": "boolean",
            "description": "Los modos 'reviews' y 'seller' funcionan sin proxy residencial. El modo 'product' siempre utiliza el pool residencial de Apify (según el país seleccionado) a través de un navegador real — esta opción es solo informativa para el modo 'product'. El tráfico residencial agrega la tarifa de uso de Apify de ~$8/GB, además del costo del Actor.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}