GET/v1/salary/eudeprecated

[Deprecated] Get EU salary data for a job title and country

**Deprecated — use `GET /v1/salary?location=<country>` instead. This endpoint will be removed on 2026-09-01.** Return mean/median annual salary in EUR, percentile distribution (p10-p90), gender pay gap, and minimum wage for a single EU country. Covers all 27 EU member states using Eurostat Structure of Earnings Survey (SES) data. Job titles are matched to ISCO-08 major group codes via fuzzy matching with a SOC→ISCO crosswalk for US job titles. **Limitations:** Eurostat SES reports at the 1-digit ISCO major group level only, so all occupations in a group share the same benchmark. Expect lower resolution than the US BLS OES dataset. **Migration:** the unified `GET /v1/salary` endpoint auto-detects EU locations and returns a superset of this response. Prefer it for new integrations. Source: Eurostat SES, ISCO-08 occupation codes. Required scope: `salary:read`.

Authentication

Requires API key via X-API-Key header.

Parameters

NameInTypeRequiredDescription
job_titlequerystringrequiredJob title (e.g., 'software developer', 'nurse', 'manager')
countryquerystringrequiredCountry name or ISO code (e.g., 'Germany', 'DE', 'FR')

Example request

curl
curl -X GET \
  "https://salary.wageapi.com/api/v1/salary/eu?job_title=%3Cjob_title%3E&country=DE" \
  -H "X-API-Key: YOUR_API_KEY"

Responses

200Successful Response
queryEUSalaryQueryrequired
job_titlestringrequired
matched_iscostringrequired
matched_isco_fullstringrequired
matched_titlestringrequired
match_methodstringrequired
countrystringrequired
country_codestringrequired
salaryEUSalaryBandrequired
mean_annualanyrequired
one of:
option 1:
number
option 2:
null
median_annualanyrequired
one of:
option 1:
number
option 2:
null
p10anyrequired
one of:
option 1:
number
option 2:
null
p25anyrequired
one of:
option 1:
number
option 2:
null
p75anyrequired
one of:
option 1:
number
option 2:
null
p90anyrequired
one of:
option 1:
number
option 2:
null
currencystringoptional

default "EUR"

gender_gap_pctanyrequired
one of:
option 1:
number
option 2:
null
mean_maleanyrequired
one of:
option 1:
number
option 2:
null
mean_femaleanyrequired
one of:
option 1:
number
option 2:
null
sample_sizeanyrequired
one of:
option 1:
integer
option 2:
null
minimum_wageanyoptional
one of:
option 1:
monthly_euranyrequired
one of:
option 1:
number
option 2:
null
monthly_ppsanyrequired
one of:
option 1:
number
option 2:
null
yearintegerrequired
semesteranyoptional
one of:
option 1:
integer
option 2:
null
option 2:
null
data_sourcestringoptional

default "Eurostat SES"

data_datestringrequired
isco_notestringoptional

default "Eurostat SES data uses 1-digit ISCO major groups only. The matched occupation is mapped to its major group for lookup."

400Country could not be resolved to an ISO code.
errorErrorDetailrequired

Structured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusintegerrequired

HTTP status code

request_idstringrequired

Request identifier — include in support tickets

suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
401Missing or invalid API key.
errorErrorDetailrequired

Structured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusintegerrequired

HTTP status code

request_idstringrequired

Request identifier — include in support tickets

suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
403API key lacks the required scope for this endpoint.
errorErrorDetailrequired

Structured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusintegerrequired

HTTP status code

request_idstringrequired

Request identifier — include in support tickets

suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
404No Eurostat SES benchmark available for the matched ISCO code and country.
errorErrorDetailrequired

Structured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusintegerrequired

HTTP status code

request_idstringrequired

Request identifier — include in support tickets

suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
422Request validation failed (bad JSON shape, missing required fields, etc.).
errorErrorDetailrequired

Structured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusintegerrequired

HTTP status code

request_idstringrequired

Request identifier — include in support tickets

suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
429Daily rate limit exceeded for this API key.
errorErrorDetailrequired

Structured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusintegerrequired

HTTP status code

request_idstringrequired

Request identifier — include in support tickets

suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null
500Unexpected server error. Includes a request_id for support.
errorErrorDetailrequired

Structured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.

codestringrequired

Machine-readable error code (e.g. INVALID_API_KEY)

messagestringrequired

Human-readable error message

statusintegerrequired

HTTP status code

request_idstringrequired

Request identifier — include in support tickets

suggestionanyoptional

Actionable hint on how to resolve the error

one of:
option 1:
string
option 2:
null
doc_urlanyoptional

Link to full documentation for this error code

one of:
option 1:
string
option 2:
null
fieldanyoptional

Field that caused the error (if applicable)

one of:
option 1:
string
option 2:
null
errorsanyoptional

Per-field validation errors (only for 422 VALIDATION_ERROR responses)

one of:
option 1:
array of object
object
option 2:
null

Try this endpoint

Create a free Aethar account and generate an API key in 2 minutes.

Create free account →