Hello,
we re-tested the live BA Jobsuche API and now have a reproducible working flow for:
- vacancy discovery
- vacancy detail retrieval
- employer logo retrieval
The main issue is that the currently working live API behavior does not match the currently published documentation / OpenAPI on:
Summary
From live testing, the currently working flow is:
-
Discover vacancies via:
GET /pc/v4/jobs
- or
GET /pc/v4/app/jobs
-
Retrieve vacancy details via:
GET /pc/v3/jobdetails/{base64(refnr)}
- or
GET /pc/v4/jobdetails/{base64(refnr)}
-
Retrieve employer logo via:
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{kundennummerHash}
However, the current public docs/OpenAPI still expose only:
/pc/v4/jobs
/pc/v4/app/jobs
/ed/v1/arbeitgeberlogo/{hashID}
and do not document the currently working jobdetails flow.
Confirmed working live flow
1. Vacancy discovery
These endpoints work for vacancy discovery:
GET /pc/v4/jobs
GET /pc/v4/app/jobs
In live responses we consistently observed fields such as:
refnr
titel
arbeitgeber
arbeitsort
beruf
kundennummerHash (optional)
externeUrl (optional)
In our live samples, we did not see a usable hashId in the listing payload.
2. Vacancy details
The currently working detail lookup is based on refnr, not on hashId.
The working key is:
Confirmed working endpoints:
GET /pc/v3/jobdetails/{base64(refnr)}
GET /pc/v4/jobdetails/{base64(refnr)}
Example:
refnr = 10001-1002716922-S
base64(refnr) = MTAwMDEtMTAwMjcxNjkyMi1T
Working requests:
GET /pc/v3/jobdetails/MTAwMDEtMTAwMjcxNjkyMi1T -> 200
GET /pc/v4/jobdetails/MTAwMDEtMTAwMjcxNjkyMi1T -> 200
Non-working request:
GET /pc/v2/jobdetails/MTAwMDEtMTAwMjcxNjkyMi1T -> 403
The detail response returns fields such as:
stellenangebotsBeschreibung
stellenangebotsTitel
referenznummer
arbeitgeberKundennummerHash
So at least in the currently working live API, vacancy details are retrievable via base64(refnr).
3. Employer logo
The currently working logo lookup is:
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{kundennummerHash}
Example with an existing logo:
refnr = 12016-10004206993-S
- detail request works
arbeitgeberKundennummerHash = Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA=
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA%3D -> 200 image/webp
4. Important edge cases
a) Details work even when the listing has no kundennummerHash
We found live listings that have:
refnr
externeUrl
- no
kundennummerHash
Example:
refnr = 18024-100YY0001DV0U-S
externeUrl = https://helixjobs.com/_/jobad?prj=2142p4681&source=ba
For this vacancy:
GET /pc/v3/jobdetails/{base64(refnr)} -> 200
stellenangebotsBeschreibung is present
arbeitgeberKundennummerHash is null
This suggests:
kundennummerHash is not required for vacancy detail retrieval
- it is only relevant for employer/logo retrieval
- some listings may simply not expose a logo identifier at all
b) 404 on the working logo endpoint appears to mean “logo not available”
We tested a case where details work, but the logo endpoint returns 404:
refnr = 10001-1002716922-S
GET /pc/v3/jobdetails/{base64(refnr)} -> 200
arbeitgeberKundennummerHash = fP-AxW5lLoUep5J8SsYdE6zrucX-wqNZGBX_OFYHyJY=
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{...} -> 404
We also tested a case where the same endpoint returns a real image:
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA%3D -> 200 image/webp
So 404 on the currently working ct/v1 logo endpoint appears to be a normal “logo not available” case, not necessarily an API misuse case.
What appears to be out of sync
Current OpenAPI/docs still expose only:
/pc/v4/jobs
/pc/v4/app/jobs
/ed/v1/arbeitgeberlogo/{hashID}
But the live working behavior we verified is:
- discovery via
/pc/v4/jobs or /pc/v4/app/jobs
- details via
/pc/v3/jobdetails/{base64(refnr)} or /pc/v4/jobdetails/{base64(refnr)}
- logo via
/vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{kundennummerHash}
The currently documented logo endpoint does not match our live tests:
GET /vermittlung/ag-darstellung-service/ed/v1/arbeitgeberlogo/{kundennummerHash} -> 403
GET /jobboerse/jobsuche-service/ed/v1/arbeitgeberlogo/{kundennummerHash} -> 403
So ed/v1 does not appear to be the currently working public logo path for kundennummerHash, while ct/v1 does.
Request
Could you please:
- Document the currently supported vacancy detail lookup path
- Document clearly that the currently working detail key is
base64(refnr)
- Document the currently supported employer logo path and identifier
- Document the important edge cases:
- listings without
kundennummerHash
404 from the working logo endpoint when no logo exists
- Align:
jobsuche.api.bund.dev
openapi.yaml
- generated clients / examples
- Clarify whether:
/pc/v3/jobdetails/{base64(refnr)}
/pc/v4/jobdetails/{base64(refnr)}
are both supported, and which one should be preferred
Related issues
This seems related to:
At this point the main issue is no longer only how to reverse-engineer the workaround, but documenting the currently working API contract clearly and consistently across all official/public surfaces.
Thanks.
Hello,
we re-tested the live BA Jobsuche API and now have a reproducible working flow for:
The main issue is that the currently working live API behavior does not match the currently published documentation / OpenAPI on:
Summary
From live testing, the currently working flow is:
Discover vacancies via:
GET /pc/v4/jobsGET /pc/v4/app/jobsRetrieve vacancy details via:
GET /pc/v3/jobdetails/{base64(refnr)}GET /pc/v4/jobdetails/{base64(refnr)}Retrieve employer logo via:
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{kundennummerHash}However, the current public docs/OpenAPI still expose only:
/pc/v4/jobs/pc/v4/app/jobs/ed/v1/arbeitgeberlogo/{hashID}and do not document the currently working jobdetails flow.
Confirmed working live flow
1. Vacancy discovery
These endpoints work for vacancy discovery:
GET /pc/v4/jobsGET /pc/v4/app/jobsIn live responses we consistently observed fields such as:
refnrtitelarbeitgeberarbeitsortberufkundennummerHash(optional)externeUrl(optional)In our live samples, we did not see a usable
hashIdin the listing payload.2. Vacancy details
The currently working detail lookup is based on
refnr, not onhashId.The working key is:
base64(refnr)Confirmed working endpoints:
GET /pc/v3/jobdetails/{base64(refnr)}GET /pc/v4/jobdetails/{base64(refnr)}Example:
refnr = 10001-1002716922-Sbase64(refnr) = MTAwMDEtMTAwMjcxNjkyMi1TWorking requests:
GET /pc/v3/jobdetails/MTAwMDEtMTAwMjcxNjkyMi1T->200GET /pc/v4/jobdetails/MTAwMDEtMTAwMjcxNjkyMi1T->200Non-working request:
GET /pc/v2/jobdetails/MTAwMDEtMTAwMjcxNjkyMi1T->403The detail response returns fields such as:
stellenangebotsBeschreibungstellenangebotsTitelreferenznummerarbeitgeberKundennummerHashSo at least in the currently working live API, vacancy details are retrievable via
base64(refnr).3. Employer logo
The currently working logo lookup is:
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{kundennummerHash}Example with an existing logo:
refnr = 12016-10004206993-SarbeitgeberKundennummerHash = Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA=GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA%3D->200 image/webp4. Important edge cases
a) Details work even when the listing has no
kundennummerHashWe found live listings that have:
refnrexterneUrlkundennummerHashExample:
refnr = 18024-100YY0001DV0U-SexterneUrl = https://helixjobs.com/_/jobad?prj=2142p4681&source=baFor this vacancy:
GET /pc/v3/jobdetails/{base64(refnr)}->200stellenangebotsBeschreibungis presentarbeitgeberKundennummerHashisnullThis suggests:
kundennummerHashis not required for vacancy detail retrievalb)
404on the working logo endpoint appears to mean “logo not available”We tested a case where details work, but the logo endpoint returns
404:refnr = 10001-1002716922-SGET /pc/v3/jobdetails/{base64(refnr)}->200arbeitgeberKundennummerHash = fP-AxW5lLoUep5J8SsYdE6zrucX-wqNZGBX_OFYHyJY=GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{...}->404We also tested a case where the same endpoint returns a real image:
GET /vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/Z-HzVkUCLGQiQFxQSAICs302sSdB9Sp7XtgOiO4GGCA%3D->200 image/webpSo
404on the currently workingct/v1logo endpoint appears to be a normal “logo not available” case, not necessarily an API misuse case.What appears to be out of sync
Current OpenAPI/docs still expose only:
/pc/v4/jobs/pc/v4/app/jobs/ed/v1/arbeitgeberlogo/{hashID}But the live working behavior we verified is:
/pc/v4/jobsor/pc/v4/app/jobs/pc/v3/jobdetails/{base64(refnr)}or/pc/v4/jobdetails/{base64(refnr)}/vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{kundennummerHash}The currently documented logo endpoint does not match our live tests:
GET /vermittlung/ag-darstellung-service/ed/v1/arbeitgeberlogo/{kundennummerHash}->403GET /jobboerse/jobsuche-service/ed/v1/arbeitgeberlogo/{kundennummerHash}->403So
ed/v1does not appear to be the currently working public logo path forkundennummerHash, whilect/v1does.Request
Could you please:
base64(refnr)kundennummerHash404from the working logo endpoint when no logo existsjobsuche.api.bund.devopenapi.yaml/pc/v3/jobdetails/{base64(refnr)}/pc/v4/jobdetails/{base64(refnr)}are both supported, and which one should be preferred
Related issues
This seems related to:
At this point the main issue is no longer only how to reverse-engineer the workaround, but documenting the currently working API contract clearly and consistently across all official/public surfaces.
Thanks.