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:
Pay details
Pay range ($AUD)
Enter a pay range to offer candidates (this will not show on your ad)
E.g. $50,000 + annual bonus
Remuneration packages are specified in the
offeredRemunerationPackage
field within all job posting mutations, and its schema is defined by the input type RemunerationPackageInput
.A hirer must specify the pay type for the remuneration package.
This is expressed using a combination of two fields:
- The
basisCode
defines how the remuneration for the position is calculated. - The
intervalCode
defines the period of time the minimum & maximum amounts are calculated over.
There are currently four valid pay types:
basisCode | intervalCode | Description |
---|---|---|
CommissionOnly | Year | Employment paid exclusively a results-based commission |
Salaried | Year | Employment paid on an annual basis |
SalariedPlusCommission | Year | Employment paid on an annual basis plus a results-based commission |
Hourly | Hour | Employment paid for the number of hours worked |
The
CommissionOnly
basis 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
currency
field within the minimumAmount
and maximumAmount
fields.
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:
NZD
is required for positions located in New Zealand. These are locations that have acountryCode
ofNZ
.GBP
is required for positions located in the UK & Ireland. These are locations that have acountryCode
ofGB
orIE
.Note that this requires positions in the Republic of Ireland to use salaries denominated inGBP
, even though their local currency isEUR
.AUD
is 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.34
to represent the natural number 1234
in cents.
On the other hand, it does not accept 12.345
as such a value attempts to subdivide the minor unit.The salary range is used to provide more relevant job search results to candidates.
but monetary values in
minimumAmount
and maximumAmount
are not visible on the job ad.
Hirers can provide a salary description to communicate the remuneration package to the candidate.
SEEK may display the supplied currency
and intervalCode
alongside this description for clarity.Salary ranges are used to refine candidate job searches but the monetary values aren’t directly visible to candidates.
The hirer must provide a free text description if they want to communicate the position’s remuneration.
SEEK may display the supplied
currency
and intervalCode
alongside this description for clarity.The
RemunerationPackageInput.descriptions
field 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 characters, which roughly corresponds to a single English sentence.For example, if a hirer set the salary description field to
$100k–$120k + super + bonus
it 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_INPUT
error.
The error will contain both a top-level summary message
and per-field invalidFields
messages.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
invalidFields
messages 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:
JSON
Copy
{
"errors": [
{
"message": "Invalid remuneration",
"extensions": {
"code": "BAD_USER_INPUT",
"invalidFields": {
"/input/positionProfile/offeredRemunerationPackage/ranges/0/maximumAmount/value": "Must be greater than or equal to the minimum value",
"/input/positionProfile/offeredRemunerationPackage/descriptions": "Cannot exceed 50 characters"
}
}
}
],
"data": null
}
Note that the SEEK API was unable to generate a top-level
message
that summarised both validation errors.
This demonstrates the importance of mapping the invalidFields
messages to the relevant fields on your job posting form.