{
  "openapi": "3.0.1",
  "info": {
    "title": "SwissDevJobs.ch Scraper - Swiss Tech & Developer Jobs",
    "description": "Scrapes developer and IT job listings from SwissDevJobs.ch. Filter by 25+ technologies (Python, JavaScript, Go, etc.), experience level, remote/hybrid options, company size, and visa sponsorship. Built for tech recruiters.",
    "version": "3.6",
    "x-build-id": "ko3rERbFPrQYhpwA1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/santamaria-automations~swissdevjobs-ch-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-santamaria-automations-swissdevjobs-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/santamaria-automations~swissdevjobs-ch-scraper/runs": {
      "post": {
        "operationId": "runs-sync-santamaria-automations-swissdevjobs-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/santamaria-automations~swissdevjobs-ch-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-santamaria-automations-swissdevjobs-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": {
          "searchQueries": {
            "title": "Search Queries",
            "type": "array",
            "description": "Keywords to look for, one per entry (for example \"python\", \"devops engineer\"). Each query is matched case-insensitively against the job title (all words must be present, in any order; a query word also matches longer words that start with it). A job matching several queries is returned once, tagged with the first matching query. Leave empty to get all jobs.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxResultsPerQuery": {
            "title": "Max Results per Query",
            "minimum": 1,
            "type": "integer",
            "description": "Cap per search query when searchQueries is used. Results are split round-robin across queries so one query cannot starve the others. Ignored without searchQueries. If Max Total Results is 0, the total cap is this value times the number of queries.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "Order in which jobs are processed and returned. SwissDevJobs.ch does not expose a server-side sort parameter; sorting is applied client-side using the pubDate field from the RSS feed.",
            "default": "newest"
          },
          "directUrls": {
            "title": "Direct Job URLs",
            "type": "array",
            "description": "List of job detail page URLs to scrape directly (skips search). Use this for 'still alive' checks or re-scraping specific jobs.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "technology": {
            "title": "Technology Category",
            "enum": [
              "",
              "C-C++",
              "C#.NET",
              "Data",
              "Golang",
              "Java",
              "JavaScript",
              "Mobile",
              "PHP",
              "Python",
              "Ruby",
              "SAP",
              "System",
              "DevOps",
              "IT",
              "Database",
              "QA-Test",
              "ML-AI",
              "Security",
              "Network",
              "GameDev",
              "Blockchain",
              "UX-UI",
              "Architect",
              "Business",
              "Manager",
              "Support",
              "Rust",
              "Hardware",
              "No-Code"
            ],
            "type": "string",
            "description": "Filter by technology/job category. Leave empty for all technologies.",
            "default": ""
          },
          "location": {
            "title": "Location",
            "enum": [
              "",
              "remote",
              "Zurich",
              "Aarau",
              "Baden",
              "Basel",
              "Bern",
              "Biel",
              "Chur",
              "Fribourg",
              "Geneva",
              "Olten",
              "Lausanne",
              "Liechtenstein",
              "Lugano",
              "Luzern",
              "Schaffhausen",
              "Sion",
              "Solothurn",
              "St-Gallen",
              "Thun",
              "Winterthur",
              "Zug"
            ],
            "type": "string",
            "description": "Filter by city/region. Leave empty for all locations.",
            "default": ""
          },
          "experienceLevel": {
            "title": "Experience Level",
            "enum": [
              "",
              "Junior",
              "Regular",
              "Senior",
              "Lead"
            ],
            "type": "string",
            "description": "Filter by required experience level",
            "default": ""
          },
          "jobType": {
            "title": "Job Type",
            "enum": [
              "",
              "Full-Time",
              "Part-Time",
              "Freelance",
              "Internship"
            ],
            "type": "string",
            "description": "Filter by employment type",
            "default": ""
          },
          "companySize": {
            "title": "Company Size",
            "enum": [
              "",
              "<50",
              "50-200",
              "200-500",
              "500-1k",
              "1k-5k",
              "5k+"
            ],
            "type": "string",
            "description": "Filter by company size",
            "default": ""
          },
          "companyType": {
            "title": "Company Type",
            "enum": [
              "",
              "Product",
              "Agency",
              "Startup"
            ],
            "type": "string",
            "description": "Filter by company type",
            "default": ""
          },
          "workplace": {
            "title": "Workplace",
            "enum": [
              "",
              "Remote",
              "Hybrid",
              "Office"
            ],
            "type": "string",
            "description": "Filter by workplace type",
            "default": ""
          },
          "language": {
            "title": "Required Language",
            "enum": [
              "",
              "English",
              "French",
              "German"
            ],
            "type": "string",
            "description": "Filter by required language",
            "default": ""
          },
          "visaSponsorship": {
            "title": "Visa Sponsorship",
            "type": "boolean",
            "description": "Only show jobs offering visa sponsorship for non-EU residents",
            "default": false
          },
          "preferredTechnologies": {
            "title": "Preferred Technologies",
            "type": "array",
            "description": "Additional technology filters within the selected category (e.g., 'Angular', 'React', 'NodeJS' within JavaScript). These refine the results beyond the main Technology Category.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxResults": {
            "title": "Max Total Results",
            "minimum": 0,
            "type": "integer",
            "description": "Total cap on results across all queries. Set to 0 for unlimited (with searchQueries: maxResultsPerQuery x number of queries).",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max Concurrent Detail Fetches",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of parallel workers fetching detail pages. Higher = faster, but heavier on proxy quota. Capped at 20.",
            "default": 8
          },
          "includeJobDetails": {
            "title": "Include Job Details",
            "type": "boolean",
            "description": "When true (default), fetches each job's detail page to extract full description, salary, requirements, and technologies. When false, returns RSS-level fields only (title, URL, posted date) without any detail-page requests — faster and uses no proxy quota.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}