{
  "openapi": "3.0.1",
  "info": {
    "title": "OCC Jobs Scraper",
    "description": "Extract real OCC Mexico job listings and full descriptions using public HTTP detail API requests. Includes verified source IDs, titles, locations, education, work modes and available salaries, with bounded parallelism and proxy analytics. No paid vendor API key required.",
    "version": "1.1",
    "x-build-id": "CZOP5CTBwDVX2QEmc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jobscrawler~occ-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jobscrawler-occ-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/jobscrawler~occ-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-jobscrawler-occ-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/jobscrawler~occ-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-jobscrawler-occ-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",
        "properties": {
          "keyword": {
            "title": "Search query",
            "type": "string",
            "description": "Job title or keywords to search for.",
            "default": "ingeniero de software"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state, or region to search in.",
            "default": "Ciudad de México"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Proxy country code (MX by default), not a claimed location stamped onto records.",
            "default": "MX"
          },
          "startUrl": {
            "title": "Start URL",
            "type": "string",
            "description": "Optional official HTTPS OCC /empleos/ search URL; its path/native filters override keyword/location. A supplied page is respected as the initial page.",
            "default": ""
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of job listings to scrape.",
            "default": 10
          },
          "proxyEnabled": {
            "title": "Enable Proxy",
            "type": "boolean",
            "description": "Use an authorized proxy route for regional access or connection reliability; it does not bypass access controls.",
            "default": true
          },
          "proxyMode": {
            "title": "Proxy mode",
            "enum": [
              "auto",
              "residential",
              "datacenter",
              "none"
            ],
            "type": "string",
            "description": "Auto prefers residential access, then Datacenter (SHADER). Route and HTTP response counts are saved in RUN_SUMMARY; no proxy credentials or IPs are logged.",
            "default": "auto"
          },
          "googleSearchFallbackEnabled": {
            "title": "Optional paid Google fallback",
            "type": "boolean",
            "description": "Off by default. If explicitly enabled in production, this calls another Apify Actor and incurs additional charges. Indexed results do not prove full live job access.",
            "default": false
          },
          "googleSearchMaxPages": {
            "title": "Google result pages",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Maximum paid Google results pages for a fallback (one page by default).",
            "default": 1
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "relevance",
              "date",
              "salary"
            ],
            "type": "string",
            "description": "Only the default relevance shortcut is supported. Use a native source startUrl for other sorting; unsupported shortcuts fail explicitly.",
            "default": "relevance"
          },
          "jobType": {
            "title": "Job Type",
            "type": "string",
            "description": "Reserved compatibility field. Leave empty; configure employment filters in a native source startUrl instead.",
            "default": ""
          },
          "experienceLevel": {
            "title": "Experience Level",
            "type": "string",
            "description": "Reserved compatibility field. Leave empty; configure experience filters in a native source startUrl instead.",
            "default": ""
          },
          "datePosted": {
            "title": "Date Posted",
            "enum": [
              "",
              "24h",
              "3d",
              "7d",
              "14d",
              "30d"
            ],
            "type": "string",
            "description": "Reserved compatibility field. Leave empty; configure recency in a native source startUrl instead.",
            "default": ""
          },
          "remoteOnly": {
            "title": "Remote Only",
            "type": "boolean",
            "description": "Leave false; the remoteOnly shortcut is not implemented. Use an actual OCC remote-search startUrl instead.",
            "default": false
          },
          "includeCompanyDetails": {
            "title": "Include Company Details",
            "type": "boolean",
            "description": "Extract additional company information when available.",
            "default": true
          },
          "includeSalary": {
            "title": "Include Salary",
            "type": "boolean",
            "description": "Extract salary/compensation details when available.",
            "default": true
          },
          "transport": {
            "title": "Transport",
            "enum": [
              "http",
              "browser"
            ],
            "type": "string",
            "description": "Default HTTP uses the actual public source listing and JSON detail API. Browser is an explicit alternative, never an automatic retry after a source denial.",
            "default": "http"
          },
          "detailConcurrency": {
            "title": "Parallel detail requests",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Bounded simultaneous public HTTP detail requests. Browser panels remain sequential.",
            "default": 3
          },
          "requestTimeoutSecs": {
            "title": "HTTP request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Maximum duration of each public HTTP request; no automatic retry after an HTTP denial.",
            "default": 25
          },
          "maxPages": {
            "title": "Maximum search pages",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Bounded number of native search pages, starting at the page in startUrl when supplied.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}