{
  "openapi": "3.0.1",
  "info": {
    "title": "StepStone Jobs Scraper & New Job Monitor - DE, AT, BE, NL",
    "description": "For recruiters, job alerts and hiring lead lists: StepStone jobs on stepstone.de, .at, .be and .nl by keyword and city, with company, location, date, remote or hybrid and link; job details optional. StepStone re-dates old ads (7 of the top 25 on 2026-09-25); monitor mode returns only new jobs.",
    "version": "0.1",
    "x-build-id": "dhejg5P9qtpOpyxys"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~stepstone-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-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/neverempty~stepstone-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-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/neverempty~stepstone-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-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": {
          "searchQueries": {
            "title": "Job titles or keywords",
            "type": "array",
            "description": "What you would type into the StepStone \"What\" box, for example Data Scientist, Pflegefachkraft, Python, Buchhalter, SAP. Each keyword is searched in each location and country. Leave Job titles, Locations and Search URLs all empty to run the example search: Data Scientist in Berlin on stepstone.de.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Optional. City or region as StepStone writes it, for example Berlin, München, Frankfurt am Main, Hamburg, Wien, Graz, Brussels, Antwerpen, Amsterdam. Empty = the whole country. StepStone answers an unknown place with 0 jobs (a free row says so).",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "StepStone sites",
            "type": "array",
            "description": "Which StepStone sites to search: stepstone.de (default), stepstone.at, stepstone.be, stepstone.nl. Every keyword and location is searched on every site you pick.",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "at",
                "be",
                "nl"
              ],
              "enumTitles": [
                "Germany (stepstone.de)",
                "Austria (stepstone.at)",
                "Belgium (stepstone.be)",
                "Netherlands (stepstone.nl)"
              ]
            },
            "default": [
              "de"
            ]
          },
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Optional. StepStone search result pages copied from your browser, for example https://www.stepstone.de/jobs/data-scientist/in-berlin or https://www.stepstone.nl/vacatures/python. Paste the plain first page: StepStone's robots.txt does not allow page numbers or filters in the URL (?page=, ?radius=, ?sort=, ?wfh= ...), so such URLs come back as a free row. Use the filters below instead.",
            "items": {
              "type": "string"
            }
          },
          "remoteWork": {
            "title": "Remote work",
            "enum": [
              "any",
              "hybrid-or-remote",
              "fully-remote"
            ],
            "type": "string",
            "description": "Any (default), jobs StepStone marks as partly home office (hybrid) or home office only, or home office only. Applied to the jobs read from the first page of each search.",
            "default": "any"
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Optional. Only jobs StepStone shows as posted within this many days. Applied to the jobs read from the first page of each search."
          },
          "includeRelatedJobs": {
            "title": "Include related and recommended jobs",
            "type": "boolean",
            "description": "Off (default): only jobs that match your search (matchType exact) and jobs in nearby places (matchType nearby). StepStone fills the rest of a short result page with similar job titles and recommendations (for python on stepstone.nl: 1 match and 24 recommendations). On: return those too, marked matchType related or recommended.",
            "default": false
          },
          "includeJobDetails": {
            "title": "Open each job page (employment type, deadline, full description)",
            "type": "boolean",
            "description": "On: for each job returned, also read its job page and add employmentType (full-time, part-time ...), validThrough (deadline), industry, the full description (contact names, phone numbers and e-mails removed), postal code and coordinates, and the posted salary if the ad states one. Rows with job page details are charged as job-with-details instead of job-returned. If a job page cannot be read, the row is still returned as job-returned with detailsStatus saying why.",
            "default": false
          },
          "maxResultsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Most jobs returned for one search. StepStone's robots.txt allows only the first page of a search (25 jobs, most relevant first), so 25 is the maximum and the default. In monitor mode it limits the new jobs returned per search in one run; the rest come first in the next run, while they are still on the first page."
          },
          "onlyNew": {
            "title": "Monitor mode: only new jobs",
            "type": "boolean",
            "description": "On: every run reads the first page of each search and returns only jobs that are new since the previous check (changeType new). Old jobs that StepStone re-dated to today (reposted) and older jobs that moved up into the first page are not sold as new. The first run returns the current jobs (changeType first-check) and remembers them as the starting point. Each run that reads the list is charged the run start fee even when nothing is new; such runs return a free row saying so.",
            "default": false
          },
          "includeReposted": {
            "title": "Monitor mode: return reposted jobs",
            "type": "boolean",
            "description": "Off (default): a job this watch had not seen, dated after the previous check but with a lower StepStone ID than the newest job this watch has seen (an older ad re-dated to today, rarely an ad StepStone published late), is not returned. On: return it with changeType reposted instead of new.",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. Keeps separate memories for monitor mode, for example one per client (letters, digits, dot, dash, underscore; up to 40). Runs with the same watch name and the same search share what has already been returned."
          },
          "resetMonitoringState": {
            "title": "Start the watch again",
            "type": "boolean",
            "description": "On: forget what this watch has seen for these searches before running, so this run is a first check again.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}