{
  "openapi": "3.0.1",
  "info": {
    "title": "StepStone Job Scraper | 0.35$/1k",
    "description": "Scrape StepStone job listings across Germany, Austria, the Netherlands and Belgium. Keyword and location search, every on-site filter, full job descriptions with salary estimates, and incremental monitoring that emits only new or updated listings on recurring runs.",
    "version": "1.0",
    "x-build-id": "hi4JjX8HFoDwrUTJX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trev0n~stepstone-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trev0n-stepstone-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/trev0n~stepstone-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trev0n-stepstone-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/trev0n~stepstone-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trev0n-stepstone-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": {
          "query": {
            "title": "Search keywords",
            "type": "string",
            "description": "Job title, skill or company to search for (e.g. \"Softwareentwickler\"). Leave empty to search by location or filters only, or to use Start URLs."
          },
          "additionalQueries": {
            "title": "Additional keywords",
            "type": "array",
            "description": "Search several keywords in one run — each is searched separately and the results are merged and deduplicated.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "market": {
            "title": "Country / language",
            "enum": [
              "DE",
              "AT",
              "NL",
              "BE_NL",
              "BE_FR",
              "BE_EN"
            ],
            "type": "string",
            "description": "Which StepStone site to search. Belgium is available in Dutch, French and English — each returns the job titles and locations in that language.",
            "default": "DE"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or postcode (e.g. \"München\", \"Wien\", \"Brussel\"). Spelled exactly as on StepStone — accents and umlauts are handled for you."
          },
          "radius": {
            "title": "Search radius (km)",
            "minimum": 0,
            "maximum": 300,
            "type": "integer",
            "description": "How far around the location to search. 0 uses StepStone's default (30 km).",
            "default": 0
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional StepStone search-result or job-ad URLs to scrape directly instead of (or alongside) a keyword search.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of jobs to collect (0 = unlimited). Also caps how many job ads are opened when full details are enabled.",
            "default": 100
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on result pages to fetch per search (25 jobs per page). 0 = no cap.",
            "default": 0
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Order results by StepStone's relevance ranking or by publication date.",
            "default": "relevance"
          },
          "workType": {
            "title": "Full time / part time",
            "enum": [
              "",
              "full-time",
              "part-time"
            ],
            "type": "string",
            "description": "Working-hours filter.",
            "default": ""
          },
          "contractType": {
            "title": "Contract type",
            "enum": [
              "",
              "permanent",
              "fixed-term",
              "temporary",
              "graduate",
              "freelance",
              "apprenticeship",
              "internship",
              "student",
              "temp-agency",
              "thesis",
              "phd"
            ],
            "type": "string",
            "description": "Type of employment. Germany and Austria offer every option; the Dutch and Belgian sites only offer permanent, fixed-term/temporary, freelance, internship and student jobs — anything else is reported as not applied instead of being silently ignored.",
            "default": ""
          },
          "experience": {
            "title": "Experience level",
            "enum": [
              "",
              "no-experience",
              "experienced",
              "management-responsibility"
            ],
            "type": "string",
            "description": "Seniority filter.",
            "default": ""
          },
          "workFromHome": {
            "title": "Home office",
            "enum": [
              "",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Remote-work filter. Note that StepStone only tells you per job whether home office is offered at all, so the fully-remote / partly-remote distinction exists in the search filter, not in each result row.",
            "default": ""
          },
          "applicationMethod": {
            "title": "How to apply",
            "enum": [
              "",
              "quick-apply",
              "company-website"
            ],
            "type": "string",
            "description": "Keep only jobs with StepStone's one-click apply, or only jobs that redirect to the company's own website.",
            "default": ""
          },
          "adLanguage": {
            "title": "Job ad language",
            "enum": [
              "",
              "de",
              "en",
              "nl",
              "fr"
            ],
            "type": "string",
            "description": "Keep only ads written in this language.",
            "default": ""
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs published recently. StepStone offers two buckets — 1 day and 7 days — and any larger value snaps to 7. 0 = any time.",
            "default": 0
          },
          "sectors": {
            "title": "Industry sectors",
            "type": "array",
            "description": "Keep only jobs in these industries. Combine several to widen the search.",
            "items": {
              "type": "string",
              "enum": [
                "1000",
                "3000",
                "4000",
                "7000",
                "10001",
                "12000",
                "13000",
                "14000",
                "15000",
                "16000",
                "17000",
                "19000",
                "21000",
                "23001",
                "23003",
                "25000",
                "26000",
                "28000",
                "29000",
                "31002"
              ],
              "enumTitles": [
                "Agriculture, Fishing & Forestry",
                "Food & Beverages",
                "Textiles, Clothing & Fashion",
                "Chemical & Petrochemical Industry",
                "Automotive",
                "Manufacturing",
                "Electricity, Gas & Water Supply",
                "Building & Construction",
                "Wholesale & Retail Trade",
                "Hotels, Restaurants & Catering",
                "Distribution, Transport & Logistics",
                "Banking, Financial Services & Insurance",
                "IT & Internet",
                "Consulting",
                "Auditing / Accounting",
                "HR Services & Recruitment",
                "Other Business Services",
                "Education & Training",
                "Medical, Health & Social Care",
                "Other"
              ]
            },
            "default": []
          },
          "discipline": {
            "title": "Discipline",
            "type": "string",
            "description": "Advanced — StepStone's job-family filter, spelled in the site's own language (e.g. \"IT\", \"Ingenieurwesen\", \"Marketing\"). Copy the value from the site's filter link."
          },
          "skillIds": {
            "title": "Skill IDs",
            "type": "array",
            "description": "Advanced — numeric StepStone skill IDs to filter by. Copy them from a skill filter link on the site.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeKeywords": {
            "title": "Must contain",
            "type": "array",
            "description": "Keep only jobs whose title, teaser, company or description contains at least one of these terms.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Must not contain",
            "type": "array",
            "description": "Drop jobs whose title, teaser, company or description contains any of these terms.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxAgeMinutes": {
            "title": "Max age (minutes)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop jobs published longer ago than this, by publication date (0 = no limit). Useful for near-real-time monitoring.",
            "default": 0
          },
          "mainSectionOnly": {
            "title": "Exact matches only",
            "type": "boolean",
            "description": "StepStone pads short result lists with nearby and loosely related jobs. Turn this on to keep only the jobs that actually matched your search.",
            "default": false
          },
          "includeDetails": {
            "title": "Include full job details",
            "type": "boolean",
            "description": "Open every job ad to collect the full description, contract type, salary estimate, company profile and extracted contacts. Slower and richer.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html",
              "markdown",
              "all"
            ],
            "type": "string",
            "description": "How to output the job description when full details are enabled.",
            "default": "text"
          },
          "descriptionMaxLength": {
            "title": "Description max length",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate descriptions to this many characters (0 = no limit).",
            "default": 0
          },
          "detailConcurrency": {
            "title": "Detail concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many job ads to open in parallel (1-10).",
            "default": 5
          },
          "useProxyForDetails": {
            "title": "Use proxy for job ads",
            "type": "boolean",
            "description": "Open job ads through the proxy from the very first try. Off by default — the first attempt goes direct (fastest) and any retry automatically switches to the proxy, which is enough for the occasional job ad that refuses to load.",
            "default": false
          },
          "compact": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Output only the core fields — handy for AI workflows and spreadsheets.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Exclude empty fields",
            "type": "boolean",
            "description": "Omit null and empty fields from each record.",
            "default": false
          },
          "forceHtmlChannel": {
            "title": "Use the classic page reader",
            "type": "boolean",
            "description": "Advanced — read result pages the slow way instead of the fast one. Only useful if StepStone changes its result list and the fast reader stops working; the scraper already falls back on its own.",
            "default": false
          },
          "incrementalMode": {
            "title": "Incremental monitoring mode",
            "type": "boolean",
            "description": "Track state across runs and emit only NEW / UPDATED / REAPPEARED jobs. The first run builds a baseline; later runs return just the changes — ideal for cheap daily monitoring.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Custom identifier for the monitoring baseline. Leave empty to derive it from the search settings automatically."
          },
          "emitUnchanged": {
            "title": "Emit unchanged jobs",
            "type": "boolean",
            "description": "Also output jobs whose content didn't change since the last run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired jobs",
            "type": "boolean",
            "description": "Also output a record for jobs that disappeared since the last run (changeType = EXPIRED).",
            "default": false
          },
          "skipReposts": {
            "title": "Skip reposts",
            "type": "boolean",
            "description": "Drop jobs detected as reposts of a recently expired listing (same content, new ID).",
            "default": false
          },
          "notifyOnlyChanges": {
            "title": "Notify only on changes",
            "type": "boolean",
            "description": "Only send notifications when there are new or updated jobs.",
            "default": true
          },
          "notificationLimit": {
            "title": "Jobs per notification",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of jobs listed in a single notification message.",
            "default": 10
          },
          "includeRunSummary": {
            "title": "Include run summary in webhook",
            "type": "boolean",
            "description": "Attach the run summary to the generic webhook payload.",
            "default": true
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Generic webhook to POST results to (JSON)."
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Telegram bot token for notifications."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Telegram chat ID to send notifications to."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Discord channel webhook for notifications."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Slack incoming webhook for notifications."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. StepStone works without a proxy, but a proxy helps for large or frequent runs.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}