{
  "openapi": "3.0.1",
  "info": {
    "title": "Arbeitsagentur Jobs Scraper — BA Jobsuche Germany",
    "description": "Scrape Arbeitsagentur / Bundesagentur für Arbeit job listings (Germany Jobsuche). Search by keyword, location, filters, search URLs, or job-detail URLs. Export title, employer, city, contacts, contract type, salary notes, full description, and application links. Fast HTTP API — no browser.",
    "version": "1.0",
    "x-build-id": "JoM5u3lbMHCym3Iub"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawloop~arbeitsagentur-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawloop-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/crawloop~arbeitsagentur-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawloop-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/crawloop~arbeitsagentur-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawloop-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": {
          "includePhones": {
            "title": "Include phone numbers",
            "type": "boolean",
            "description": "Off by default. Include phone, mobile, WhatsApp, or fax fields already published on public pages only when you have a lawful basis.",
            "default": false
          },
          "includeEmails": {
            "title": "Include email addresses",
            "type": "boolean",
            "description": "Off by default. Include email fields already published on public pages only when you have a lawful basis.",
            "default": false
          },
          "position": {
            "title": "Position / keywords",
            "type": "string",
            "description": "Job title or free-text keywords (API parameter `was`). Example: Softwareentwickler, Pflegefachkraft."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, or place name (API parameter `wo`). Example: Berlin, München, Hamburg."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Arbeitsagentur search URLs (`/jobsuche/suche?...`) and/or job-detail URLs (`/jobsuche/jobdetail/{refnr}`). Search query parameters merge with the filters below. Job-detail URLs fetch that listing only.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of job listings to collect across all searches. Use 0 for unlimited (subject to portal result caps).",
            "default": 100
          },
          "fetchDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "When true, call the job-details endpoint for each listing to get the full description and richer fields. Slightly slower but much more complete.",
            "default": true
          },
          "offerType": {
            "title": "Offer type",
            "enum": [
              "",
              "1",
              "2",
              "4",
              "34"
            ],
            "type": "string",
            "description": "Angebotsart filter.",
            "default": "1"
          },
          "contractType": {
            "title": "Contract duration",
            "enum": [
              "",
              "1",
              "2",
              "1;2"
            ],
            "type": "string",
            "description": "Befristung filter. Multiple values allowed via semicolon in the API; this select covers the common cases.",
            "default": ""
          },
          "workingTime": {
            "title": "Working time",
            "uniqueItems": true,
            "type": "array",
            "description": "Arbeitszeit filters. Multiple values are combined (semicolon-separated in the API).",
            "items": {
              "type": "string",
              "enum": [
                "vz",
                "tz",
                "snw",
                "ho",
                "mj"
              ],
              "enumTitles": [
                "Full-time (Vollzeit)",
                "Part-time (Teilzeit)",
                "Shift / night / weekend",
                "Home office / remote",
                "Mini-job"
              ]
            },
            "default": []
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Search radius in kilometres around the location (`umkreis`). Example: 25 or 200.",
            "default": 25
          },
          "employer": {
            "title": "Employer",
            "type": "string",
            "description": "Filter by employer name (`arbeitgeber`). Example: Deutsche Bahn AG."
          },
          "occupationalField": {
            "title": "Occupational field",
            "type": "string",
            "description": "Berufsfeld free-text filter. Example: Informatik, Pflege."
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only jobs published within the last N days (`veroeffentlichtseit`). Range 0–100."
          },
          "publishedWithinHours": {
            "title": "Published within (hours)",
            "minimum": 1,
            "maximum": 2400,
            "type": "integer",
            "description": "Same portal filter as days. The Jobsuche API is day-grained, so 1–24 hours means the last day. When both hour and day windows are set, the tighter one is used."
          },
          "bundesland": {
            "title": "Federal state",
            "enum": [
              "",
              "Baden-Württemberg",
              "Bayern",
              "Berlin",
              "Brandenburg",
              "Bremen",
              "Hamburg",
              "Hessen",
              "Mecklenburg-Vorpommern",
              "Niedersachsen",
              "Nordrhein-Westfalen",
              "Rheinland-Pfalz",
              "Saarland",
              "Sachsen",
              "Sachsen-Anhalt",
              "Schleswig-Holstein",
              "Thüringen"
            ],
            "type": "string",
            "description": "German federal state. Used as the location (`wo`) only when Location is empty."
          },
          "entryFrom": {
            "title": "Entry from",
            "type": "string",
            "description": "Start month `YYYY-MM` (or `YYYY-MM-DD`). Mapped to the portal entry-date bucket for that month."
          },
          "excludeExternalJobs": {
            "title": "Exclude external job boards",
            "type": "boolean",
            "description": "Drop listings syndicated from partner boards (`externestellenboersen=false`).",
            "default": false
          },
          "remoteOnly": {
            "title": "Remote only (100%)",
            "type": "boolean",
            "description": "Only jobs the portal marks as 100% home office (`homeoffice=prozentual_100`).",
            "default": false
          },
          "remotePercentageMin": {
            "title": "Minimum home-office percent",
            "enum": [
              "50",
              "100"
            ],
            "type": "string",
            "description": "50 = at least half remote (`prozentual_50`). 100 = fully remote. Ignored when Remote only is on."
          },
          "searches": {
            "title": "Searches",
            "type": "array",
            "description": "Several keyword and city pairs in one run. Top-level filters apply to each row unless that row overrides them.",
            "items": {
              "type": "object",
              "properties": {
                "position": {
                  "title": "Position / keywords",
                  "type": "string",
                  "description": "Job title or keywords for this search row.",
                  "editor": "textfield"
                },
                "location": {
                  "title": "Location",
                  "type": "string",
                  "description": "City or region for this search row.",
                  "editor": "textfield"
                },
                "radiusKm": {
                  "title": "Radius (km)",
                  "type": "integer",
                  "description": "Search radius in kilometres for this row.",
                  "minimum": 0,
                  "maximum": 200
                }
              }
            }
          },
          "includeTemporaryAgencies": {
            "title": "Include temporary agencies",
            "type": "boolean",
            "description": "Include jobs from temporary employment agencies (`zeitarbeit`). Default true.",
            "default": true
          },
          "includePrivatePlacement": {
            "title": "Include private placement agencies",
            "type": "boolean",
            "description": "Include jobs from private placement agencies (`pav`). Leave unset for portal default.",
            "default": true
          },
          "disabilityFriendly": {
            "title": "Disability-friendly only",
            "type": "boolean",
            "description": "When true, only return jobs marked for applicants with disabilities (`behinderung`).",
            "default": false
          },
          "careerChangeSuitable": {
            "title": "Career-change suitable",
            "type": "boolean",
            "description": "When true, only jobs marked suitable for career changers (`quereinstieg`).",
            "default": false
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "date",
              "distance"
            ],
            "type": "string",
            "description": "Jobsuche result order. Distance requires a location.",
            "default": "relevance"
          },
          "monitorMode": {
            "title": "Monitor mode",
            "type": "boolean",
            "description": "On a schedule, push jobs that are new, updated, or removed since the last run. The first complete scan is the baseline. Removed is emitted only when this run scans the whole result set for that query (maxItems 0, or high enough not to stop early). An empty response does not clear the watch. Pair with an Apify Schedule and a stable monitorStoreName.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named Key-Value store for seen refnr + modifiedAt across scheduled runs. Use a distinct name per watch (e.g. pflege-berlin vs it-hamburg).",
            "default": "arbeitsagentur-jobs-monitor"
          },
          "resetMonitorState": {
            "title": "Reset monitor state",
            "type": "boolean",
            "description": "Clear the seen-job cache before this run (the next completed run becomes a new baseline).",
            "default": false
          },
          "pageSize": {
            "title": "Page size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Number of search results requested per API page (1–100).",
            "default": 50
          },
          "concurrency": {
            "title": "Detail concurrency",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Max parallel job-detail requests when fetchDetails is enabled.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Required on Apify. Arbeitsagentur returns 0 results from platform IPs without a proxy. DE residential recommended.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "DE"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}