{
  "openapi": "3.0.1",
  "info": {
    "title": "StepStone.de Jobs Scraper: Contacts, Benefits & Filters",
    "description": "Extract jobs from StepStone.de: title, company, location, description, requirements, benefits, salary when stated and contact details. Filter by location, state, employment type and experience.",
    "version": "2.4",
    "x-build-id": "EBzkF3aVjSjBLCfJW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/santamaria-automations~stepstone-de-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-santamaria-automations-stepstone-de-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~stepstone-de-scraper/runs": {
      "post": {
        "operationId": "runs-sync-santamaria-automations-stepstone-de-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~stepstone-de-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-santamaria-automations-stepstone-de-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": {
          "searchUrls": {
            "title": "Search URLs (pre-built SERP)",
            "type": "array",
            "description": "Pre-built StepStone.de SERP URLs (search result pages). Paste URLs directly from a browser search on stepstone.de to preserve every filter (sector, region, discipline, experience, skills). Each URL is treated as a paginated SERP entry point. Combines with searchQueries if both provided (results deduplicated by job ID). Example: https://www.stepstone.de/jobs/software-engineer/in-berlin?wt=80001&sort=2&action=sort_publish URLs may be plain strings or {\"url\": \"...\"} objects.",
            "items": {
              "type": "string",
              "pattern": "^https://www\\.stepstone\\.de/"
            }
          },
          "directUrls": {
            "title": "Direct Job URLs",
            "type": "array",
            "description": "Optional: Direct URLs to specific job listings to check status (for alive checks). When provided, search parameters are ignored. URLs may be plain strings or {\"url\": \"...\"} objects.",
            "items": {
              "type": "string",
              "pattern": "^https://www\\.stepstone\\.de/"
            }
          },
          "searchQueries": {
            "title": "Search Keywords (Was)",
            "type": "array",
            "description": "One or more search keywords. Each keyword runs as a separate search. Results are deduplicated across queries.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search Keyword (single, legacy)",
            "type": "string",
            "description": "Single search keyword (backward compatible). Use 'searchQueries' for multiple keywords."
          },
          "location": {
            "title": "Location (Wo)",
            "type": "string",
            "description": "City, region, or state name (e.g., 'Berlin', 'München', 'Sachsen', 'Frankfurt am Main'). Takes precedence over the Bundesland dropdown."
          },
          "radius": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Search radius from location in kilometers (0, 5, 10, 25, 50, 100, 150, or 200)",
            "default": 25
          },
          "bundesland": {
            "title": "Bundesland (Federal State)",
            "enum": [
              "",
              "BY",
              "BW",
              "BE",
              "BB",
              "HB",
              "HH",
              "HE",
              "MV",
              "NI",
              "NW",
              "RP",
              "SL",
              "SN",
              "ST",
              "SH",
              "TH"
            ],
            "type": "string",
            "description": "Filter by German federal state. Only used when Location field is empty.",
            "default": ""
          },
          "employmentType": {
            "title": "Employment Type",
            "enum": [
              "",
              "FULL_TIME",
              "PART_TIME",
              "INTERNSHIP",
              "TRAINEE",
              "TEMPORARY",
              "CONTRACT"
            ],
            "type": "string",
            "description": "Fleet-canonical employment type filter. FULL_TIME/PART_TIME map to StepStone wt= (Arbeitszeit). INTERNSHIP/TRAINEE/TEMPORARY/CONTRACT map to ct= (Anstellungsart). For Werkstudent, Ausbildung or other StepStone-specific types, use the stepstoneContractTypes field below.",
            "default": ""
          },
          "stepstoneContractTypes": {
            "title": "StepStone-specific contract types",
            "type": "array",
            "description": "StepStone-specific contract types with no fleet-canonical equivalent. Multi-select. Combines with employmentType via OR: setting employmentType=INTERNSHIP AND stepstoneContractTypes=[WERKSTUDENT] returns jobs matching EITHER Praktikum OR Werkstudent. For richer filters (sectors, regions, disciplines, experience, skills), build a URL on stepstone.de and paste it into searchUrls.",
            "items": {
              "type": "string",
              "enum": [
                "PERMANENT",
                "WERKSTUDENT",
                "AUSBILDUNG",
                "HANDELSVERTRETER",
                "ARBEITNEHMERUEBERLASSUNG",
                "FRANCHISE"
              ],
              "enumTitles": [
                "Feste Anstellung - ct=222",
                "Werkstudent / Studentenjobs - ct=229",
                "Ausbildung / Studium - ct=226",
                "Handelsvertreter - ct=232",
                "Arbeitnehmerueberlassung - ct=220",
                "Franchise - ct=221"
              ]
            },
            "default": []
          },
          "experienceLevel": {
            "title": "Experience Level",
            "enum": [
              "",
              "ENTRY_LEVEL",
              "PROFESSIONAL",
              "MANAGEMENT",
              "EXECUTIVE"
            ],
            "type": "string",
            "description": "Filter by experience level",
            "default": ""
          },
          "postedWithinDays": {
            "title": "Posted Within Days",
            "minimum": 0,
            "type": "integer",
            "description": "Only return jobs posted within the last N days. 1=24h, 7=one week, etc. Default: 0 (no age filter). Server-side filter where platform supports it. Preferred over datePosted for programmatic use.",
            "default": 0
          },
          "datePosted": {
            "title": "Date Posted (Optional legacy: prefer postedWithinDays)",
            "enum": [
              "",
              "1",
              "7",
              "30"
            ],
            "type": "string",
            "description": "Optional legacy: prefer postedWithinDays. Filter by how recently the job was posted.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort Order",
            "enum": [
              "newest",
              "relevance"
            ],
            "type": "string",
            "description": "Sort search results by date or relevance. 'newest' is the fleet canonical value; 'date' is accepted as an alias. Uses StepStone's sort=2 (newest) and sort=1 (relevance) URL params. A client-side sort is also applied after collection to ensure deterministic ordering.",
            "default": "newest"
          },
          "titleFilter": {
            "title": "Filter by Job Title",
            "type": "string",
            "description": "Only return jobs whose title contains this phrase (case-insensitive). Comma-separated list is treated as OR: 'Sales Manager, Account Executive' matches either. StepStone's own search returns fuzzy body-text matches; this filter narrows results to true title matches. Leave empty to disable.",
            "default": ""
          },
          "maxResultsPerQuery": {
            "title": "Max Results per Query",
            "minimum": 0,
            "type": "integer",
            "description": "Per-keyword cap. Total possible results = maxResultsPerQuery x number of searchQueries (deduplicated). Example: 100 x 8 queries = up to 800 results. Set to 0 for unlimited per query (only maxResults caps the total). When titleFilter is active, this counts POST-filter results.",
            "default": 100
          },
          "maxResults": {
            "title": "Max Total Results",
            "minimum": 0,
            "type": "integer",
            "description": "Total cap across all queries. Set to 0 for unlimited (each query limited by maxResultsPerQuery).",
            "default": 0
          },
          "includeJobDetails": {
            "title": "Include Full Job Details",
            "type": "boolean",
            "description": "When enabled (recommended), visits each job detail page to extract full description, salary from JSON-LD, contact info, apply URL, and employment type. When disabled, only SERP listing data is returned (title, company, location, snippet, posted date, salary text if shown). Disabling saves compute but most fields will be limited to what the search results page shows.",
            "default": true
          },
          "maxPagesFetched": {
            "title": "Max SERP Pages per Query",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Safety cap on SERP pages fetched per query. Useful when titleFilter is active and each page has sparse matches -- prevents runaway pagination. Default: 10 pages x 25 results = 250 SERP rows scanned per query.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}