{
  "openapi": "3.0.1",
  "info": {
    "title": "📍 Monitor de Nuevos Negocios en Google Maps — Leads Locales",
    "description": "Sé el primero en contactar cada negocio que abre en una búsqueda de Google Maps. Vigila una búsqueda y cada ejecución devuelve solo los negocios que aparecieron por primera vez — clientes potenciales locales con teléfono, sitio web y email. Paga por lead nuevo, no por reescaneo.",
    "version": "0.1",
    "x-build-id": "Sj12uAmqTdr3QeonC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/paulovitor18~google-maps-monitor-nuevos-negocios/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-paulovitor18-google-maps-monitor-nuevos-negocios",
        "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/paulovitor18~google-maps-monitor-nuevos-negocios/runs": {
      "post": {
        "operationId": "runs-sync-paulovitor18-google-maps-monitor-nuevos-negocios",
        "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/paulovitor18~google-maps-monitor-nuevos-negocios/run-sync": {
      "post": {
        "operationId": "run-sync-paulovitor18-google-maps-monitor-nuevos-negocios",
        "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": {
          "search_term": {
            "title": "Término de búsqueda",
            "type": "string",
            "description": "Qué vigilar en Google Maps, exactamente como lo escribirías (ej. \"cafeterías\", \"clínicas dentales\", \"gimnasios\"). El monitor guarda el conjunto de negocios de esta búsqueda y, en cada ejecución, reporta solo los que aparecieron por primera vez.",
            "default": "restaurantes"
          },
          "location": {
            "title": "Ciudad / área",
            "type": "string",
            "description": "Ciudad y área a vigilar (ej. \"Madrid, España\", \"Ciudad de México\", \"Buenos Aires\"). El término de búsqueda + la ubicación juntos definen el monitor: cambiar cualquiera de los dos crea un monitor separado con estado aislado.",
            "default": "Madrid, España"
          },
          "max_results": {
            "title": "Tope de negocios vigilados",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "El monitor desplaza la búsqueda hasta el FINAL de la lista; esto es un tope de seguridad (Google Maps suele listar hasta ~120 por búsqueda). El delta es 100% confiable cuando el tope cubre toda la lista (el caso normal). Si la búsqueda es tan amplia que desborda el tope, en esa ejecución no se calculan los 'posibles cierres' (se indica en el resumen) para no dar falsas alarmas — en ese caso, acota el término + la ubicación. Cambiar el tope re-inicia la línea base (cambió la ventana vigilada).",
            "default": 120
          },
          "enrich_from_website": {
            "title": "Enriquecer los negocios nuevos desde su sitio web (email/teléfono, + CNPJ para negocios brasileños)",
            "type": "boolean",
            "description": "Para cada negocio NUEVO detectado, visita el sitio web (una vez) buscando email, redes sociales y — cuando el sitio publica un CNPJ brasileño en texto — lo valida y consulta el registro público (razón social, situación, tamaño, capital, actividad, socios). Es best-effort: si no se encuentra un contacto o CNPJ, el campo vuelve vacío y NO se te cobra el enriquecimiento.",
            "default": true
          },
          "max_new_hydrated": {
            "title": "Tope de negocios nuevos hidratados por ejecución",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Limita cuántos negocios NUEVOS abren su página de detalle y se enriquecen en cada ejecución (control de costo). El costo del monitor es proporcional al DELTA — en estado estable solo aparecen unos pocos negocios nuevos por día. El tope protege la primera ejecución del delta tras una búsqueda amplia. Lo que supera el tope NO se pierde y NO se cobra: entra en la ejecución siguiente. Abrir y enriquecer un negocio toma ~30s, así que subir este tope alarga la ejecución en la misma proporción.",
            "default": 5
          },
          "stateStoreName": {
            "title": "Nombre del almacén de estado (avanzado)",
            "type": "string",
            "description": "Déjalo vacío para que el monitor derive un nombre estable a partir del término de búsqueda + ubicación (cada monitor se aísla automáticamente). Rellénalo solo si quieres controlar explícitamente qué estado lee/escribe esta ejecución (ej. compartir un monitor entre varias programaciones).",
            "default": ""
          },
          "mode": {
            "title": "Modo",
            "enum": [
              "auto",
              "baseline"
            ],
            "type": "string",
            "description": "auto = la primera ejecución se vuelve la línea base y las siguientes reportan el delta. baseline = fuerza una nueva línea base (re-inicia el estado actual, sin cobrar por negocios nuevos) — úsalo para reiniciar el historial del monitor.",
            "default": "auto"
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Enrutamiento de red. El valor por defecto (Apify Proxy, datacenter rotativo) devolvió 200 en Google Maps sin captcha. Si ves bloqueo/consentimiento a volumen, selecciona Residential y un país cercano a tu área objetivo.",
            "default": {
              "useApifyProxy": true
            }
          },
          "self_test": {
            "title": "Modo diagnóstico (regresión del fixture-pack)",
            "type": "boolean",
            "description": "No usar en producción. Ignora la búsqueda y ejecuta la batería de known-answers del motor (parseo de feed congelado, búsqueda vacía, enriquecimiento del sitio, abstención honesta) para probar que el parser y el egress siguen correctos.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}