Where every number on this site comes from.
EUpaid is built on public job ads that state pay. If an ad does not disclose compensation, it does not produce a salary figure here.
A curated list of European job boards, transparency-first boards and company ATS boards. Each source records the crawl strategy that works for it, a URL pattern for job detail pages, and a rolling health score.
Vendor ATS boards (Greenhouse, Lever, Ashby, Workable) are read through their public APIs, so titles, locations and posting dates come straight from the employer. Everything else is fetched page by page, with index and category pages filtered out before a single fetch is spent.
A language model reads each ad and returns a strict field set: role, level, city, country, currency, pay range, pay period, benefits, skills. It is asked to extract, never to guess. Missing fields stay empty rather than being filled in.
Pay is converted to annual EUR using the pay period stated in the ad. Company names are normalized and matched against known employers so one company is not counted five times under five spellings. Ads outside the EU, EFTA and the UK are dropped at write time.
Only ads that actually disclose pay, and that resolve to a known role and location, become salary entries. Ads without pay still feed skill, benefit and hiring-demand trends, but never a salary figure.
Job quality scores blend pay percentile within role and city, whether pay is disclosed, benefits offered, recency and source reliability. Scores and source health recompute nightly; sources are crawled on a rolling schedule.
No synthetic rows. Ever.
We do not generate, model or pad salary data to make charts look fuller. Every salary entry carries the URL of the ad it came from, and the database itself blocks any row that is not traceable to a real source. When a cohort is thin, we show you that it is thin instead of inventing a median.
What this data is not.
Advertised pay is what employers offer publicly, not what individuals end up earning. Ranges skew toward countries and companies that already publish pay, so coverage is deeper in the Nordics, Poland, the Netherlands and at tech employers. Bonus and equity are only counted when the ad states them. Small cohorts move a lot as new ads land.