Where does our data come from?
PayCheck aggregates salary data from two of the UK's largest job boards in real time. Unlike tools that rely on self-reported surveys, every data point originates from a live active job listing — reflecting what employers are actually offering right now.
- Adzuna: We query the Adzuna Jobs API for active UK listings matching your job role and city. Each listing provides a minimum and maximum advertised salary.
- Reed: We query Reed's job search API in parallel, fetching up to 100 listings per search. Reed requires both a minimum and maximum salary to be present for a listing to be included.
- Minimum sample size: We require at least 5 valid listings per source to compute a range. If fewer than 5 listings are found, that source returns no data and the other source is used alone.
- No self-reported data: We do not use anonymous user submissions, surveys, or glassdoor-style crowdsourcing. Every data point is from a verifiable job posting.
How we calculate the bands
The Market Range Logic
For each listing, we compute a midpoint salary: (min + max) / 2. We then sort all midpoints and derive the band using index-based percentile slicing. When both Adzuna and Reed return data, the two bands are averaged to form the final merged range.
The entry point for this role. Offers below this are statistically below market.
The midpoint between p25 and p75 — the most common salary for experienced professionals.
The upper bound of typical market pay. Offers above this are above market.
When both sources are available, their p25 and p75 values are averaged: merged_p25 = (adzuna_p25 + reed_p25) / 2. This merged band is what drives the verdict. Both source ranges are shown separately in the results for full transparency.
Job Description Weighting
When you provide a job description, PayCheck uses intelligent keyword extraction to calculate relevance scores for each job listing. This ensures your salary comparison is based on jobs that closely match your role's requirements.
How Relevance Scoring Works
- Keyword Extraction: We parse your job description for technical skills, frameworks, tools, and requirements using pattern matching and a curated list of 150+ tech terms.
- Term Frequency Matching: Each job listing is scored based on how many of your keywords appear in its title and description. More matches = higher relevance.
- Weighted Percentiles: Instead of treating all jobs equally, we calculate weighted percentiles where jobs with higher relevance scores have greater influence on the final salary range.
- Minimum Threshold: Jobs with zero keyword matches are excluded. Only listings with at least one matching keyword contribute to your personalized benchmark.
Advanced Market Insights
Beyond basic salary ranges, PayCheck provides five advanced analytics to help you understand the full market context for your role.
1. Data Confidence Metrics
Shows the total number of jobs analyzed (split by Adzuna and Reed) and the average relevance score when a job description is provided. More jobs = higher confidence in the benchmark.
2. Experience Level Detection
We analyze job titles and descriptions to detect seniority (Junior, Mid-Level, Senior, Lead, Principal). Shows average salaries for each level and highlights your detected seniority from your job description.
3. Skill Premium Analysis
Compares average salaries for jobs requiring specific skills vs those without. Shows the top 3 skills with the highest salary premiums (e.g., "Roles requiring Rust pay +15% more"). Requires at least 3 jobs in each category for statistical validity.
4. Work Mode Comparison
Detects whether jobs are Remote, Hybrid, or Onsite based on keywords in listings. Shows salary ranges (p25-p75) for each work mode, helping you understand if remote roles pay differently. Highlights your detected work mode when a job description is provided.
5. Total Compensation Analysis
When you provide equity, bonus, and benefits values, we calculate your total package value and compare it against base salary benchmarks. Shows your percentile position (0-100) to help you understand the full value of your offer beyond base salary.
The Verdict Engine
"Below Market"
The offer falls below the 25th percentile of the merged market range. We recommend negotiating — this offer is statistically lower than most similar roles in your city.
"Market-Aligned"
The offer sits between the 25th and 75th percentile. This is a fair, standard offer for the current UK market.
"Above Market"
The offer exceeds the 75th percentile. These typically come from high-growth companies, specialised roles, or highly competitive hiring markets.
How often is data updated?
Labour markets move fast. To balance freshness with API rate limits, PayCheck uses a 24-hour in-memory cache per role and city combination. The first lookup for any role/city pair hits the live APIs; subsequent lookups within 24 hours return the cached result.
Live API Calls
Each unique role + city combination queries both Adzuna and Reed simultaneously on first request, ensuring data reflects current listings.
24-Hour Cache
Results are cached for 24 hours. This keeps the app fast while ensuring stale data is never served for more than one day.
Guidance Disclaimer
The data provided by PayCheck is intended for informational and guidance purposes only. While we strive for accuracy and provide advanced insights including experience level detection, skill premium analysis, and work mode comparisons, individual compensation can vary based on factors our algorithm cannot fully account for — including internal pay equity, performance history, negotiation skills, and company-specific compensation structures. PayCheck is not a financial adviser or legal recruitment consultant.
Ready to check your offer?
Launch Salary CheckerNo account required.