{
  "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": "37BMzqjf30ajhshYL"
  },
  "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": {
          "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."
          },
          "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 and charge only jobs that are new or whose modification date changed since the last run. The first run is the baseline (all matches are new). 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}