openapi: "3.0.0"
info:
description: "Die größte Stellendatenbank Deutschlands durchsuchen, Details zu Stellenanzeigen und Informationen über Arbeitgeber abrufen.
Die Authentifizierung funktioniert über die clientId:
clientId: jobboerse-jobsuche
Bei folgenden GET-requests ist die clientId als Header-Parameter 'X-API-Key' zu übergeben.
Ablauf: (1) Stellen suchen via /pc/v6/jobs oder /pc/v4/app/jobs → refnr merken (in `/pc/v6/jobs` die `referenznummer`). (2) Details abrufen via /pc/v4/jobdetails/{base64(refnr)}. (3) Arbeitgeberlogo abrufen via /ct/v1/arbeitgeberlogo/{arbeitgeberKundennummerHash} (sofern vorhanden)."
version: "2.1.0"
title: "Arbeitsagentur Jobsuche API"
servers:
- url: "https://rest.arbeitsagentur.de/jobboerse/jobsuche-service"
paths:
/pc/v6/jobs:
get:
summary: Jobsuche
description: "Die Jobsuche ermöglicht verfügbare Jobangebote mit verschiedenen get Parametern zu filtern."
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobSearchResponse'
parameters:
- in: query
name: was
schema:
type: string
description: Freitext suche Jobtitel
example: Referatsleiter
required: false
- in: query
name: wo
schema:
type: string
description: Freitext suche Beschäftigungsort
example: Berlin
required: false
- in: query
name: berufsfeld
schema:
type: string
description: Freitext suche Berufsfeld
example: Informatik
required: false
- in: query
name: page
schema:
type: integer
description: Ergebnissseite
example: 1
required: false
- in: query
name: size
schema:
type: integer
example: 50
description: Anzahl von Ergebnissen
required: false
- in: query
name: arbeitgeber
schema:
type: string
example: Deutsche%20Bahn%20AG
description: Arbeitgeber der Stelle
required: false
- in: query
name: veroeffentlichtseit
schema:
type: integer
example: 30
description: Anzahl der Tage, seit der Job veröffentlicht wurde. Kann zwischen 0 und 100 Tagen liegen.
required: false
- in: query
name: zeitarbeit
schema:
type: boolean
example: true
description: Gibt an, ob Jobs von Zeitarbeitsfirmen in die Suchergebnisse einbezogen werden sollen (default true).
required: false
- in: query
name: angebotsart
schema:
type: integer
enum:
- 1
- 2
- 4
- 34
example: 1
description: 1=ARBEIT; 2=SELBSTAENDIGKEIT, 4=AUSBILDUNG/Duales Studium, 34=Praktikum/Trainee
required: false
- in: query
name: befristung
schema:
type: integer
enum:
- 1
- 2
example: 1
required: false
description: Semikolon-separierte mehrere Werte möglich (z.B. befristung=1;2) 1 = befristet; 2 = unbefristet
- in: query
name: arbeitszeit
schema:
type: string
enum:
- vz
- tz
- snw
- ho
- mj
description: Semikolon-separierte mehrere Werte möglich (z.B. arbeitszeit=vz;tz) vz=VOLLZEIT, tz=TEILZEIT, snw=SCHICHT_NACHTARBEIT_WOCHENENDE, ho=HEIM_TELEARBEIT, mj=MINIJOB
example: vz
required: false
- in: query
name: behinderung
schema:
type: boolean
example: true
required: false
- in: query
name: corona
schema:
type: boolean
example: true
description: Wenn true, werden nur Jobs die im Kontext von Corona angeboten werden angezeigt.
required: false
- in: query
name: umkreis
schema:
type: integer
description: Umkreis in Kilometern von Wo-Parameter. (z.B. 25 oder 200)
example: 25
required: false
/pc/v4/app/jobs:
get:
summary: Jobsuche via App
description: "Die Jobsuche via App ermöglicht verfügbare Jobangebote mit verschiedenen get Parametern zu filtern."
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobSearchResponse'
parameters:
- in: query
name: was
schema:
type: string
description: Freitext suche Jobtitel
example: Referatsleiter
required: false
- in: query
name: wo
schema:
type: string
description: Freitext suche Beschäftigungsort
example: Berlin
required: false
- in: query
name: berufsfeld
schema:
type: string
description: Freitext suche Berufsfeld
example: Informatik
required: false
- in: query
name: page
schema:
type: integer
description: Ergebnissseite
example: 1
required: false
- in: query
name: size
schema:
type: integer
example: 50
description: Anzahl von Ergebnissen
required: false
- in: query
name: arbeitgeber
schema:
type: string
example: Deutsche%20Bahn%20AG
description: Arbeitgeber der Stelle
required: false
- in: query
name: veroeffentlichtseit
schema:
type: integer
example: 30
description: Anzahl der Tage, seit der Job veröffentlicht wurde. Kann zwischen 0 und 100 Tagen liegen.
required: false
- in: query
name: zeitarbeit
schema:
type: boolean
example: true
description: Gibt an, ob Jobs von Zeitarbeitsfirmen in die Suchergebnisse einbezogen werden sollen (default true).
required: false
- in: query
name: angebotsart
schema:
type: integer
enum:
- 1
- 2
- 4
- 34
example: 1
description: 1=ARBEIT; 2=SELBSTAENDIGKEIT, 4=AUSBILDUNG/Duales Studium, 34=Praktikum/Trainee
required: false
- in: query
name: befristung
schema:
type: integer
enum:
- 1
- 2
example: 1
required: false
description: Semikolon-separierte mehrere Werte möglich (z.B. befristung=1;2) 1 = befristet; 2 = unbefristet
- in: query
name: arbeitszeit
schema:
type: string
enum:
- vz
- tz
- snw
- ho
- mj
description: Semikolon-separierte mehrere Werte möglich (z.B. arbeitszeit=vz;tz) vz=VOLLZEIT, tz=TEILZEIT, snw=SCHICHT_NACHTARBEIT_WOCHENENDE, ho=HEIM_TELEARBEIT, mj=MINIJOB
example: vz
required: false
- in: query
name: behinderung
schema:
type: boolean
example: true
required: false
- in: query
name: corona
schema:
type: boolean
example: true
description: Wenn true, werden nur Jobs die im Kontext von Corona angeboten werden angezeigt.
required: false
- in: query
name: umkreis
schema:
type: integer
description: Umkreis in Kilometern von Wo-Parameter. (z.B. 25 oder 200)
example: 25
required: false
/pc/v4/jobdetails/{encryptedJobCode}:
get:
summary: Jobdetails (v4)
description: "Abrufen der Details einer Stellenanzeige anhand des Base64-kodierten Referenzwertes (base64(refnr)). Empfohlene Version."
parameters:
- name: encryptedJobCode
in: path
required: true
schema:
type: string
example: MTAwMDEtMTAwMjcxNjkyMi1T
description: "Base64-kodierter Wert der refnr aus der Jobsuche. Beispiel: base64('10001-1002716922-S') = 'MTAwMDEtMTAwMjcxNjkyMi1T'"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobDetails'
/pc/v3/jobdetails/{encryptedJobCode}:
get:
summary: Jobdetails (v3)
description: "Abrufen der Details einer Stellenanzeige anhand des Base64-kodierten Referenzwertes (base64(refnr))."
parameters:
- name: encryptedJobCode
in: path
required: true
schema:
type: string
example: MTAwMDEtMTAwMjcxNjkyMi1T
description: "Base64-kodierter Wert der refnr aus der Jobsuche. Beispiel: base64('10001-1002716922-S') = 'MTAwMDEtMTAwMjcxNjkyMi1T'"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JobDetails'
/ct/v1/arbeitgeberlogo/{kundennummerHash}:
servers:
- url: "https://rest.arbeitsagentur.de/vermittlung/ag-darstellung-service"
get:
summary: Unternehmen Logo
description: "Abrufen des Logos eines Unternehmens anhand des arbeitgeberKundennummerHash aus der Jobdetail-Antwort. Gibt 404 zurück, wenn kein Logo vorhanden ist."
parameters:
- name: kundennummerHash
in: path
required: true
schema:
type: string
example: Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA=
description: "Wert des Feldes arbeitgeberKundennummerHash aus der Jobdetail-Antwort (URL-kodiert falls nötig)."
responses:
'200':
description: OK
content:
image/webp:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
'404':
description: Kein Logo für diesen Arbeitgeber vorhanden.
security:
- APIKeyHeaders: []
components:
securitySchemes:
APIKeyHeaders:
type: apiKey
in: header
name: X-API-Key
description: "X-API-Key ist die clientId jobboerse-jobsuche"
schemas:
JobSearchResponse:
type: "object"
properties:
stellenangebote:
type: array
items:
type: object
properties:
hashId:
type: string
example: WBTAiM10b25rJgZqiLhVIHzAF9e0rnV_DXdsRZtlb54=
beruf:
type: string
example: Elektroinstallateur/in
refnr:
type: string
example: 10000-1184867112-S
arbeitgeber:
type: string
example: Gröger & Oltermann Sicherheits- und Elektrotechnik GmbH
aktuelleVeroeffentlichungsdatum:
type: string
format: date
example: 2021-07-25
eintrittsdatum:
type: string
format: date
example: 2021-07-26
arbeitsort:
type: object
properties:
plz:
type: integer
example: 90537
ort:
type: string
example: Berlin
strasse:
type: string
example: Altdorfer Straße
region:
type: string
example: Berlin
land:
type: string
example: Deutschland
koordinaten:
type: object
properties:
lat:
type: number
example: 52.4926832
lon:
type: number
example: 13.4025753
kundennummerHash:
type: string
nullable: true
example: Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA=
description: "Hash-ID des Arbeitgebers für den Logo-Abruf. Ist nicht immer vorhanden."
externeUrl:
type: string
nullable: true
example: https://example.com/job/123
description: "Externe URL zur Stellenanzeige (optional)."
modifikationsTimestamp:
type: string
maxErgebnisse:
type: string
page:
type: string
size:
type: string
facetten:
type: array
items:
type: object
properties:
befristung:
type: object
properties:
counts:
type: object
maxCount:
type: integer
behinderung:
type: object
properties:
counts:
type: object
maxCount:
type: integer
pav:
type: object
properties:
counts:
type: object
maxCount:
type: integer
berufsfeld:
type: object
properties:
counts:
type: object
maxCount:
type: integer
arbeitsort:
type: object
properties:
counts:
type: object
maxCount:
type: integer
ausbildungsart:
type: object
properties:
counts:
type: object
maxCount:
type: integer
veroeffentlichtseit:
type: object
properties:
counts:
type: object
maxCount:
type: integer
schulbildung:
type: object
properties:
counts:
type: object
maxCount:
type: integer
arbeitsort_plz:
type: object
properties:
counts:
type: object
maxCount:
type: integer
arbeitgeber:
type: object
properties:
counts:
type: object
maxCount:
type: integer
beruf:
type: object
properties:
counts:
type: object
maxCount:
type: integer
branche:
type: object
properties:
counts:
type: object
maxCount:
type: integer
arbeitszeit:
type: object
properties:
counts:
type: object
maxCount:
type: integer
eintrittsdatum:
type: object
properties:
counts:
type: object
maxCount:
type: integer
zeitarbeit:
type: object
properties:
counts:
type: object
maxCount:
type: integer
corona:
type: object
properties:
counts:
type: object
maxCount:
type: integer
JobDetails:
type: object
properties:
aktuelleVeroeffentlichungsdatum:
type: string
format: date
example: 2021-07-25
angebotsart:
type: string
example: ARBEIT
arbeitgeber:
type: string
example: Kerstin Nickel Frisör
branchengruppe:
type: string
example: IT, Computer, Telekommunikation
branche:
type: string
example: Sonstige Softwareentwicklung
arbeitgeberHashId:
type: string
example: dj32HpGiU3tdrYi6ohcMOtUhtBLPvwGIRiRlcvDsebg=
arbeitgeberKundennummerHash:
type: string
nullable: true
example: Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA=
description: "Hash-ID des Arbeitgebers für den Logo-Abruf (/ct/v1/arbeitgeberlogo/{arbeitgeberKundennummerHash}). Kann null sein."
arbeitsorte:
type: array
items:
type: object
properties:
land:
type: string
example: Deutschland
region:
type: string
example: Berlin
plz:
type: string
example: "13597"
ort:
type: string
example: Berlin
strasse:
type: string
example: Jüdenstr. 31
koordinaten:
type: object
properties:
lat:
type: number
example: 52.5383857
lon:
type: number
example: 13.2029692
arbeitszeitmodelle:
type: array
items:
type: string
example: TEILZEIT
befristung:
type: string
example: UNBEFRISTET
uebernahme:
type: boolean
example: false
betriebsgroesse:
type: string
example: '2'
eintrittsdatum:
type: string
format: date
example: 2021-07-25
ersteVeroeffentlichungsdatum:
type: string
format: date
example: 2021-05-23
allianzpartner:
type: string
example: arbeitsagentur.de
allianzpartnerUrl:
type: string
example: http://www.arbeitsagentur.de
titel:
type: string
example: Wissenschaftlicher Mitarbeiter (m/w/d)
stellenangebotsTitel:
type: string
example: Wissenschaftlicher Mitarbeiter (m/w/d)
description: "Stellen-Titel (Feldname in v3/v4 jobdetails-Antworten)."
hashId:
type: string
example: VK2qoXBe0s-UAdH_qxLDRrZrY5iY8a1PJt3MjJCXsdo=
beruf:
type: string
example: Wissenschaftliche/r Mitarbeiter/in (Hochschule)
modifikationsTimestamp:
type: string
example: 2021-07-25T13:12:33.913
stellenbeschreibung:
type: string
stellenangebotsBeschreibung:
type: string
description: "Stellenbeschreibung (Feldname in v3/v4 jobdetails-Antworten)."
refnr:
type: string
example: 10000-1183999289-S
referenznummer:
type: string
example: 10000-1183999289-S
description: "Referenznummer der Stelle (Feldname in v3/v4 jobdetails-Antworten)."
fuerFluechtlingeGeeignet:
type: boolean
example: false
nurFuerSchwerbehinderte:
type: boolean
example: false
anzahlOffeneStellen:
type: integer
format: int32
example: 1
arbeitgeberAdresse:
type: object
properties:
land:
type: string
example: Deutschland
region:
type: string
example: Berlin
plz:
type: string
example: "13597"
ort:
type: string
example: Berlin
strasse:
type: string
example: Jüdenstr. 31
strasseHausnummer:
type: string
example: Jüdenstr. 31
fertigkeiten:
type: array
items:
type: object
properties:
hierarchieName:
type: string
example: Soziales, Erziehung, Gesundheit, Sport
auspraegungen:
type: object
mobilitaet:
type: object
properties:
reisebereitschaft:
type: string
example: '1'
fuehrungskompetenzen:
type: object
properties:
hatVollmacht:
type: boolean
example: false
hatBudgetverantwortung:
type: boolean
example: false
verguetung:
type: string
example: Entgeltgruppe 13 TV-L
arbeitgeberdarstellungUrl:
type: string
example: http://www.friseur-nickel.de
arbeitgeberdarstellung:
type: string
hauptDkz:
type: string
example: "9907"
istBetreut:
type: boolean
istGoogleJobsRelevant:
type: boolean
anzeigeAnonym:
type: boolean
externalDocs:
description: "Weiterführende Dokumentation"
url: "https://github.com/bundesAPI/jobsuche-api"