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"