{
  "openapi": "3.0.1",
  "info": {
    "title": "Computrabajo LATAM Jobs Scraper",
    "description": "Extract job listings from Computrabajo across 19 LATAM countries with structured salary fields (min/max/currency/period), multi-country search in one run, delta monitoring, and webhook alerts.",
    "version": "0.0",
    "x-build-id": "m8AoMm5LL9KU4JcZQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/don.eich~computrabajo-latam/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-don.eich-computrabajo-latam",
        "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/don.eich~computrabajo-latam/runs": {
      "post": {
        "operationId": "runs-sync-don.eich-computrabajo-latam",
        "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/don.eich~computrabajo-latam/run-sync": {
      "post": {
        "operationId": "run-sync-don.eich-computrabajo-latam",
        "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 de operacion",
            "enum": [
              "SEARCH",
              "DIRECT",
              "MONITOR"
            ],
            "type": "string",
            "description": "SEARCH: descubrimiento completo + enriquecimiento. DIRECT: procesa URLs o IDs especificos. MONITOR: igual a SEARCH con filtro delta, emite solo nuevas/actualizadas/removidas.",
            "default": "SEARCH"
          },
          "keywords": {
            "title": "Palabras clave",
            "type": "array",
            "description": "Palabras clave de busqueda. Se normalizan a slug (espacios -> guiones, minusculas, sin tildes). Ejemplo: [\"desarrollador backend\", \"data analyst\"]. Cada keyword se cruza con cada pais seleccionado.",
            "items": {
              "type": "string"
            },
            "default": [
              "programador"
            ]
          },
          "countries": {
            "title": "Paises",
            "type": "array",
            "description": "Paises a consultar. Codigo ISO-2 en minusculas. Cada codigo mapea a {cc}.computrabajo.com.",
            "items": {
              "type": "string",
              "enum": [
                "ar",
                "bo",
                "cl",
                "co",
                "cr",
                "cu",
                "do",
                "ec",
                "gt",
                "hn",
                "mx",
                "ni",
                "pa",
                "pe",
                "pr",
                "py",
                "sv",
                "uy",
                "ve"
              ]
            },
            "default": [
              "co",
              "mx",
              "ar"
            ]
          },
          "locations": {
            "title": "Ubicaciones (slug de ciudad)",
            "type": "array",
            "description": "Filtro de ubicacion dentro del pais (slug de ciudad/departamento). Se anade como sufijo -en-{location} en la URL. Vacio = sin filtro. Ejemplo: [\"bogota-dc\", \"medellin\"].",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "workplaceTypes": {
            "title": "Modalidades de trabajo",
            "type": "array",
            "description": "Modalidad de trabajo. \"remote\" anade -en-remoto, \"hybrid\" anade -hibrido. \"any\" no anade sufijo.",
            "items": {
              "type": "string",
              "enum": [
                "any",
                "onsite",
                "remote",
                "hybrid"
              ]
            },
            "default": [
              "any"
            ]
          },
          "sortBy": {
            "title": "Ordenar por",
            "enum": [
              "relevance",
              "publicationtime",
              "salary"
            ],
            "type": "string",
            "description": "Criterio de orden. publicationtime es el mas util para modo MONITOR (ver lo mas nuevo primero y parar la paginacion temprano).",
            "default": "publicationtime"
          },
          "maxJobsPerQuery": {
            "title": "Maximo de ofertas por consulta",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximo de ofertas a procesar por combinacion keyword+pais. 0 = sin limite. Con sort publicationtime y modo MONITOR, el actor puede parar al encontrar el primer ID ya visto.",
            "default": 100
          },
          "startUrls": {
            "title": "URLs de inicio",
            "type": "array",
            "description": "URLs directas de busqueda o de oferta individual. Si se proveen, se ignoran keywords y countries. URL de oferta individual -> modo DIRECT automatico.",
            "items": {
              "type": "object"
            },
            "default": []
          },
          "includeCompanyDetails": {
            "title": "Incluir detalles de empresa",
            "type": "boolean",
            "description": "Incluye datos de la empresa (descripcion, website, redes, ratings de empleadores). No requiere requests adicionales (viene en el mismo JSON de detalle).",
            "default": true
          },
          "includeEmployeeReviews": {
            "title": "Incluir reviews de empleados",
            "type": "boolean",
            "description": "Incluye hasta 3 reviews de empleados. Desactivado por default para mantener el item limpio.",
            "default": false
          },
          "includeSalaryIntelligence": {
            "title": "Incluir salary intelligence",
            "type": "boolean",
            "description": "Incluye datos de salary intelligence de mercado (salarios minimo/maximo/promedio para cargos similares). Util para benchmarking salarial.",
            "default": false
          },
          "includeSkills": {
            "title": "Incluir skills",
            "type": "boolean",
            "description": "Incluye array de skills/competencias del objeto sk.sl.",
            "default": true
          },
          "webhookUrl": {
            "title": "URL de webhook",
            "type": "string",
            "description": "URL a la que se hace POST por cada nueva oferta (en MONITOR) o por cada oferta en SEARCH. Payload: el item completo como JSON. Vacio = no se envian webhooks.",
            "default": ""
          },
          "webhookBatchSize": {
            "title": "Tamano de batch del webhook",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Numero de items a acumular antes de enviar un batch al webhook. 1 = envio inmediato por cada item.",
            "default": 10
          },
          "deltaStoreName": {
            "title": "Nombre del KV store delta",
            "type": "string",
            "description": "Nombre del Key-Value Store de Apify para el modo MONITOR. Cambiar permite tener instancias de monitor independientes (ej. una por cliente).",
            "default": "computrabajo-delta"
          },
          "proxyConfiguration": {
            "title": "Configuracion de proxy",
            "type": "object",
            "description": "Configuracion de proxy. El sitio usa AWS ELB sin Cloudflare, por lo que proxies residenciales NO son necesarios en la mayoria de casos. Si hay 403 persistentes, activar Apify Proxy con grupo RESIDENTIAL.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxConcurrency": {
            "title": "Concurrencia maxima",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Numero maximo de requests simultaneos al HTML de listado. Los requests a la JSON API corren con concurrencia separada (hasta 10).",
            "default": 5
          },
          "requestDelay": {
            "title": "Delay entre requests (ms)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Delay en milisegundos entre requests al HTML de listado. Los requests a la JSON API no tienen delay (CDN cacheable).",
            "default": 500
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}