How Can You Access European Salary Data via API?

The EuroSalary API gives developers, researchers, and HR platforms direct access to our harmonised European salary dataset. Every endpoint returns structured JSON, supports four languages, and is backed by the same Eurostat-verified data that powers our website. Start making requests in under a minute with zero configuration.

API

v1.0

REST / JSON

bolt Εν συντομία
  • Free tier: 100 requests per hour, no API key required
  • 27 countries and 21 job categories with junior, mid, and senior levels
  • Clean JSON responses with gross salary, net salary, and tax breakdowns

Quick Start

Make your first request right now. No API key needed for the free tier:

bash curl
curl -s "https://api.eurosalary.eu/v1/salary?country=DE&job=software-engineer&level=mid" | jq .

API Endpoints

Get Salary Data

Returns gross and net salary figures for a specific country, job, and experience level.

GET /api/v1/salary
GET /api/v1/salary?country=DE&job=software-engineer&level=mid

Compare Across Countries

Returns salary data for a given job and level across all available countries, sorted by gross salary descending.

GET /api/v1/compare
GET /api/v1/compare?job=software-engineer&level=mid

Minimum Wage

Returns the current statutory minimum wage for a specific country, including monthly and hourly rates.

GET /api/v1/minimum-wage
GET /api/v1/minimum-wage?country=DE

Query Parameters

Parameter Type Description
countrystringISO 3166-1 alpha-2 country code (e.g. DE, FR, ES)
jobstringJob slug in kebab-case (e.g. software-engineer)
levelstringExperience level: junior, mid, or senior
formatstringResponse format: json (default) or csv

Response Format

All endpoints return JSON with a consistent envelope. Salary values are annual gross in EUR unless otherwise specified.

json /api/v1/salary
{
  "status": "ok",
  "data": {
    "country": "DE",
    "country_name": "Germany",
    "job": "software-engineer",
    "job_title": "Software Engineer",
    "level": "mid",
    "currency": "EUR",
    "salary_gross_annual": 62400,
    "salary_net_annual": 39200,
    "salary_gross_monthly": 5200,
    "salary_net_monthly": 3267,
    "tax_rate": 0.372,
    "social_contributions": 0.205,
    "last_updated": "2026-03-31T00:00:00Z",
    "sources": ["eurostat", "job_boards", "submissions"],
    "sample_size": 1842,
    "confidence": "high"
  }
}
json /api/v1/minimum-wage
{
  "status": "ok",
  "data": {
    "country": "DE",
    "country_name": "Germany",
    "currency": "EUR",
    "minimum_wage_monthly": 2054,
    "minimum_wage_hourly": 12.82,
    "effective_date": "2026-01-01",
    "last_updated": "2026-03-31T00:00:00Z"
  }
}

Authentication

Authentication depends on your plan:

Free

Free tier: No API key required. Simply make requests to the endpoints listed above.

Paid

Paid plans: Include your API key in the Authorization header as a Bearer token.

Authorization: Bearer YOUR_API_KEY

Rate Limits

Rate limits are enforced per IP address for the free tier and per API key for paid plans.

Tier Requests Window
Free1001 hour
Developer10,00024 hours
Business100,00024 hours
EnterpriseUnlimited--

Pricing

Choose the plan that fits your usage. All plans include the same data quality and endpoint access.

Free

€0

100 requests per hour. No key required. Perfect for prototyping and personal projects.

Business -- €199/mo

€199/mo

100,000 requests per day. Priority support. Webhook notifications for data updates.

Enterprise -- Custom

Custom

Unlimited requests. Dedicated account manager. Custom SLA and data exports.

SDK & Code Examples

Integrate EuroSalary data into your application with these ready-to-use examples.

javascript Node.js / Browser
const response = await fetch(
  "https://api.eurosalary.eu/v1/salary?country=DE&job=software-engineer&level=mid"
);
const { data } = await response.json();

console.log(data.salary_gross_annual); // 62400
console.log(data.salary_net_monthly);  // 3267
python Python 3
import requests

response = requests.get(
    "https://api.eurosalary.eu/v1/salary",
    params={"country": "DE", "job": "software-engineer", "level": "mid"}
)
data = response.json()["data"]

print(f"Gross: €{data['salary_gross_annual']:,}")  # Gross: €62,400
print(f"Net:   €{data['salary_net_monthly']:,}")    # Net:   €3,267
bash curl (authenticated)
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.eurosalary.eu/v1/compare?job=software-engineer&level=mid" | jq .

Συχνές ερωτήσεις

Is the EuroSalary API free to use?

Yes. The free tier gives you 100 requests per hour with no API key required. This is sufficient for personal projects, academic research, and prototyping. Paid plans are available when you need higher limits or dedicated support.

What countries and jobs does the API cover?

The API currently covers 27 European countries (Germany, France, Spain, Netherlands, Belgium, Austria, Switzerland, Luxembourg, Ireland, Portugal, Italy, Poland, Czech Republic, Sweden, Denmark) and 21 job categories across technology, finance, healthcare, engineering, and more.

How often is the salary data updated?

Salary data is refreshed weekly from job board sources and quarterly from Eurostat. The API always serves the latest available data. You can check the last_updated field in every response to see exactly when the data was last refreshed.

Can I use the API in a commercial product?

Yes. All paid plans include a commercial use license. The free tier is limited to non-commercial and personal use. If you are building a product that displays or resells salary data, you need at least the Developer plan.

What happens if I exceed my rate limit?

When you exceed your rate limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait. Free tier limits reset every hour. Paid plan limits reset daily at midnight UTC.

Ready to Get Started?

Create a free account to start using the API immediately. Upgrade anytime as your usage grows.

Create Free Account