{
  "openapi": "3.0.1",
  "info": {
    "title": "Computrabajo Scraper - Jobs, Salaries & Company Reviews",
    "description": "Scrape Computrabajo jobs across 17 Latin American country portals by keyword or URL. Extract salaries, requirements, skills and apply links. Collect company profiles, employee ratings, reviews and comments. Supports job, company and evaluation URLs with incremental tracking.",
    "version": "0.1",
    "x-build-id": "4oSlrNxEfgRNdOebh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~computrabajo-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-computrabajo-jobs-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/abotapi~computrabajo-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-computrabajo-jobs-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/abotapi~computrabajo-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-computrabajo-jobs-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "urls"
            ],
            "type": "string",
            "description": "Keyword search walks the results pages of every selected country portal. Paste links routes each link by its shape: results pages walk forward, an offer link is always read in full, a company link emits the company, an evaluations link emits the company with its reviews.",
            "default": "search"
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords to search, for example ventas, contador, auxiliar administrativo. Each keyword runs on every selected country portal.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Country portals",
            "type": "array",
            "description": "Country portals to search. Every selected portal runs each keyword in the same run.",
            "items": {
              "type": "string",
              "enum": [
                "mx",
                "co",
                "pe",
                "ar",
                "cl",
                "ec",
                "bo",
                "uy",
                "py",
                "cr",
                "pa",
                "do",
                "gt",
                "sv",
                "hn",
                "ni",
                "ve"
              ],
              "enumTitles": [
                "México",
                "Colombia",
                "Perú",
                "Argentina",
                "Chile",
                "Ecuador",
                "Bolivia",
                "Uruguay",
                "Paraguay",
                "Costa Rica",
                "Panamá",
                "Rep. Dominicana",
                "Guatemala",
                "El Salvador",
                "Honduras",
                "Nicaragua",
                "Venezuela"
              ]
            },
            "default": [
              "mx",
              "co",
              "pe",
              "ar",
              "cl",
              "ec"
            ]
          },
          "urls": {
            "title": "Links",
            "type": "array",
            "description": "Results, offer, company or evaluations links. Results pages walk forward (pagination), offer links are always read in full, company links emit the company profile, evaluations links emit the company plus its reviews.",
            "default": [
              "https://mx.computrabajo.com/trabajo-de-ventas",
              "https://mx.computrabajo.com/ofertas-de-trabajo/oferta-de-trabajo-de-gerenta-de-ventas-productos-educativos-en-jiutepec-63B83300B81B160061373E686DCF3405",
              "https://mx.computrabajo.com/empresas/ofertas-de-trabajo-de-izzi-2C8C25FF54A80ADE",
              "https://mx.computrabajo.com/empresas/evaluaciones-en-izzi-2C8C25FF54A80ADE"
            ],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch offer details",
            "type": "boolean",
            "description": "Read each offer's own page for the full description, requirements (education, experience, age), skill tags, structured salary, employer id and logo. Turning this off returns the faster results-page card shape.",
            "default": true
          },
          "fetchReviews": {
            "title": "Fetch company reviews",
            "type": "boolean",
            "description": "Read each collected company's employee evaluations (ratings, comments, sub-scores) and emit the company record with its reviews. Applies to both modes; a company with no published evaluations ships without them.",
            "default": true
          },
          "maxReviews": {
            "title": "Max reviews per company",
            "minimum": 0,
            "type": "integer",
            "description": "Upper bound on employee evaluations collected per company (evaluations serve 10 per page). 0 skips review collection entirely.",
            "default": 20
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on records (jobs + companies) for the whole run. The walk stops once it is reached.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Does NOT cap the run on its own: 0 or empty walks every results page and defers to Max items. A positive value bounds how many results pages each search or pasted results link walks.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The portals are geo-served: a residential exit in one Latin American country serves every portal reliably. Residential access requires a paid plan; on plans without it the run falls back to a backup connection and tells you in the log.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "MX"
            }
          },
          "resumeFromRunId": {
            "title": "Resume from run ID",
            "type": "string",
            "description": "A previous run's ID whose records are treated as already collected: they are seeded as seen and skipped this run."
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "Compare each record against the saved baseline and classify NEW / UPDATED / UNCHANGED / EXPIRED. Unchanged records are suppressed unless Emit unchanged is on. The 'posted N hours ago' recency text, rotating apply-link parameters and review counters are excluded from change detection; the keywords, countries, links and toggles you run with are part of the scope, so changing them starts a fresh baseline.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Optional name for the incremental baseline. Leave empty to derive it from the run's scope (keywords, countries, links, toggles); set the same key on every scheduled run to share one baseline."
          },
          "emitUnchanged": {
            "title": "Emit unchanged records",
            "type": "boolean",
            "description": "Also push records whose tracked fields did not change (changeType UNCHANGED) instead of suppressing them.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired records",
            "type": "boolean",
            "description": "After a complete scan, push records from the baseline that this run did not see (changeType EXPIRED, for example offers taken down). Never fires on a capped, resumed or partially failed walk.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Extra record fields excluded from change detection beyond the built-in volatile set (postedText, applyUrl, reviews, counters).",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "MCP connectors",
            "type": "array",
            "description": "Connector IDs to export the collected records to after the run (Apify MCP). Leave empty to skip the export.",
            "items": {
              "type": "string"
            }
          },
          "notionParentPageUrl": {
            "title": "Notion parent page URL",
            "type": "string",
            "description": "Parent page URL when one of the connectors is Notion."
          },
          "maxNotifyListings": {
            "title": "Max records per export",
            "minimum": 1,
            "type": "integer",
            "description": "Upper bound on records handed to each connector.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}