{
  "openapi": "3.0.1",
  "info": {
    "title": "OCC Mexico Jobs Scraper: Empleos México con Filtros y Salario",
    "description": "Scrape OCC Mundial (occ.com.mx) empleos in México: filter by 32 states, city, 23 job areas, salary, remote or hybrid and education. Clean salary numbers, real posted dates, optional full details, new-postings monitor. Export JSON, CSV, Excel. Ofertas de empleo, no login.",
    "version": "0.1",
    "x-build-id": "QQpkZAWnxEVaoRa8F"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~occ-mexico-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-occ-mexico-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/getascraper~occ-mexico-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-occ-mexico-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/getascraper~occ-mexico-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-occ-mexico-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": {
          "keywords": {
            "title": "Job keywords",
            "type": "array",
            "description": "Job titles, skills or company names to search for, one per row (for example: desarrollador, contador, ventas). Each keyword is searched separately and duplicates are removed. Leave empty to browse all postings using the filters below. Accents are optional.",
            "default": [
              "desarrollador"
            ],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "OCC search page URLs",
            "type": "array",
            "description": "Optional. Paste search pages copied from occ.com.mx (for example https://www.occ.com.mx/empleos/de-contador/en-jalisco/). Each page is collected with its own filters, and the filter fields in this form are not applied to pasted pages. Leave empty to search with the form.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "Only postings in these states. Pick several to search each one. Leave empty for all of Mexico.",
            "items": {
              "type": "string",
              "enum": [
                "aguascalientes",
                "baja-california",
                "baja-california-sur",
                "campeche",
                "chiapas",
                "chihuahua",
                "ciudad-de-mexico",
                "coahuila",
                "colima",
                "durango",
                "estado-de-mexico",
                "guanajuato",
                "guerrero",
                "hidalgo",
                "jalisco",
                "michoacan",
                "morelos",
                "nayarit",
                "nuevo-leon",
                "oaxaca",
                "puebla",
                "queretaro",
                "quintana-roo",
                "san-luis-potosi",
                "sinaloa",
                "sonora",
                "tabasco",
                "tamaulipas",
                "tlaxcala",
                "veracruz",
                "yucatan",
                "zacatecas"
              ],
              "enumTitles": [
                "Aguascalientes",
                "Baja California",
                "Baja California Sur",
                "Campeche",
                "Chiapas",
                "Chihuahua",
                "Ciudad de México",
                "Coahuila",
                "Colima",
                "Durango",
                "Estado de México",
                "Guanajuato",
                "Guerrero",
                "Hidalgo",
                "Jalisco",
                "Michoacán",
                "Morelos",
                "Nayarit",
                "Nuevo León",
                "Oaxaca",
                "Puebla",
                "Querétaro",
                "Quintana Roo",
                "San Luis Potosí",
                "Sinaloa",
                "Sonora",
                "Tabasco",
                "Tamaulipas",
                "Tlaxcala",
                "Veracruz",
                "Yucatán",
                "Zacatecas"
              ]
            },
            "default": []
          },
          "city": {
            "title": "City or municipality",
            "type": "string",
            "description": "Optional city or municipality name such as Guadalajara, Monterrey or Benito Juarez. Combined with the state when exactly one state is selected. If OCC does not know the name, no postings are returned.",
            "default": ""
          },
          "categories": {
            "title": "Job areas",
            "type": "array",
            "description": "Only postings in these OCC job areas, such as Sales or Information technology. Pick several to search each one. Leave empty for all areas.",
            "items": {
              "type": "string",
              "enum": [
                "administrativo",
                "arte-y-diseno",
                "atencion-a-clientes-call-center",
                "ciencias-sociales-humanidades",
                "comunicacion-y-creatividad",
                "construccion-inmobiliaria-arquitectura",
                "contabilidad-finanzas",
                "deportes-salud-belleza",
                "derecho-y-leyes",
                "educacion",
                "ingenieria",
                "logistica-transporte-distribucion-almacen",
                "manufactura-produccion-operacion",
                "mercadotecnia-publicidad-relaciones-publicas",
                "mineria-energia-recursos-naturales",
                "recursos-humanos",
                "sector-salud",
                "seguros-y-reaseguros",
                "servicios-generales-oficios-seguridad",
                "tecnologias-de-la-informacion-sistemas",
                "turismo-hospitalidad-gastronomia",
                "veterinaria-agricultura",
                "ventas"
              ],
              "enumTitles": [
                "Administrative",
                "Art and design",
                "Customer service and call center",
                "Social sciences and humanities",
                "Communication and creativity",
                "Construction, real estate and architecture",
                "Accounting and finance",
                "Sports, wellness and beauty",
                "Law",
                "Education",
                "Engineering",
                "Logistics, transport and warehouse",
                "Manufacturing and production",
                "Marketing, advertising and PR",
                "Mining, energy and natural resources",
                "Human resources",
                "Healthcare",
                "Insurance",
                "General services, trades and security",
                "Information technology",
                "Tourism, hospitality and food service",
                "Veterinary and agriculture",
                "Sales"
              ]
            },
            "default": []
          },
          "contractTypes": {
            "title": "Contract and hours",
            "type": "array",
            "description": "Only postings with these contract or working-hours types. Pick several to search each one. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "permanente",
                "tiempo-completo",
                "medio-tiempo",
                "temporal",
                "honorarios",
                "becario-practicas"
              ],
              "enumTitles": [
                "Permanent (indeterminado)",
                "Full time",
                "Part time",
                "Temporary",
                "Freelance (honorarios)",
                "Internship (becario / prácticas)"
              ]
            },
            "default": []
          },
          "workModels": {
            "title": "Work model",
            "type": "array",
            "description": "Only on-site, hybrid or remote postings. Pick several to search each one. Leave empty for all. Rows found with a single work model are labeled with it.",
            "items": {
              "type": "string",
              "enum": [
                "tipo-en-oficina",
                "tipo-home-office-mixto",
                "tipo-home-office-remoto"
              ],
              "enumTitles": [
                "On site",
                "Hybrid",
                "Remote (work from home)"
              ]
            },
            "default": []
          },
          "educationLevels": {
            "title": "Education level",
            "type": "array",
            "description": "Only postings that ask for this education level. Pick several to search each one. Leave empty for all levels.",
            "items": {
              "type": "string",
              "enum": [
                "nivel-secundaria",
                "nivel-bachillerato",
                "nivel-tecnico",
                "nivel-universitario-sin-titulo",
                "nivel-universitario-titulado",
                "nivel-posgrado"
              ],
              "enumTitles": [
                "Secondary school",
                "High school (bachillerato)",
                "Technical",
                "University, not graduated",
                "University graduate",
                "Postgraduate"
              ]
            },
            "default": []
          },
          "employerType": {
            "title": "Employer type",
            "enum": [
              "any",
              "named",
              "confidential"
            ],
            "type": "string",
            "description": "Choose whether to keep only postings from named employers or only from confidential employers (the company name is hidden by OCC). Useful to separate direct employers from recruiters hiding behind a confidential listing.",
            "default": "any"
          },
          "verifiedEmployersOnly": {
            "title": "Verified employers only",
            "type": "boolean",
            "description": "Keep only postings from employers carrying OCC's verified-company badge.",
            "default": false
          },
          "minSalary": {
            "title": "Minimum monthly salary (MXN)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only postings whose salary range reaches at least this monthly amount in pesos. OCC also keeps postings that hide the salary, so turn on the salary-only option to drop those. 0 means no minimum.",
            "default": 0
          },
          "maxSalary": {
            "title": "Maximum monthly salary (MXN)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only postings whose salary range starts at or below this monthly amount in pesos. 0 means no maximum.",
            "default": 0
          },
          "onlyWithSalary": {
            "title": "Only postings that show a salary",
            "type": "boolean",
            "description": "Drop postings where the employer hides the salary. Every row you keep then has numeric salary fields.",
            "default": false
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "0",
              "1",
              "2",
              "3",
              "7",
              "14",
              "30",
              "60"
            ],
            "type": "string",
            "description": "Only postings published within this period. OCC keeps postings for about two months.",
            "default": "any"
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first returns the most recent postings first, which is best when you limit the number of results. Relevance follows OCC's own ranking. Monitoring always uses newest first.",
            "default": "date"
          },
          "maxResults": {
            "title": "Maximum postings",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "How many postings to return in total. Raise it to collect more; large values take longer.",
            "default": 20
          },
          "includeDetails": {
            "title": "Add full posting details",
            "type": "boolean",
            "description": "Open every posting to add the full description, job area and subarea, minimum education, contract, working hours, work model, exact publication date and closing date. Slower and billed per posting with details.",
            "default": false
          },
          "monitorScope": {
            "title": "Monitor name",
            "type": "string",
            "description": "Give this search a name (for example cdmx-sales-remote) to turn on monitoring. The Actor remembers which postings it already delivered under that name and returns only postings it has not shown you before, newest first, so scheduled runs give you just what is new. For a daily schedule also set Posted within to the last 24 hours or 2 days. Use a different name for each saved search. Leave empty to return everything every time.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}