Jobs-database.de API

List, search and fetch job postings.


List jobs

GET
https://api.jobs-database.de
/v1/jobs
X-API-Key (header)

Returns all jobs, page by page, ordered by id ascending. Pass the next_cursor of a page as cursor to get the next page.

Billing: each job in items counts once against your monthly allowance. If fewer jobs are left in your allowance than limit, the page is cut to what is left (has_more is still true if more jobs follow).

List jobs › query Parameters

limit
​integer · min: 1 · max: 100

Number of jobs per page.

Default: 20
cursor
​string · maxLength: 128

The next_cursor of the previous page. Omit it to start at the beginning. Treat it as an opaque string and pass it back unchanged.

List jobs › Responses

A page of jobs.

One page of jobs, shared by list and search.
​Job[] · required

The jobs on this page, ordered by id ascending.

has_more
​boolean · required

true if at least one more job follows this page.

next_cursor
​string | null · required

Pass as cursor to get the next page. null when has_more is false.


Search jobs

GET
https://api.jobs-database.de
/v1/search
X-API-Key (header)

Returns jobs whose title or organization contains q, page by page, ordered by id ascending (not by relevance).

Matching is a case-insensitive substring match. % and _ in q are matched literally. Leading and trailing spaces are trimmed before matching. There are no other filters.

Billing: each job in items counts once against your monthly allowance, exactly as for GET /v1/jobs.

Search jobs › query Parameters

q
​string · minLength: 3 · maxLength: 200 · required

Search term. At least 3 characters after trimming spaces; at most 200 characters as sent.

limit
​integer · min: 1 · max: 100

Number of jobs per page.

Default: 20
cursor
​string · maxLength: 128

The next_cursor of the previous page. Omit it to start at the beginning. Treat it as an opaque string and pass it back unchanged.

Search jobs › Responses

A page of jobs.

One page of jobs, shared by list and search.
​Job[] · required

The jobs on this page, ordered by id ascending.

has_more
​boolean · required

true if at least one more job follows this page.

next_cursor
​string | null · required

Pass as cursor to get the next page. null when has_more is false.


Get one job

GET
https://api.jobs-database.de
/v1/jobs/{job_id}
X-API-Key (header)

Returns one job object (no items wrapper).

Billing: a found job counts 1 against your monthly allowance; a 404 counts nothing. The request still needs at least 1 job left in your allowance, otherwise it answers 429 (monthly allowance used up).

Get one job › path Parameters

job_id
​integer · int64 · required

The integer id of a job, as returned by list or search.

Get one job › Responses

The job.

One job posting. Every field is always present; a value that is not known is `null`. A source that published an empty value can reach you as an empty string (or a list holding one), so treat `""` like `null`. Field names follow the widely used fantastic.jobs vocabulary. Despite the `ai_` prefix, the employment-type, work-arrangement and salary fields are taken from the posting, not generated by a model. Fields ending in `_derived` are lists with one element, or `null` — except `domain_derived`, which is a plain string.
id
​integer · int64 · required

Job id. Stable; use it for GET /v1/jobs/{job_id} and for de-duplication.

title
​string · required

Job title as posted.

organization
​string · required

Name of the hiring company.

url
​string · uri · required

Link to the original posting on the company's applicant tracking system.

date_posted
​string | null · date-time · required

When the posting says it was published (ISO 8601 with UTC offset).

date_created
​string | null · date-time · required

When we first recorded the job (ISO 8601 with UTC offset). Can be earlier than date_posted if the employer re-dated the posting.

date_valid_through
​string | null · date-time · required

Closing date, if the posting gives one (ISO 8601 with UTC offset).

source_type
​string · const · required

Always ats — every job comes from an applicant tracking system.

Const value: ats
source
​string | null · required

Short name of the applicant tracking system the job was collected from.

source_domain
​string | null · required

Host the posting is served from, without www.. Only set when source is known.

domain_derived
​string | null · required

The hiring company's own web domain, when known.

locations_derived
​array | null · required

Display location as City, State, Country (parts that are not known are left out).

cities_derived
​array | null · required

City.

regions_derived
​array | null · required

State or province.

countries_derived
​array | null · required

Country name (an ISO 3166-1 alpha-2 code when the name is not known).

timezones_derived
​array | null · required

IANA time zone of the city.

lats_derived
​array | null · required

Latitude of the city.

lngs_derived
​array | null · required

Longitude of the city.

employment_type
​array | null · required

Employment type as posted.

Enum values:
FULL_TIME
PART_TIME
CONTRACTOR
INTERN
TEMPORARY
VOLUNTEER
OTHER
ai_employment_type
​array | null · required

Same value as employment_type (kept for compatibility with the fantastic.jobs format).

Enum values:
FULL_TIME
PART_TIME
CONTRACTOR
INTERN
TEMPORARY
VOLUNTEER
OTHER
ai_work_arrangement
​string | null · enum · required

Work arrangement as posted. null when the posting does not state it clearly.

Enum values:
On-site
Hybrid
Remote Solely
ai_salary_currency
​string | null · required

Salary currency as posted, e.g. USD.

ai_salary_min_value
​number | null · required

Lower salary bound as posted. Never converted or annualised.

ai_salary_max_value
​number | null · required

Upper salary bound as posted. Never converted or annualised.

ai_salary_unit_text
​string | null · enum · required

Period the salary values refer to. null when unknown or for other periods (for example daily).

Enum values:
HOUR
WEEK
MONTH
YEAR