{
  "openapi": "3.0.1",
  "info": {
    "title": "MeineStadt.de Job Scraper - German Regional Jobs",
    "description": "Scrape job listings from MeineStadt.de, a German regional job portal covering all industries and cities. Extract salary ranges, requirements, benefits, company info, logos, and full descriptions. Search by keywords and city with radius filter. Fast HTTP-only scraper.",
    "version": "1.4",
    "x-build-id": "qbdRuoY2OMNuBgc7q"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/santamaria-automations~meinestadt-de-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-santamaria-automations-meinestadt-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~meinestadt-de-scraper/runs": {
      "post": {
        "operationId": "runs-sync-santamaria-automations-meinestadt-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~meinestadt-de-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-santamaria-automations-meinestadt-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": "Job page links",
            "type": "array",
            "description": "Links to specific meinestadt.de job ads you want to read directly, for example to monitor single listings. When filled, the keyword search is skipped. Plain links or {\"url\": \"...\"} objects both work.",
            "items": {
              "type": "string",
              "pattern": "^https?://"
            }
          },
          "searchQueries": {
            "title": "Job titles or keywords",
            "type": "array",
            "description": "One or more job titles or keywords, for example Pflege or Software Engineer. Each keyword is searched on its own and duplicate jobs are removed across keywords.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Job title or keyword (single)",
            "type": "string",
            "description": "One job title or keyword. Kept for older setups; use the list above to search for several keywords at once."
          },
          "city": {
            "title": "City or region",
            "type": "string",
            "description": "City to search in, for example Berlin, Muenchen or Hamburg. Leave empty to search all of Germany."
          },
          "radius": {
            "title": "Search radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How far around the city to look, in kilometers. 30 is a good default.",
            "default": 30
          },
          "maxResultsPerQuery": {
            "title": "Max jobs per keyword",
            "minimum": 1,
            "type": "integer",
            "description": "Most jobs to collect for each keyword. With 100 per keyword and 8 keywords you get up to 800 jobs, minus duplicates.",
            "default": 100
          },
          "maxResults": {
            "title": "Max jobs in total",
            "minimum": 0,
            "type": "integer",
            "description": "Overall limit across all keywords. Use 0 for no overall limit (each keyword is then only limited by the per-keyword maximum).",
            "default": 0
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "newest",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first sorts by the date shown on the ad and skips paid top-slot ads and ads without a date. Most relevant keeps the ranking of the website.",
            "default": "newest"
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Only keep jobs posted in the last N days (date shown on the ad, day precision). Older jobs are dropped before details are loaded and are not charged. With Newest first the keyword stops as soon as a whole result page is older. Applies to keyword and city searches, not to job page links. Jobs without a date are kept. Leave empty for no date filter."
          },
          "titleFilter": {
            "title": "Only keep jobs with these words in the title",
            "type": "string",
            "description": "Comma-separated words that the job title must contain, for example Erzieher, Pädagog. A job is kept when its title matches at least one word (upper or lower case, umlauts treated alike). Other jobs are dropped before details are loaded and are not charged. Leave empty to keep all jobs.",
            "default": ""
          },
          "titleFilterMaxEmptyPages": {
            "title": "Stop after this many pages without a title match",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Stop a keyword after this many result pages in a row where no job title matched your title words. Use 0 to keep going until the job limit or the end of the results."
          },
          "includeDetails": {
            "title": "Load full job details",
            "type": "boolean",
            "description": "On: opens every job page to add the full description, salary, requirements, benefits and contact details (slower). Off: only the basic data from the result list (faster and cheaper).",
            "default": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}