Hirers must specify a pay type, salary range and description of the remuneration package for their job ad. This can be automatically mapped from your software’s internal representation, or presented as SEEK-specific input:
Remuneration packages are specified in the
offeredRemunerationPackagefield within all job posting mutations, and its schema is defined by the input type
A hirer must specify the pay type for the remuneration package. This is expressed using a combination of two fields:
There are currently four valid pay types:
Employment paid exclusively a results-based commission
Employment paid on an annual basis
Employment paid on an annual basis plus a results-based commission
Employment paid for the number of hours worked
CommissionOnlybasis is being phased out; it does not need to be supported in new SEEK API integrations.
The SEEK API does not support dynamically querying the valid pay type combinations. Instead, your software should hardcode the combinations that it supports. This is to ensure future pay types (e.g. monthly salary) aren’t accidentally enabled in your software without proper testing.
The currency for the salary range is specified in the
currencyfield within the
maximumAmountfields. It must be provided as a three-letter ISO 4217 currency code in uppercase, and the same currency must be used in the minimum and maximum.
Currently, the position’s location determines the required currency:
GBPis required for positions located in the UK & Ireland. These are locations that have a
IE.Note that this requires positions in the Republic of Ireland to use salaries denominated in
GBP, even though their local currency is
AUDis required for positions in all other locations, regardless of their local currency.
While the currency can be derived from the location, it must be explicitly specified to ensure the appropriate currency was presented to the hirer in the job posting flow. An explicit currency will also allow the SEEK API to accept additional currencies in a backward compatible way.
When posting a job ad, the hirer must specify a salary range with a minimum and optional maximum amount. The amount is a floating point value in the major currency unit (e.g. dollars), calculated over the provided interval. You may specify a precision up to the minor unit of the currency. For example, the AUD currency accepts
12.34to represent the natural number
1234in cents. On the other hand, it does not accept
12.345as such a value attempts to subdivide the minor unit.
The salary range is used to provide more relevant job search results to candidates, but it’s not displayed on the job ad. Hirers can provide a salary description to communicate the remuneration package to the candidate.
Salary ranges are used to refine candidate job searches but aren’t directly visible to candidates. The hirer must provide a free text description if they want to communicate the position’s remuneration.
RemunerationPackageInput.descriptionsfield displays a friendly remuneration package description to candidates. Hirers can use this field to give a short summary of remuneration, including further benefits such as bonus options and superannuation. Note that this field has a maximum length of 50 UTF-8 bytes which roughly corresponds to a single English sentence.
For example, if a hirer set the salary description field to
$100k–$120k + super + bonusit will appear on SEEK like so:
There are two categories of salary validation rules:
- The basic rules documented on this page and the corresponding schema documentation. For example, the maximum amount must always be greater than or equal to the minimum amount.You should enforce these rules in your software’s frontend to give the hirer feedback before they continue with the job posting flow.
- Internal rules that the SEEK API only enforces when the hirer attempts to post the job ad.SEEK will revise its internal salary rules in the future. To support this, your software should display all validation error messages it receives from the SEEK API to the hirer.
When a job ad’s salary fails validation the posting mutation will fail with a
BAD_USER_INPUTerror. The error will contain both a top-level summary
While the SEEK API will attempt to provide an actionable summary, this is not always possible when multiple fields have errors. You’re encouraged to map the
invalidFieldsmessages back to the relevant fields in your job posting form. Otherwise, the hirer might not have enough information to correct the invalid fields.
When a hirer provides an overly-long description and a salary range where the minimum is greater than the maximum, the SEEK API will respond with a set of invalid fields like the following:
"message": "Invalid remuneration",
"/input/positionProfile/offeredRemunerationPackage/ranges/0/maximumAmount/value": "Must be greater than or equal to the minimum value",
"/input/positionProfile/offeredRemunerationPackage/descriptions": "Cannot exceed 50 UTF-8 bytes"
Note that the SEEK API was unable to generate a top-level
messagethat summarised both validation errors. This demonstrates the importance of mapping the
invalidFieldsmessages to the relevant fields on your job posting form.