# Gender Pay Gap Report Card

An employer's gender pay gap, read: the gaps, the pay quarters, the trend, against its sector.

An employer's gender pay gap reports read: median and mean gaps, bonus gaps, women by pay quarter, year-on-year trend, and its rank against every reporter and its sector.

Every UK employer with 250 or more staff reports its gender pay gap each year, and the figures sit in a government spreadsheet, one row per employer per year. This endpoint reads them: the latest median and mean gaps, bonus gaps, the share of women in each quarter of the pay range, how the gap has moved year on year, and where the employer sits against every reporter and against its own sector. Built from nine years of reports, refreshed weekly as new ones arrive.

- Price: 1 credit
- Page: https://meetkatalis.com/apis/gender-pay-gap
- OpenAPI: https://meetkatalis.com/openapi.yaml

## Endpoints

- `GET /api/v1/gender-pay-gap?company=…` — By company number or employer name

## Call it

```bash
curl -H "x-api-key: $KATALIS_API_KEY" \
  "https://meetkatalis.com/api/v1/gender-pay-gap?company=00502851"
```

```javascript
const res = await fetch("https://meetkatalis.com/api/v1/gender-pay-gap?company=00502851", {
  headers: { "x-api-key": process.env.KATALIS_API_KEY },
});
if (!res.ok) throw new Error(`Katalis ${res.status}: ${await res.text()}`);
console.log(await res.json());
```

```python
import os, requests

r = requests.get(
    "https://meetkatalis.com/api/v1/gender-pay-gap?company=00502851",
    headers={"x-api-key": os.environ["KATALIS_API_KEY"]},
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

## Example response (a real reply)

```json
{
  "company": { "name": "GREGGS PLC", "number": "00502851", "size": "20,000 or more", "sicCodes": "10710, 47240" },
  "reported": true,
  "latest": { "year": 2025, "due": "2026-04-05", "medianHourlyGap": 2.24, "meanHourlyGap": 8.89, "medianBonusGap": -10.84, "meanBonusGap": 23.74, "menReceivingBonus": 74, "womenReceivingBonus": 80, "womenByPayQuarter": { "lower": 63, "lowerMiddle": 69, "upperMiddle": 71, "top": 45 }, "submittedLate": false, "employerStatement": "https://assets.greggs.com/f/162306/x/a3ab1ad0af/greggs-pay-gap-2025.pdf" },
  "trend": "narrowing",
  "history": [
    { "year": 2025, "medianHourlyGap": 2.24, "meanHourlyGap": 8.89, "womenInTopQuarter": 45 },
    { "year": 2024, "medianHourlyGap": 3.68, "meanHourlyGap": 8.33, "womenInTopQuarter": 49 },
    { "year": 2023, "medianHourlyGap": 3.24, "meanHourlyGap": 10.49, "womenInTopQuarter": 50 }
  ],
  "benchmark": { "year": 2025, "reporters": 11194, "medianGap": 8, "sectorReporters": 277, "sectorMedianGap": 3.9, "widerThanPercentOfEmployers": 32 },
  "reading": "GREGGS PLC's median hourly pay gap is 2.24% in its report due 2026-04-05; the median employer's is 8.0% and its sector's 3.9%. Women hold 45% of the top-paid quarter of jobs and 63% of the lowest-paid. The gap is narrowing compared with the year before (3.68%)."
}
```

## What you'd build with it

- **HR and reward platforms.** Put every client's gap, trend and sector position on one screen.
- **ESG and procurement.** Score suppliers on a published, comparable measure, with the trend, not just one year.
- **Careers and job sites.** Show candidates an employer's gap and its sector median next to the job.

## Why this one

- **Read, with context.** The gap next to the all-employer median, the sector median and the employer's own trend.
- **Nine years of history.** Every report since 2017, so a trend is a trend, not one data point.
- **Careful wording.** A pay gap isn't equal pay for equal work, and every response says so.
- **No personal data.** The published file names a responsible person with their email; we never store it.

## Conventions

- Auth: `x-api-key: kat_live_…` on every request (free key at https://meetkatalis.com/developers: a verified email and mobile, 100 credits a month, no card).
- One credit balance across every API; each endpoint's price is on its page and in `x-credits` in https://meetkatalis.com/openapi.yaml.
- Keys are camelCase everywhere. A registered company is `company: { name, number, status, statusDetail?, filingsOverdue? }` on the register endpoints; the enrichment family (enrich, score, assess, brand-kit, ai-visibility, tender-match) keeps `business` / `profile` with `companyNumber`.
- Every error has `code` and `requestId`; every reply an `x-request-id` header; a charged reply `x-credits-remaining`; a reply that gave credits back `x-credits-refunded`. Missing = 404 with `query`.
- Burst ceiling 60 requests a minute per key (429, `Retry-After`, no credits used). A failure on our side (5xx) gives the call's credits back.
- Company data contains public sector information licensed under the Open Government Licence v3.0.

Provided "as is"; results come from public sources and, in places, AI, and may be inaccurate or out of date; not legal, professional or credit advice. Terms: https://meetkatalis.com/apis/terms