{
  "openapi": "3.0.1",
  "info": {
    "title": "Stepstone Jobs Scraper: Germany, Austria & Belgium",
    "description": "Scrape job postings from Stepstone (stepstone.de, .at, .be): search by keyword and city, or paste search links. Title, company, location, home office, salary (Stepstone's estimate flagged as such), snippet, benefits, dates. Only new jobs mode for daily runs.",
    "version": "0.1",
    "x-build-id": "7YJuSxolEschR4I5q"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/quarra~stepstone-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-quarra-stepstone-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/quarra~stepstone-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-quarra-stepstone-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/quarra~stepstone-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-quarra-stepstone-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": "Keywords",
            "type": "array",
            "description": "One job title or search word per line (data scientist, Pflegefachkraft, Buchhalter). C++ and C# work as written (write '.NET Developer', not '.NET' alone); a keyword with no letter or digit is refused. Stepstone lists at most 150 jobs per search: use several keywords and locations to go further.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Optional, one city or region per line (Berlin, München, Wien). A location with no keyword lists every job there. Leave empty to search the whole country. Write the city alone: what follows a comma ('Berlin, Deutschland') is not read by Stepstone and is left out.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "enum": [
              "de",
              "at",
              "be"
            ],
            "type": "string",
            "description": "Stepstone site used for the keywords and locations above. Links you paste keep their own site.",
            "default": "de"
          },
          "radiusKm": {
            "title": "Radius around the location (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Optional. Leave empty for 30 km, the radius of Stepstone's own search box; 0 = the city only. Used only with a location."
          },
          "startUrls": {
            "title": "Search links",
            "type": "array",
            "description": "One per line: a Stepstone search page as shown in your browser, with its filters (https://www.stepstone.de/jobs/data-scientist/in-berlin?ct=222).",
            "items": {
              "type": "string"
            }
          },
          "postedWithin": {
            "title": "Posted within (Stepstone's own filter)",
            "enum": [
              "any",
              "1 day",
              "7 days"
            ],
            "type": "string",
            "description": "Passes Stepstone's own date filter as is, like its 'Datum' menu. Stepstone does not keep it exact: it can leave out recent jobs (its 7-day list missed up to half of them on some searches) and include older ones (its 1-day list held jobs posted two weeks earlier). To miss nothing, run a watch (Only new jobs) without it. A pasted link keeps its own date filter.",
            "default": "any"
          },
          "workplace": {
            "title": "Home office",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "remoteOrHybrid"
            ],
            "type": "string",
            "description": "As Stepstone files it. 'Home office only' uses Stepstone's own filter (its job cards do not tell it apart). A job that says nothing about home office is left out when you pick anything but Any.",
            "default": "any"
          },
          "salaryOnly": {
            "title": "Only jobs with a salary written by the employer",
            "type": "boolean",
            "description": "Stepstone adds its own estimated salary to most German jobs (flagged salaryIsEstimated). Turn on to keep only jobs whose employer wrote the pay. Few employers do: expect only a small share of the jobs (often none).",
            "default": false
          },
          "includeSuggestedJobs": {
            "title": "Include Stepstone's suggestions",
            "type": "boolean",
            "description": "Below the results of a search, Stepstone suggests other jobs: in other locations (section 'regional') or with similar titles (section 'semantic'). Off: only the results of your search are delivered. On: the suggestions are delivered too (charged like any job), each with its section.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "Deliver only the jobs this watch has not delivered before. The first run delivers every matching job; the next runs with the same watch name deliver only the jobs not delivered before. Made for scheduled runs: jobs already delivered are never charged again. A run that stops early is continued by the next one.",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "maxLength": 200,
            "type": "string",
            "description": "Name of the watch that remembers the jobs already delivered (used with 'Only new jobs'). Optional: without a name, the memory belongs to this exact list of searches and filters. Names are case-sensitive: 'Berlin Jobs' and 'berlin jobs' are two different watches, and two different names never share a memory. Extra spaces are ignored."
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 150,
            "type": "integer",
            "description": "Leave empty for everything Stepstone lists for a search (150 at most)."
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Total number of jobs delivered by the run, all searches together, counted exactly.",
            "default": 1000
          },
          "proxyConfiguration": {
            "title": "Connection",
            "type": "object",
            "description": "Connection. Keep the default (automatic). Costs are included in the price.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}