{
  "openapi": "3.0.1",
  "info": {
    "title": "jobs.ch & jobup.ch Scraper - Swiss Jobs, Salary & Pensum",
    "version": "0.1",
    "x-build-id": "rxtqhJKastPS59ksI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/aidnurs~jobs-ch-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-aidnurs-jobs-ch-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/aidnurs~jobs-ch-scraper/runs": {
      "post": {
        "operationId": "runs-sync-aidnurs-jobs-ch-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/aidnurs~jobs-ch-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-aidnurs-jobs-ch-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": "Keywords",
            "type": "string",
            "description": "What to search for: job title, skill or company (\"Data Engineer\", \"Pflege\", \"comptable\"). jobs.ch and jobup.ch show results only for a search term, so to browse a whole category use Start URLs instead.",
            "default": "python"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, canton or postcode in Switzerland, e.g. \"Zürich\", \"Genève\", \"Bern\", \"8001\". Leave empty for all of Switzerland."
          },
          "site": {
            "title": "Job board",
            "enum": [
              "both",
              "jobs.ch",
              "jobup.ch"
            ],
            "type": "string",
            "description": "jobs.ch (German-speaking Switzerland), jobup.ch (French-speaking Switzerland) or both. With both, a job posted on both boards is saved and charged once.",
            "default": "both"
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of jobs to save. You only pay for unique jobs saved to the dataset.",
            "default": 50
          },
          "startUrls": {
            "title": "Start URLs (optional)",
            "type": "array",
            "description": "Paste search or category pages from jobs.ch or jobup.ch with filters already set on the site, e.g. https://www.jobs.ch/de/stellenangebote/informatik-telekommunikation/?location=Z%C3%BCrich. When set, Keywords, Location and the filters below are ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "pensumMin": {
            "title": "Workload (Pensum) from, %",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Minimum workload in percent, e.g. 60 for part-time jobs of 60% and more. Leave empty for any."
          },
          "pensumMax": {
            "title": "Workload (Pensum) to, %",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum workload in percent, e.g. 80 to find part-time jobs only. Leave empty for any."
          },
          "postedWithinDays": {
            "title": "Posted within",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only jobs published in the last N days.",
            "default": ""
          },
          "language": {
            "title": "Page language",
            "enum": [
              "",
              "de",
              "fr",
              "en"
            ],
            "type": "string",
            "description": "Language of the job board pages and links (de, fr, en). jobup.ch has no German version and uses French instead. The job text stays in the language the employer wrote it in.",
            "default": ""
          },
          "includeDetails": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Open every job page to add the full description, salary (stated by the employer or the jobs.ch estimate), employment type, address, canton, apply link, industry and company rating.",
            "default": true
          },
          "includePersonalData": {
            "title": "Include personal data",
            "type": "boolean",
            "description": "Off by default: phone numbers and personal e-mails inside job texts are masked ([phone removed], [email removed]; role mailboxes like jobs@ or rh@ stay), and contact persons are not saved.<br><br>Turn it on to get everything the site shows publicly, including contact persons where the employer published them.<br><br>⚠️ This returns personal data. You're responsible for having a legal basis to collect and use it under privacy laws (e.g. GDPR, Swiss FADP).",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only new jobs since last run",
            "type": "boolean",
            "description": "Remember job IDs between runs and return only jobs you have not received yet. Ideal for scheduled runs and job alerts. Already-seen jobs are never charged.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name of the memory used by 'Only new jobs'. Use a different key for each saved search.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "jobs.ch and jobup.ch work without proxy. If the site starts blocking, the actor switches to Apify Proxy on its own.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}