EARLY ACCESS

API & MCP reference

Honest, normalized salary data. Ask for an occupation in a country — or compare across countries — and get the median (or mean) pay in local currency, USD, and PPP, from official statistics, with every caveat labeled.

Overview

salarymcp is a REST API and an MCP server over the same data. Every value carries what it is: median or mean, role- or group-level, reference year, source, and a comparability note. Nothing is silently estimated.

The API is in early access. Request a key to start.

Authentication

Pass your API key in the X-API-Key header on every request. Keys look like sk_…. A missing or invalid key returns 401.

curl https://api.salarymcp.com/v1/coverage \
  -H "X-API-Key: sk_your_key_here"

Keep your key server-side. Never ship it in client-side code.

Base URL

https://api.salarymcp.com

All data endpoints live under /v1. Responses are JSON; amounts are strings (two decimals) to avoid float rounding.

Get a salary

GET /v1/salary — median (or mean) annual pay for one occupation in one country.

ParamTypeNotes
countrystringrequired · ISO-2 (e.g. DE)
occupationstringrequired · free text or ISCO code
yearintoptional · reference year
to_yearintoptional · age the value to a year (LCI uplift)
curl "https://api.salarymcp.com/v1/salary?country=DE&occupation=software" \
  -H "X-API-Key: sk_…"
{
  "country": "DE",
  "occupation_title": "Software developers",
  "value_original": "72000.00", "currency_original": "EUR",
  "value_usd": "78000.00",
  "value_pps": "92000.00",
  "stat_type": "median",
  "isco_level": "major_group",
  "reference_year": 2022,
  "is_estimated": false,
  "source": "Eurostat",
  "comparability_note": "group-level ISCO; comparable"
}

No data for that country + occupation returns 404 — never a guessed number.

Compare across countries

GET /v1/compare — the same occupation across several countries, each in local currency, USD, and PPP.

ParamTypeNotes
occupationstringrequired
countriesstringrequired · comma-separated ISO-2 (e.g. US,DE,BR)
year / to_yearintoptional · same as above
curl "https://api.salarymcp.com/v1/compare?occupation=software&countries=US,DE,BR" \
  -H "X-API-Key: sk_…"

Coverage

GET /v1/coverage — which countries, sources, ISCO levels and years are available. No params.

Usage

GET /v1/usage — your current plan and monthly consumption.

{ "plan": "pro", "period": "2026-09", "used": 1240, "quota": 100000, "remaining": 98760 }

Response fields

FieldMeaning
value_original / currency_originalSalary in the country's local currency + its ISO code
value_usdConverted to USD (ECB reference rates)
value_ppsPurchasing-power adjusted (World Bank PPP)
stat_typemedian or mean — Europe sometimes only publishes mean
isco_leveldetailed (specific role) or major_group
reference_yearYear the salary refers to
is_estimated / aged_to_yearWhether the value was uplifted, and to which year
sourceEurostat · U.S. BLS · RAIS · …
comparability_notePlain-language caveat for honest comparison

Errors

Errors follow RFC 9457 (application/problem+json).

StatusWhen
401Missing or invalid API key
404No data for the requested country + occupation
429Monthly quota exceeded (or per-minute rate limit)
{ "type": "about:blank", "title": "Not Found", "status": 404, "detail": "sem dado para país+ocupação" }

MCP server

salarymcp is also an MCP server — plug it straight into Claude and other AI agents, no glue code. It exposes four tools:

ToolDoes
get_salaryAnnual median/mean for an occupation in a country — local currency, USD, PPP
compare_salariesThe same occupation across countries
get_coverageAvailable countries, sources, levels, years
search_occupationsFind ISCO-08 occupations by text

Authenticate with the same sk_… key. Connection details ship with your early-access key.

Plans & limits

PlanMonthly quota
Free1,000 requests / mo
Pro100,000 requests / mo
EnterpriseCustom

A per-minute rate limit also applies to protect the service. See pricing.

Ready to build? Get an early-access key.