{
  "openapi": "3.0.1",
  "info": {
    "title": "StepStone.de Scraper - Germany's Leading Job Board",
    "description": "Extract jobs from StepStone.de, Germany's largest job portal. Get job titles, companies, locations, descriptions, salary info & contact details. Supports search filters (location, Bundesland, employment type, experience level). Optional LLM extraction for requirements & benefits.",
    "version": "2.0",
    "x-build-id": "YHUSQn5NfILKNt7OH"
  },
  "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": {
          "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.",
            "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",
              "FREELANCE",
              "INTERNSHIP",
              "TRAINEE",
              "TEMPORARY"
            ],
            "type": "string",
            "description": "Filter by employment type",
            "default": ""
          },
          "experienceLevel": {
            "title": "Experience Level",
            "enum": [
              "",
              "ENTRY_LEVEL",
              "PROFESSIONAL",
              "MANAGEMENT",
              "EXECUTIVE"
            ],
            "type": "string",
            "description": "Filter by experience level",
            "default": ""
          },
          "datePosted": {
            "title": "Date Posted",
            "enum": [
              "",
              "1",
              "7",
              "30"
            ],
            "type": "string",
            "description": "Filter by how recently the job was posted",
            "default": ""
          },
          "sortBy": {
            "title": "Sort Order",
            "enum": [
              "",
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Sort search results by relevance or date",
            "default": ""
          },
          "maxResultsPerQuery": {
            "title": "Max Results per Query",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum results per search keyword. Each query gets up to this many results (deduplicated).",
            "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
          },
          "llmApiKey": {
            "title": "LLM API Key (Optional)",
            "type": "string",
            "description": "Groq API key (gsk_...) or OpenRouter API key for extracting requirements, benefits, and contact info using AI"
          },
          "llmModel": {
            "title": "LLM Model",
            "enum": [
              "none",
              "llama-3.1-8b-instant",
              "mistral-small-3.1-24b-instruct"
            ],
            "type": "string",
            "description": "LLM model to use for extraction (requires API key)",
            "default": "none"
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Apify proxy settings for avoiding rate limits",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}