How we compute salary statistics

Every salary figure on JobCrawls — medians, ranges, and per-role or per-city stats — goes through the same pipeline. Here is exactly what that pipeline does.

Written by John Spina

The pipeline, step by step

  1. 1

    We collect salaries stated in the listing

    Our extraction pass pulls salary figures directly from the posting text. It is explicitly instructed not to guess a number from vague phrases like "competitive salary" — if the listing does not state a figure, we do not invent one here.

  2. 2

    We estimate when nothing is stated — and flag it

    When a listing has no stated salary, we estimate one from a credibility-weighted blend of comparable postings for the same title, location, role level, and company — weighted more heavily toward broader, larger samples when a narrow one is thin. Estimated figures are labelled as estimates wherever they appear next to a job listing, so you can always tell a stated salary from an inferred one.

  3. 3

    We normalize every figure to monthly EUR

    Listings state pay in different ways — hourly, monthly, annual — and periods are sometimes mislabeled. We convert every figure to monthly EUR and run a plausibility check (roughly €500–€30,000/month, with the top of a range no more than 5× the bottom) to catch placeholder or garbled data before it reaches any statistic.

  4. 4

    We trim outliers based on sample size

    With fewer than 5 postings we apply no trimming — there is not enough data to safely discard anything. From 5–24 postings we trim using an interquartile-range check. At 25 or more postings we apply a stricter 10th–90th percentile trim before computing the median, mean, and percentiles.

  5. 5

    The displayed range is not the raw min and max

    A single unusual posting can otherwise set an entire published range. The low and high figures we show are the 10th percentile of minimums and the 90th percentile of maximums across the sample — not the single lowest or highest number we saw.

Important limitations

  • Salary data is derived from published job listings and may not represent total compensation. Figures are in EUR/month and may include employer estimates where stated salary ranges are not publicly disclosed.
  • Stats built from fewer than 10 postings are labelled as low-confidence — treat them as a rough guide, not a precise figure.
  • We do not independently verify what employers publish — figures reflect what listings state, not audited payroll data.

Back to the salary guide