{
  "openapi": "3.0.1",
  "info": {
    "title": "Arbeitsagentur Jobs Scraper | Employer Profiles & Contacts",
    "description": "Scrape every job, apprenticeship and internship on arbeitsagentur.de (Bundesagentur für Arbeit), past the 10,000-result limit. 82 fields: salary, contract, home office, GPS, full description, employer website, size, benefits, social media, emails and phones. Incremental + alerts.",
    "version": "0.1",
    "x-build-id": "XFT7k0Ztx0TmCI9mg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/corvuslab~arbeitsagentur-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-corvuslab-arbeitsagentur-jobs-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/corvuslab~arbeitsagentur-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-corvuslab-arbeitsagentur-jobs-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/corvuslab~arbeitsagentur-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-corvuslab-arbeitsagentur-jobs-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, skills or occupations, in German or English, e.g. <code>Softwareentwickler</code>, <code>Pflegefachkraft</code>, <code>Elektriker</code>, <code>Lagerhelfer</code>. Leave empty for every job matching your filters.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "German cities, towns, postcodes or federal states, e.g. <code>Berlin</code>, <code>München</code>, <code>10115</code>, <code>Bayern</code>. Each location runs as its own search. Leave empty for the whole country.",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "📏 Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Distance around each location. The site uses 25 km when this is left empty; 0 = the place itself only. Maximum 200."
          },
          "startUrls": {
            "title": "📋 Start URLs",
            "type": "array",
            "description": "Paste arbeitsagentur.de job search URLs (with all the filters you set on the site) or single job URLs. When search URLs are given, the search terms and filters above are not used.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "🔢 Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of jobs to return across all searches. Set 0 for every matching job — searches bigger than the site lists at once are read in slices automatically.",
            "default": 25
          },
          "sortBy": {
            "title": "↕️ Sort by",
            "enum": [
              "relevance",
              "newest",
              "recentlyModified",
              "distance"
            ],
            "type": "string",
            "description": "Order in which jobs are read — it decides which jobs you get when Max results stops the run early. Newest first is the best fit for scheduled monitoring. Distance needs a city or postcode with a radius.",
            "default": "relevance"
          },
          "jobTypes": {
            "title": "💼 Job type",
            "type": "array",
            "description": "Regular jobs, apprenticeships and dual study programmes, internships/trainee programmes, or self-employment. Empty = all types.",
            "items": {
              "type": "string",
              "enum": [
                "job",
                "apprenticeship",
                "internship",
                "selfEmployment"
              ],
              "enumTitles": [
                "Job (Arbeit)",
                "Apprenticeship / dual study (Ausbildung)",
                "Internship / trainee (Praktikum)",
                "Self-employment (Selbstständigkeit)"
              ]
            }
          },
          "workingTime": {
            "title": "⏰ Working time",
            "type": "array",
            "description": "Full-time, part-time, shift/night/weekend work or mini-jobs. Empty = any.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime",
                "shiftNightWeekend",
                "miniJob"
              ],
              "enumTitles": [
                "Full-time (Vollzeit)",
                "Part-time (Teilzeit)",
                "Shift / night / weekend",
                "Mini-job (Minijob)"
              ]
            }
          },
          "remoteOnly": {
            "title": "🏠 Home office possible",
            "type": "boolean",
            "description": "Only jobs where the employer offers working from home.",
            "default": false
          },
          "contractDuration": {
            "title": "📝 Contract",
            "type": "array",
            "description": "Permanent, fixed-term, or not stated. Empty = any.",
            "items": {
              "type": "string",
              "enum": [
                "permanent",
                "fixedTerm",
                "notStated"
              ],
              "enumTitles": [
                "Permanent (unbefristet)",
                "Fixed-term (befristet)",
                "Not stated"
              ]
            }
          },
          "postedWithinDays": {
            "title": "🗓️ Posted within (days)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only jobs published in the last N days (1–100). Empty or 0 = any time."
          },
          "employers": {
            "title": "🏢 Employers",
            "type": "array",
            "description": "Only jobs from these employers, e.g. <code>Deutsche Bahn</code>, <code>ALDI SÜD</code>. A partial name matches every registered company name containing it.",
            "items": {
              "type": "string"
            }
          },
          "occupationFields": {
            "title": "🧭 Occupation fields",
            "type": "array",
            "description": "The site's occupation fields (Berufsfelder), e.g. <code>Informatik</code>, <code>Altenpflege</code>, <code>Elektrotechnik</code>, <code>Gastronomie</code>. A partial name matches every field containing it.",
            "items": {
              "type": "string"
            }
          },
          "excludeTemporaryAgencies": {
            "title": "🚫 Exclude temporary staffing (Zeitarbeit)",
            "type": "boolean",
            "description": "Hide jobs from temporary staffing agencies.",
            "default": false
          },
          "excludePrivatePlacement": {
            "title": "🚫 Exclude private recruiters",
            "type": "boolean",
            "description": "Hide jobs posted by private placement agencies (private Arbeitsvermittlung).",
            "default": false
          },
          "excludeExternalBoards": {
            "title": "🚫 Exclude jobs from partner job boards",
            "type": "boolean",
            "description": "Keep only jobs posted on arbeitsagentur.de itself, not ones mirrored from partner job boards.",
            "default": false
          },
          "disabilityFriendlyOnly": {
            "title": "♿ Suitable for people with disabilities",
            "type": "boolean",
            "description": "Only jobs the employer marked as suitable for applicants with a severe disability.",
            "default": false
          },
          "careerChangersOnly": {
            "title": "🔀 Open to career changers (Quereinstieg)",
            "type": "boolean",
            "description": "Only jobs the employer marked as open to career changers.",
            "default": false
          },
          "includeDetails": {
            "title": "🔬 Fetch full job details",
            "type": "boolean",
            "description": "Fetch each job's full page: description, salary, education required, contract details, home-office option and the employer's partner-board link. Turn off for fast, lighter listing-only results.",
            "default": true
          },
          "includeEmployerProfile": {
            "title": "🏢 Include employer profile",
            "type": "boolean",
            "description": "Add the employer's public company profile where it has one: website, description, size, founding year, headquarters, benefits, social media and the published HR contact.",
            "default": true
          },
          "descriptionFormat": {
            "title": "📝 Description format",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Which representation(s) of the job description to include.",
            "default": "all"
          },
          "descriptionMaxLength": {
            "title": "✂️ Description max length",
            "minimum": 0,
            "type": "integer",
            "description": "Cut descriptions to this many characters. 0 = full length.",
            "default": 0
          },
          "compact": {
            "title": "📦 Compact records",
            "type": "boolean",
            "description": "Emit only the core fields (title, company, location, occupation, salary, contract, link). Ideal for AI agents and MCP clients.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "🧹 Drop empty fields",
            "type": "boolean",
            "description": "Remove null, empty-string and empty-list fields from each record.",
            "default": false
          },
          "incrementalMode": {
            "title": "♻️ Incremental mode",
            "type": "boolean",
            "description": "Track jobs between runs and tag every record NEW / UPDATED / UNCHANGED / EXPIRED. Unchanged jobs are skipped and not charged.",
            "default": false
          },
          "stateKey": {
            "title": "🗝️ State key",
            "type": "string",
            "description": "Stable name for the tracked search. Leave empty to derive one automatically from your search settings."
          },
          "emitUnchanged": {
            "title": "🔁 Include unchanged jobs",
            "type": "boolean",
            "description": "Also emit jobs that have not changed since the previous run.",
            "default": false
          },
          "emitExpired": {
            "title": "🗑️ Include expired jobs",
            "type": "boolean",
            "description": "Emit jobs that were open last run but are gone now. Needs a run that reads the whole search (Max results 0 or above the number of matches).",
            "default": false
          },
          "skipReposts": {
            "title": "♻️ Skip re-posted jobs",
            "type": "boolean",
            "description": "Leave out jobs that an employer took down and posted again under a new link (same title, company and location as a job already tracked). They are not charged. Every new job still carries isRepost either way.",
            "default": false
          },
          "telegramToken": {
            "title": "💬 Telegram bot token",
            "type": "string",
            "description": "Bot token from @BotFather."
          },
          "telegramChatId": {
            "title": "🆔 Telegram chat ID",
            "type": "string",
            "description": "Chat or channel ID, e.g. \"-100123456789\" or \"@yourchannel\"."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack webhook URL",
            "type": "string",
            "description": "Slack incoming-webhook URL."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord webhook URL",
            "type": "string",
            "description": "Discord incoming-webhook URL."
          },
          "webhookUrl": {
            "title": "🪝 Webhook URL",
            "type": "string",
            "description": "Any HTTPS endpoint. Receives a JSON POST with the matched jobs — works with n8n, Make and Zapier."
          },
          "webhookHeaders": {
            "title": "🧾 Webhook headers",
            "type": "object",
            "description": "Extra headers for the webhook request, e.g. {\"Authorization\": \"Bearer xyz\"}."
          },
          "notificationLimit": {
            "title": "🔢 Jobs per notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many jobs to include in each notification message.",
            "default": 5
          },
          "notifyOnlyChanges": {
            "title": "🎯 Alert only on changes",
            "type": "boolean",
            "description": "In incremental mode, alerts list only new, updated and reappeared jobs, even when Include unchanged jobs is on.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "Optional. Not needed — the actor works without a proxy. Enable it only if your runs get refused.",
            "default": {
              "useApifyProxy": false
            }
          },
          "ignoreUrlFailures": {
            "title": "⏭️ Ignore URL failures",
            "type": "boolean",
            "description": "Skip start URLs that cannot be interpreted instead of failing the whole run.",
            "default": true
          },
          "maxRequestRetries": {
            "title": "🔄 Max request retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry a failed request before giving up on it.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}