> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automindz.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Scrape Arbeitsagentur jobs

> Search the Bundesagentur für Arbeit job board and extract structured listings, optionally with recruiter contacts

Searches the German federal job board ([arbeitsagentur.de](https://www.arbeitsagentur.de/jobsuche/)) by title and/or location and returns structured job listings. It queries the board directly through its official search API, so results are reliable and paginated.

Optionally, set `solve_captcha` to fill recruiter contact details (email / phone / name) that the board hides behind a CAPTCHA-gated contact tile.

The pipeline runs asynchronously. Use the returned `request_id` to [poll for results](/api-reference/endpoint/get-arbeitsagentur-jobs-status).

<Tip>
  **Timing guidance:** Listing-only searches finish in well under a minute. With `solve_captcha` enabled, each job without an in-text contact triggers a CAPTCHA solve — expect a few seconds per job. Poll every 15–30 seconds.
</Tip>

## How it works

1. Builds the Arbeitsagentur search from `title` (`was`), `location` (`wo`), `radius` (`umkreis`), and optional `job_type`
2. Pages through the official search API up to `max_pages`, de-duplicating by reference number
3. Optionally fetches each job's detail page for the full description (`include_details`)
4. When `solve_captcha` is true, solves the contact-tile CAPTCHA per job and fills `hiring_manager_email` / `hiring_manager_phone` / `hiring_manager_name`
5. Returns structured job listings (company, search URLs, totals, and the jobs array)

<Note>
  Provide at least one of `title` or `location`. `radius` only applies when a `location` is set.
</Note>

## Response

The request is accepted immediately and returns a `request_id` — no jobs are returned here. Poll [Get Arbeitsagentur job scrape status](/api-reference/endpoint/get-arbeitsagentur-jobs-status) with that id to retrieve the results.

```json theme={null}
{
  "request_id": "run_ba_abc123",
  "status": "QUEUED"
}
```


## OpenAPI

````yaml openapi.json POST /v1/scrape-arbeitsagentur-jobs/async
openapi: 3.1.0
info:
  title: Automindz API
  version: 0.1.0
servers:
  - url: https://api.automindz.co
    description: Production
security: []
paths:
  /v1/scrape-arbeitsagentur-jobs/async:
    post:
      tags:
        - scrape-arbeitsagentur-jobs
      summary: Scrape Arbeitsagentur Jobs
      operationId: scrape_arbeitsagentur_jobs_v1_scrape_arbeitsagentur_jobs_async_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArbeitsagenturJobsRequest'
            example:
              title: Maler
              location: Berlin
              radius: 25
              job_type: full-time
              max_pages: 1
              solve_captcha: true
        required: true
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArbeitsagenturJobsResponse'
              example:
                request_id: run_ba_abc123
                status: QUEUED
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    ArbeitsagenturJobsRequest:
      properties:
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: >-
            Job title / keyword to search (BA `was`). At least one of title or
            location is required.
        location:
          anyOf:
            - type: string
            - type: 'null'
          title: Location
          description: >-
            City or place to search around (BA `wo`). At least one of title or
            location is required.
        radius:
          type: integer
          minimum: 0
          title: Radius
          description: >-
            Search radius in km around `location` (BA `umkreis`). Ignored when
            no location.
          default: 25
        job_type:
          anyOf:
            - type: string
              enum:
                - full-time
                - part-time
                - mini-job
                - home-office
            - type: 'null'
          title: Job Type
          description: >-
            Working-time filter, mapped to BA `arbeitszeit` (full-time→vz,
            part-time→tz, mini-job→mj, home-office→ho).
        max_pages:
          type: integer
          maximum: 20
          minimum: 1
          title: Max Pages
          description: Number of search result pages to fetch.
          default: 3
        page_size:
          type: integer
          maximum: 100
          minimum: 1
          title: Page Size
          description: Results per page.
          default: 25
        include_details:
          type: boolean
          title: Include Details
          description: Fetch each job's detail page for the full description (slower).
          default: true
        solve_captcha:
          type: boolean
          title: Solve Captcha
          description: >-
            When true, solve the CAPTCHA-gated contact tile per job to fill
            recruiter email/phone/name. Off by default.
          default: false
      type: object
      title: ArbeitsagenturJobsRequest
    ArbeitsagenturJobsResponse:
      properties:
        request_id:
          type: string
          title: Request Id
        status:
          type: string
          title: Status
          default: QUEUED
      type: object
      required:
        - request_id
      title: ArbeitsagenturJobsResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````