{
  "openapi": "3.0.1",
  "info": {
    "title": "Arbeitsagentur Jobs Feed — German Federal Employment Agency",
    "description": "Extract job listings from arbeitsagentur.de — Germany's official public employment portal with 1M+ listings. Structured data with location, salary type, contract type, remote options.",
    "version": "1.0",
    "x-build-id": "Q5aEBuvhrHvxbTosT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blackfalcondata~arbeitsagentur-jobs-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blackfalcondata-arbeitsagentur-jobs-feed",
        "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/blackfalcondata~arbeitsagentur-jobs-feed/runs": {
      "post": {
        "operationId": "runs-sync-blackfalcondata-arbeitsagentur-jobs-feed",
        "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/blackfalcondata~arbeitsagentur-jobs-feed/run-sync": {
      "post": {
        "operationId": "run-sync-blackfalcondata-arbeitsagentur-jobs-feed",
        "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": {
          "query": {
            "title": "🔍 Search Term(s)",
            "type": "string",
            "description": "Job title or keyword (e.g., 'Software Developer', 'Krankenpfleger')"
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "City or region (e.g., 'Berlin', 'München', 'Hamburg')"
          },
          "maxResults": {
            "title": "💯 Max Results",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of job listings to return",
            "default": 25
          },
          "mode": {
            "title": "⚙️ Mode",
            "enum": [
              "full",
              "incremental"
            ],
            "type": "string",
            "description": "Full mode returns all matching jobs. Incremental mode returns only new or modified jobs since the last run — ideal for scheduled monitoring.",
            "default": "full"
          },
          "includeContact": {
            "title": "Include Contact Details",
            "type": "boolean",
            "description": "Fetch contact person name, email, phone, and application URL for each listing. Slower due to additional verification per job. Requires CAPSOLVER_API_KEY environment variable.",
            "default": false
          },
          "includeDetails": {
            "title": "📋 Include Full Details",
            "type": "boolean",
            "description": "Fetch full job description, employer profile, and benefits for each listing. Slower but richer data.",
            "default": false
          },
          "radius": {
            "title": "📡 Search Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Radius around location in km",
            "default": 0
          },
          "contractType": {
            "title": "📝 Contract Type",
            "enum": [
              "",
              "BEFRISTET",
              "UNBEFRISTET"
            ],
            "type": "string",
            "description": "Filter by contract duration",
            "default": ""
          },
          "jobType": {
            "title": "💼 Job Type",
            "enum": [
              "",
              "ARBEIT",
              "AUSBILDUNG",
              "SELBSTAENDIGKEIT",
              "PRAKTIKUM"
            ],
            "type": "string",
            "description": "Filter by listing type",
            "default": ""
          },
          "workType": {
            "title": "Work Type",
            "enum": [
              "",
              "VOLLZEIT",
              "TEILZEIT",
              "HOMEOFFICE",
              "MINIJOB",
              "SCHICHT"
            ],
            "type": "string",
            "description": "Filter by working hours",
            "default": ""
          },
          "bundesland": {
            "title": "Federal State (Bundesland)",
            "enum": [
              "",
              "BADEN_WUERTTEMBERG",
              "BAYERN",
              "BERLIN",
              "BRANDENBURG",
              "BREMEN",
              "HAMBURG",
              "HESSEN",
              "MECKLENBURG_VORPOMMERN",
              "NIEDERSACHSEN",
              "NORDRHEIN_WESTFALEN",
              "RHEINLAND_PFALZ",
              "SAARLAND",
              "SACHSEN",
              "SACHSEN_ANHALT",
              "SCHLESWIG_HOLSTEIN",
              "THUERINGEN"
            ],
            "type": "string",
            "description": "Filter by German federal state (client-side post-fetch — may fetch many result pages for sparse state/broad query combinations; combine with a location for best performance)",
            "default": ""
          },
          "remoteOnly": {
            "title": "Remote Only",
            "type": "boolean",
            "description": "Only show jobs with home office option",
            "default": false
          },
          "publishedSince": {
            "title": "Published Since (days)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Only show jobs published within the last N days. 0 = any time, 1 = last 24h, 7 = last week, 30 = last month.",
            "default": 0
          },
          "includeTemporaryWork": {
            "title": "Include Temporary Staffing",
            "type": "boolean",
            "description": "Include jobs from temporary staffing agencies (Zeitarbeitsfirmen)",
            "default": true
          },
          "employer": {
            "title": "Employer",
            "type": "string",
            "description": "Employer name (e.g., 'BMW', 'Deutsche Bahn', 'Robert Bosch GmbH'). Common brand names are resolved to the registered company name where possible. For guaranteed results, use the exact registered name (e.g., 'BMW AG')."
          },
          "skipReposts": {
            "title": "🚫 Skip Reposts",
            "type": "boolean",
            "description": "Exclude listings detected as reposts of previously seen jobs.",
            "default": false
          },
          "compact": {
            "title": "📦 Compact Output",
            "type": "boolean",
            "description": "When true, each result contains only the 10 most essential fields: referenceId, title, employer, location, region, publishedDate, contractType, isRemote, portalUrl, and description. Use this in AI-agent and MCP workflows where token budgets matter — compact output is significantly smaller than full output, reducing context window consumption and cost.",
            "default": false
          },
          "descriptionMaxLength": {
            "title": "✂️ Description Max Length",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Truncate the description field to this many characters, appending '...' if truncated. 0 means no truncation. Use in AI-agent workflows to control context window usage — 200–500 characters is usually enough for an LLM to classify or summarise a job. Pairs well with compact mode.",
            "default": 0
          },
          "telegramToken": {
            "title": "🤖 Telegram Bot Token",
            "type": "string",
            "description": "Telegram bot token from @BotFather. Required for Telegram notifications."
          },
          "telegramChatId": {
            "title": "💬 Telegram Chat ID",
            "type": "string",
            "description": "Telegram chat or channel ID where alerts are sent (e.g. \"-100123456789\" for a private group, or \"@yourchannel\")."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord Webhook URL",
            "type": "string",
            "description": "Discord incoming webhook URL. Get one from Server Settings → Integrations → Webhooks."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack Webhook URL",
            "type": "string",
            "description": "Slack incoming webhook URL. Create at api.slack.com/messaging/webhooks."
          },
          "whatsappPhoneNumberId": {
            "title": "📱 WhatsApp Phone Number ID",
            "type": "string",
            "description": "WhatsApp Business phone number ID from Meta Business Manager (NOT the phone number itself — the numeric ID shown next to your business number). Free service-conversation messages within 24 hours of last user-initiated contact."
          },
          "whatsappAccessToken": {
            "title": "🔐 WhatsApp Access Token",
            "type": "string",
            "description": "Meta Cloud API access token with `whatsapp_business_messaging` scope. Get a permanent token from a system user in Meta Business Manager."
          },
          "whatsappTo": {
            "title": "📨 WhatsApp Recipient",
            "type": "string",
            "description": "Recipient phone in E.164 format (e.g. +919876543210). Recipient must have messaged your business number within the last 24 hours — outside that window, free-form text is rejected by Meta."
          },
          "webhookUrl": {
            "title": "🪝 Generic Webhook URL",
            "type": "string",
            "description": "Generic webhook URL that receives a JSON POST with the full job payload + run metadata. Universal escape hatch for n8n / Make / Zapier / your own backend."
          },
          "webhookHeaders": {
            "title": "🔑 Webhook Headers",
            "type": "object",
            "description": "Optional headers (e.g. {\"Authorization\": \"Bearer xyz\"}) sent with the webhook POST."
          },
          "notificationLimit": {
            "title": "📊 Max Jobs Per Notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of jobs included in each notification message (1–20). Excess jobs are still in the dataset; notifications get a summary line.",
            "default": 5
          },
          "notifyOnlyChanges": {
            "title": "🔄 Notify Only New/Updated",
            "type": "boolean",
            "description": "When Incremental Mode is on, only send notifications for NEW / UPDATED / REAPPEARED jobs. Has no effect outside incremental mode.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}