{
  "openapi": "3.0.1",
  "info": {
    "title": "StepStone Scraper — Jobs, Salaries & Hiring Companies",
    "description": "StepStone jobs scraper for stepstone.de, .at, .be: export job ads with salary estimates, full descriptions, contract type, home office, benefits, address and company size, industry and rating. Search by keyword, location and filters or export whole regions. No login. Not affiliated with StepStone.",
    "version": "1.0",
    "x-build-id": "aaulGTzVC0dYX3jOw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~stepstone-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-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/logiover~stepstone-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-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/logiover~stepstone-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Job titles, keywords or skills, e.g. \"software engineer\", \"Pflegefachkraft\", \"SAP ABAP\", \"Vertrieb\". Each term is one StepStone search. Leave empty to export every job in the locations below (or in the whole country).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, regions or the country as StepStone knows them, e.g. \"Berlin\", \"München\", \"Hamburg\", \"Bayern\", \"Nordrhein-Westfalen\", \"Wien\", \"Brussel\", \"Deutschland\". Every search term is combined with every location. Empty = the whole country.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "StepStone site",
            "enum": [
              "de",
              "at",
              "be"
            ],
            "type": "string",
            "description": "Which StepStone site to search: Germany (stepstone.de, ~205,000 jobs), Austria (stepstone.at, ~9,600) or Belgium (stepstone.be, ~10,100). Pasted URLs below always use their own site.",
            "default": "de"
          },
          "radiusKm": {
            "title": "Radius around the location (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Optional. StepStone's search radius around a city (StepStone's default is 30 km). Ignored without a location."
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "7"
            ],
            "type": "string",
            "description": "Only jobs published in the last 24 hours or the last 7 days (StepStone's own filter).",
            "default": "any"
          },
          "workType": {
            "title": "Full-time / part-time",
            "enum": [
              "any",
              "full",
              "part"
            ],
            "type": "string",
            "description": "Only full-time or only part-time jobs.",
            "default": "any"
          },
          "contractTypes": {
            "title": "Contract type",
            "uniqueItems": true,
            "type": "array",
            "description": "Any of these contract types (empty = all). Some types exist only on one site: StepStone Belgium has no entry-level, thesis or doctorate types; temp-to-perm is Belgium only.",
            "items": {
              "type": "string",
              "enum": [
                "permanent",
                "temporary",
                "temp_agency",
                "temp_to_perm",
                "freelance",
                "franchise",
                "entry_level",
                "apprenticeship",
                "internship",
                "student_job",
                "thesis",
                "doctorate",
                "traineeship",
                "trade_representative"
              ],
              "enumTitles": [
                "Permanent",
                "Fixed-term",
                "Temporary agency work (Arbeitnehmerüberlassung)",
                "Temp-to-perm (Belgium)",
                "Freelance / project",
                "Franchise",
                "Entry level / trainee",
                "Apprenticeship / dual study",
                "Internship",
                "Student job / working student",
                "Bachelor / master thesis",
                "Doctorate (PhD)",
                "Legal traineeship (Referendariat)",
                "Trade representative"
              ]
            },
            "default": []
          },
          "experienceLevels": {
            "title": "Experience",
            "uniqueItems": true,
            "type": "array",
            "description": "Any of these experience levels (empty = all).",
            "items": {
              "type": "string",
              "enum": [
                "none",
                "experienced",
                "management"
              ],
              "enumTitles": [
                "No experience / first job",
                "Experience required",
                "Management (staff responsibility)"
              ]
            },
            "default": []
          },
          "workFromHome": {
            "title": "Home office",
            "uniqueItems": true,
            "type": "array",
            "description": "Only jobs with partial and/or full home office (empty = all jobs).",
            "items": {
              "type": "string",
              "enum": [
                "partial",
                "full"
              ],
              "enumTitles": [
                "Partially remote (hybrid)",
                "Fully remote"
              ]
            },
            "default": []
          },
          "minSalary": {
            "title": "Minimum yearly salary (EUR, stepstone.de only)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only jobs whose salary — StepStone's estimate when the employer gives none — is at least this much per year. StepStone filters in steps of 10,000 (10,000–100,000); the value is rounded down. 0 = no filter.",
            "default": 0
          },
          "easyApplyOnly": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs you can apply to on StepStone in a few clicks (\"Schnelle Bewerbung\").",
            "default": false
          },
          "jobLanguages": {
            "title": "Language of the job ad",
            "uniqueItems": true,
            "type": "array",
            "description": "Only ads written in these languages (StepStone detects the language of each ad). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "nl",
                "fr"
              ],
              "enumTitles": [
                "German",
                "English",
                "Dutch",
                "French"
              ]
            },
            "default": []
          },
          "startUrls": {
            "title": "StepStone URLs",
            "type": "array",
            "description": "Optional. Paste StepStone search pages with any filters (https://www.stepstone.de/jobs/...), company job pages (https://www.stepstone.de/cmp/de/...-123/jobs) or job pages (...-inline.html) from stepstone.de, .at or .be. If you give only URLs, only the URLs are scraped.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many unique jobs across all searches. 0 = no limit (every matching job — the whole of stepstone.de is ~205,000 jobs).",
            "default": 1000
          },
          "includeDetails": {
            "title": "Include full job details",
            "type": "boolean",
            "description": "Reads each job page: full description plus its sections (introduction, responsibilities, requirements, benefits, contact), contract and work type, employment type, discipline, postal code, street and coordinates, and the company's size, industries and rating. Turn off for the fastest bulk export (search data only).",
            "default": true
          },
          "includeSimilarJobs": {
            "title": "Include StepStone's similar and nearby jobs",
            "type": "boolean",
            "description": "After the jobs that match a keyword StepStone appends \"similar jobs\" (e.g. 128 matches for \"SAP ABAP\" plus 7,600 similar ones), and after a city's jobs it appends jobs from the wider region. Off = only real matches. Every row says which kind it is in resultType.",
            "default": false
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first (best for monitoring and big exports) or StepStone's relevance ranking.",
            "default": "date"
          },
          "language": {
            "title": "Label language",
            "enum": [
              "en",
              "de",
              "nl",
              "fr"
            ],
            "type": "string",
            "description": "Language of StepStone's labels in the output (contract type, work type, badges). Job ads stay in the language they were written in. German exists on .de/.at, Dutch and French on .be.",
            "default": "en"
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Also keep the job description with its original HTML formatting (descriptionHtml). Off keeps rows small.",
            "default": false
          },
          "maxRequestsPerSecond": {
            "title": "Max requests per second",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Upper limit for the request pace (search pages and job pages together). Measured on 2026-10-18: up to 16 per second is accepted, 30 per second gets the connection blocked after ~180 requests. The scraper slows down by itself when StepStone refuses requests and speeds up again afterwards. Default 12.",
            "default": 12
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The scraper reads StepStone over a direct connection (no proxy cost) at a pace StepStone accepts. If StepStone puts that connection on hold, up to 80 requests automatically go through residential IPs so small runs still finish. For long runs through a hold, set Apify RESIDENTIAL here — datacenter proxies are refused by StepStone (measured).",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}