{
  "openapi": "3.0.1",
  "info": {
    "title": "Jobs.ch & Jobup.ch Scraper (Switzerland)",
    "description": "Scrape jobs.ch and jobup.ch: the same list as the site page, both sites in one run, each job charged once. Full job pages included. Detects and refuses the different list the site silently serves to some addresses. Pay per job.",
    "version": "0.1",
    "x-build-id": "ArVu7E8D4NlnKMqyG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hexagone-data~jobs-ch-jobup-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hexagone-data-jobs-ch-jobup-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/hexagone-data~jobs-ch-jobup-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hexagone-data-jobs-ch-jobup-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/hexagone-data~jobs-ch-jobup-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hexagone-data-jobs-ch-jobup-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "jobs.ch or jobup.ch search results URLs exactly as your browser shows them, filters included (https://www.jobs.ch/en/vacancies/?term=engineer, https://www.jobs.ch/de/stellenangebote/?term=pflege&location=Bern, https://www.jobup.ch/fr/emplois/?term=vendeur, a category page such as https://www.jobs.ch/en/vacancies/admin-hr-consulting-ceo/legal-attorneys-court/), or job URLs (.../detail/<id>/). You can combine them with search terms.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Search words, one per line, e.g. engineer, notar, vendeur. Each one is searched on every site chosen below.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (search terms)",
            "type": "string",
            "description": "City or region as you would type it on the site, e.g. Basel, Lausanne, Zürich. Applies to search terms only: a pasted URL keeps its own filters."
          },
          "sites": {
            "title": "Sites (search terms)",
            "type": "array",
            "description": "Which sites the search terms are read on. A job published on both is delivered and charged once.",
            "items": {
              "type": "string",
              "enum": [
                "jobs.ch",
                "jobup.ch"
              ],
              "enumTitles": [
                "jobs.ch",
                "jobup.ch"
              ]
            },
            "default": [
              "jobs.ch",
              "jobup.ch"
            ]
          },
          "language": {
            "title": "Language (search terms)",
            "enum": [
              "en",
              "de",
              "fr"
            ],
            "type": "string",
            "description": "Language of the pages read. jobup.ch has no German pages: with German it is read in French, and the run says so. It changes the translated fields, never the original ad text.",
            "default": "en"
          },
          "publishedWithinDays": {
            "title": "Published in the last N days (search terms)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Leave empty for any time. Accepted: 1, 3, 7 or 30, like the site's filter."
          },
          "workloadMin": {
            "title": "Minimum workload % (search terms)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "For example 60: the site's minimum workload filter."
          },
          "workloadMax": {
            "title": "Maximum workload % (search terms)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "For example 80: the site's maximum workload filter."
          },
          "contractType": {
            "title": "Contract type (search terms)",
            "enum": [
              "permanent",
              "temporary",
              "freelance",
              "internship",
              "apprenticeship",
              "supplementary"
            ],
            "type": "string",
            "description": "Leave empty for any contract."
          },
          "maxItems": {
            "title": "Maximum number of jobs",
            "minimum": 0,
            "type": "integer",
            "description": "Stops after this many unique jobs across all start URLs and both sites. 0 = no limit. You pay per delivered job.",
            "default": 20
          },
          "includeDetails": {
            "title": "Read each job's full page",
            "type": "boolean",
            "description": "On by default and included in the price per job. Adds the ad text, translation, expiry date, address, languages and skills asked for, contacts published on the ad, apply method and link, employer salary, the site's salary estimate and company data. A job page read by an address the site classifies as suspect has no estimate: it is read again from another address. Off: faster, only the fields of the list (a pasted job URL still reads its job page).",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy by default, one sticky session kept while the site treats it as a normal visitor. A session the site classifies as suspect is replaced; after 5 in a row, the listing pages move to a Swiss residential proxy; the job pages never do, they try up to 10 sessions, then the job is delivered with salaryEstimateStatus not_read. If you turn the proxy off or give your own proxy URLs, your choice is respected and no fallback is used.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}