{
  "openapi": "3.0.1",
  "info": {
    "title": "Ausbildung.de Vocational Training Scraper",
    "description": "Scrape German apprenticeship (Ausbildung) job listings from ausbildung.de by city and category, or by specific profession nationwide. Get titles, companies, locations, start dates, requirements, and application details.",
    "version": "1.0",
    "x-build-id": "9ZjyvmmVIeq7ak3QH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~ausbildung-de-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-ausbildung-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/crawlerbros~ausbildung-de-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-ausbildung-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/crawlerbros~ausbildung-de-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-ausbildung-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "byCity",
              "byProfession",
              "byQuery"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "byCity"
          },
          "citySlug": {
            "title": "City (mode=byCity)",
            "type": "string",
            "description": "German city name/slug, e.g. `berlin`, `muenchen`, `hamburg`, `koeln`. Umlauts should be transliterated (ä→ae, ö→oe, ü→ue, ß→ss) and spaces become hyphens — the actor also normalizes common input automatically.",
            "default": "berlin"
          },
          "category": {
            "title": "Category (mode=byCity)",
            "enum": [
              "kaufmaennisch",
              "abitur",
              "autos",
              "drogistin",
              "elektronik",
              "fachkraft-fuer-lagerlogistik",
              "fachmann-systemgastronomie",
              "fachverkaeufer-lebensmittelhandwerk",
              "fleischer",
              "gastronomie",
              "gesundheitswesen",
              "handelsfachwirt",
              "handwerk",
              "hauptschulabschluss",
              "it",
              "kauffrau-im-einzelhandel",
              "kinder",
              "kreativ",
              "marketing",
              "mechatroniker",
              "medien",
              "medizin",
              "ohne-mathe",
              "ohne-schulabschluss",
              "pflege",
              "realschulabschluss",
              "soziales",
              "sport",
              "technik",
              "verkaeuferin"
            ],
            "type": "string",
            "description": "Broad topic/industry to filter the city search. `kaufmaennisch` (commercial/office) is the broadest category and is populated for virtually every city. Not every category has listings in every city — an unlisted combination returns 0 records, not an error. Note: `alle-berufe` (unfiltered) is intentionally excluded because ausbildung.de renders it as an infinite-scroll page with no listings in the initial server response.",
            "default": "kaufmaennisch"
          },
          "professionSlug": {
            "title": "Profession slug (mode=byProfession)",
            "type": "string",
            "description": "Exact ausbildung.de profession slug, nationwide search (no city filter). Examples: `fachinformatiker`, `kauffrau-im-einzelhandel`, `mechatroniker`, `altenpfleger`, `bankkaufmann`, `koch`, `elektroniker-betriebstechnik`. Browse the full glossary at ausbildung.de/berufe/glossar/ for all ~700 slugs.",
            "default": "fachinformatiker"
          },
          "searchQuery": {
            "title": "Search query (mode=byQuery)",
            "type": "string",
            "description": "Free-text keyword searched nationwide across profession titles and company names, e.g. `Fachinformatiker`, `Bäcker`, `McDonald's`. Broader than `professionSlug` (exact slug match) — matches partial/fuzzy profession and employer names.",
            "default": "Fachinformatiker"
          },
          "expectedGraduation": {
            "title": "Required school diploma",
            "enum": [
              "",
              "hauptschulabschluss",
              "mittlerer-schulabschluss",
              "fachabitur",
              "abitur",
              "keine-angabe"
            ],
            "type": "string",
            "description": "Filter results to listings requiring this school-leaving qualification.",
            "default": ""
          },
          "apprenticeshipType": {
            "title": "Apprenticeship type",
            "enum": [
              "",
              "klassische-duale-berufsausbildung",
              "schulische-ausbildung",
              "schulische-und-duale-ausbildung",
              "duales-studium",
              "abiturientenprogramm",
              "weiterbildung"
            ],
            "type": "string",
            "description": "Filter by the type of vocational training program.",
            "default": ""
          },
          "startDateFrom": {
            "title": "Training starts on or after (YYYY-MM-DD)",
            "type": "string",
            "description": "Only keep listings whose training start date (`startsNoEarlierThan`) is on or after this date."
          },
          "startDateTo": {
            "title": "Training starts on or before (YYYY-MM-DD)",
            "type": "string",
            "description": "Only keep listings whose training start date (`startsNoEarlierThan`) is on or before this date."
          },
          "minVacancyCount": {
            "title": "Min open positions per listing",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Drop listings offering fewer open positions than this.",
            "default": 0
          },
          "keyword": {
            "title": "Keyword filter",
            "type": "string",
            "description": "Case-insensitive substring match against title, profession title, and company name.",
            "default": ""
          },
          "directApplicationOnly": {
            "title": "Direct application only",
            "type": "boolean",
            "description": "Only keep listings that support direct online application (no email/postal-only listings).",
            "default": false
          },
          "topRatedEmployerOnly": {
            "title": "Top-rated employers only",
            "type": "boolean",
            "description": "Only keep listings from employers ausbildung.de has flagged as top-rated.",
            "default": false
          },
          "includeJobDescription": {
            "title": "Fetch full job description",
            "type": "boolean",
            "description": "For each listing, also fetch its detail page and add the full description text, contact/address details, and employment type. Slower (1 extra request per record) but much richer output.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Hard cap on emitted records. The actor pages through ausbildung.de's results (~20 listings per page for city searches, ~3 for narrow profession searches) until this cap is reached or the source pool is exhausted (stops automatically after several pages return no new listings).",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}