# UK Gender Pay Gap Reports API: Employer Filings (`tabulary/uk-gender-pay-gap-reports`) Actor

UK employer gender pay gap disclosures from gender-pay-gap.service.gov.uk: pay gap %, bonus gap %, quartile pay bands, company number, SIC code and filing dates for employers with 250+ staff. Filter by name, SIC code or reporting year, with a new-since-last-run alert mode.

- **URL**: https://apify.com/tabulary/uk-gender-pay-gap-reports.md
- **Developed by:** [Tabulary](https://apify.com/tabulary) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 pay gap filings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does UK Gender Pay Gap Reports API do?

This Actor returns **UK gender pay gap** data straight from the official
[gender-pay-gap.service.gov.uk](https://gender-pay-gap.service.gov.uk/viewing/download-data)
register, as clean per-employer JSON: mean and median hourly pay gap %, bonus gap %, the share of
men and women in each bonus and pay quartile, company number, SIC code, employer size, and when
the report was filed. Every UK employer with 250 or more staff must publish this data each year,
so these are **gender pay gap reports** for every qualifying employer, not a sample. ESG and
compliance teams, journalists, recruiters and ratings agencies use it to pull **gender pay gap
data** for a specific company, industry or reporting year without touching the government's own
CSV download by hand. An optional alert mode re-checks the current reporting year and returns
only filings submitted or updated since your last run, which matters because employers keep
filing (and some file late) right up to the following April's deadline.

### What you get

- **Employer identity:** name (as filed and current name, which can differ after a rename),
  address, postcode, Companies House number, SIC code(s), employer size band.
- **Pay gap figures:** mean/median hourly pay gap %, mean/median bonus gap %, % of men and women
  receiving a bonus, and the male/female split in each of the four pay quartiles.
- **Filing details:** whether it was filed after the deadline, the due date, the submission date,
  and a link to the employer's own published report when they provided one.
- Filter by employer name, SIC code or reporting year (2017 to the current year in progress).
- Optional **only new or updated since last run** mode for a scheduled alert on the current year.

### How much does it cost?

You pay per filing returned, with no monthly fee: **$2.00 per 1,000 filings** on Apify's free
plan, and 10-40% less on paid Apify plans. Each run also costs $0.001 to start. Apify's free plan
includes $5 of credit every month, enough for about 2,500 filings. Prices as of October 2026; the
price shown on this page is the one that applies.

| Use | Filings | Cost on the free plan |
|---|---|---|
| Look up one company by name | 1-5 | about $0.01 |
| Scan one SIC code for the current year | about 25 | about $0.05 |
| Daily alert through the April filing deadline, about 20 new/updated filings a day | about 600 a month | about $1.20 a month |

Set **Maximum cost per run** to cap any run; the Actor stops cleanly at the cap and keeps
everything it saved.

### Ready-made inputs

Four real use cases as JSON inputs, each tested in the local run above.

```json
{ "reportingYear": 2026 }
```

```json
{ "reportingYear": 2026, "employerName": "university" }
```

```json
{ "reportingYear": 2026, "sicCode": "85200" }
```

```json
{ "reportingYear": 2026, "onlyNewSinceLastRun": true }
```

#### Alerts

Set `onlyNewSinceLastRun` to `true` and run this Actor on a schedule (daily or weekly works well)
to get only filings submitted or resubmitted since the last run, scoped to the `reportingYear` you
give it. The watermark is kept per reporting year, so you can monitor the current year without
missing or duplicating anything if a run is ever cut short by your spending cap.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `reportingYear` | integer | required (prefill `2026`) | The pay gap snapshot year to fetch. 2017 is the earliest year published. |
| `employerName` | string | `""` | Keep only employers whose name (as filed or current) contains this text. Case-insensitive. |
| `sicCode` | string | `""` | Keep only employers tagged with this exact UK SIC code. |
| `onlyNewSinceLastRun` | boolean | `false` | Keep only filings submitted or updated since this Actor's last run for the same `reportingYear`. |
| `maxItems` | integer | `1000` | Stop after this many filings. |

### Output

One dataset item per employer filing. A real item from the local test run above:

```json
{
  "employerName": "\"RED BAND\" CHEMICAL COMPANY, LIMITED",
  "employerId": 16879,
  "currentEmployerName": "\"RED BAND\" CHEMICAL COMPANY, LIMITED",
  "address": "19 Smith's Place, Leith Walk, Edinburgh, EH6 8NU",
  "postcode": "EH6 8NU",
  "companyNumber": "SC016876",
  "sicCodes": ["47730"],
  "reportingYear": 2026,
  "employerSize": "250 to 499",
  "meanHourlyPayGapPercent": -2.45,
  "medianHourlyPayGapPercent": -4.08,
  "meanBonusGapPercent": -60.59,
  "medianBonusGapPercent": 21.21,
  "maleBonusPercent": 29.5,
  "femaleBonusPercent": 70.5,
  "lowerQuartileMalePercent": 54.4,
  "lowerQuartileFemalePercent": 45.6,
  "lowerMiddleQuartileMalePercent": 32.5,
  "lowerMiddleQuartileFemalePercent": 67.5,
  "upperMiddleQuartileMalePercent": 14.9,
  "upperMiddleQuartileFemalePercent": 85.1,
  "topQuartileMalePercent": 27.2,
  "topQuartileFemalePercent": 72.8,
  "companyLinkToReport": null,
  "submittedAfterDeadline": false,
  "dueDate": "2027-04-05",
  "dateSubmitted": "2026-05-15T18:34:43"
}
```

Notes: a positive pay/bonus gap % means men's pay or bonuses are higher on average; negative means
women's are higher. `companyNumber` and `companyLinkToReport` are `null` when the employer didn't
provide one. `sicCodes` is an array because an employer can carry more than one industry code.
`dateSubmitted` and `dueDate` are the times recorded by the service, in UK local time (the source
does not state a timezone offset). We deliberately drop the source's `ResponsiblePerson` column:
it names the individual who signed off the report (sometimes with their work email), and this tool
only returns employer-level data, never data about named individuals.

### Use it from AI agents

Add the Actor to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server
(`https://mcp.apify.com?tools=tabulary/uk-gender-pay-gap-reports`). Ask in plain language, for
example: "What's the gender pay gap at Aberystwyth University for the 2024 reporting year?" The
agent fills in the input and gets structured filings back.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/tabulary~uk-gender-pay-gap-reports/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reportingYear": 2026, "sicCode": "85200"}'
```

The same works with the Apify Python and JavaScript clients. See the API tab for details.

### Data source and limits

- Source: [gender-pay-gap.service.gov.uk](https://gender-pay-gap.service.gov.uk/viewing/download-data),
  the UK government's statutory gender pay gap register. [Terms](https://gender-pay-gap.service.gov.uk/)
  and GOV.UK publications tied to the service state the data is Crown copyright under the
  [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/),
  which permits commercial reuse with attribution: "Contains public sector information licensed
  under the Open Government Licence v3.0."
- The source publishes one CSV per reporting year covering every qualifying employer (250+ staff);
  there is no per-employer API, so this Actor downloads the year's file and filters it for you.
- The current reporting year's file grows through the year as employers file (due date 5 April
  the following year) and some file late — use `onlyNewSinceLastRun` to track that.
- Only employer-level fields are returned. The source's `ResponsiblePerson` column (a named
  individual, often with a work email) is always dropped.
- Not affiliated with or endorsed by the UK government or the Government Equalities Office.

### Other Tabulary tools

Clean data from official and public sources, priced per result:

- [UK Tenders API: Contracts Finder & Find a Tender](https://apify.com/tabulary/uk-public-tenders)
- [EU Tenders API: TED Public Procurement Notices](https://apify.com/tabulary/eu-ted-tenders)
- [SAM.gov Federal Contract Opportunities](https://apify.com/tabulary/sam-gov-contract-notices)
- [Airport METAR & TAF Weather](https://apify.com/tabulary/airport-weather-metar-taf)
- [Remote Jobs API: RemoteOK & Jobicy Postings](https://apify.com/tabulary/remote-jobs-feed)
- [Company Job Postings: Greenhouse, Lever, Ashby & Workable](https://apify.com/tabulary/multi-ats-job-postings)

### FAQ

**Is this data official?** Yes. It comes directly from the UK government's statutory gender pay
gap register, the same data employers are legally required to submit.

**How fresh is it?** As fresh as the source: employers file throughout the year up to 5 April the
following year, and the source updates in near-real time as filings land. Run with
`onlyNewSinceLastRun` on a schedule to catch new and late filings as they appear.

**Does this include small employers?** No. Only employers with 250 or more staff must report, so
only they appear in this data.

**Something broke?** Open an issue on the Issues tab. The Actor is tested daily.

### Changelog

- **2026-10-23:** first version: reads the official per-year CSV, filters by employer name, SIC
  code or reporting year, with an optional new-since-last-run alert mode.

### About Tabulary

This tool is part of [Tabulary](https://apify.com/tabulary): clean tables from official public
sources. Every Tabulary tool uses the source's official API or open data where one exists,
collects no personal data, and is tested on Apify every day. Questions or ideas? Open an issue on
the Issues tab.

# Actor input Schema

## `reportingYear` (type: `integer`):

The gender pay gap snapshot year to fetch (employers with 250+ staff must report each year). 2017 is the earliest year published. The current in-progress year has the fewest filings and runs fastest.

## `employerName` (type: `string`):

Only keep employers whose name (current or as reported) contains this text. Case-insensitive. Leave empty for every employer in the year.

## `sicCode` (type: `string`):

Only keep employers tagged with this exact UK Standard Industrial Classification code (an employer can have more than one). Leave empty to skip this filter.

## `onlyNewSinceLastRun` (type: `boolean`):

Skip filings this Actor already saved for this reporting year on a previous run, keeping only ones submitted or resubmitted since. Useful for a scheduled alert on the current year as late filers catch up.

## `maxItems` (type: `integer`):

Stop after this many employer filings. Each one is one billable dataset item.

## Actor input object example

```json
{
  "reportingYear": 2026,
  "employerName": "",
  "sicCode": "",
  "onlyNewSinceLastRun": false,
  "maxItems": 1000
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "reportingYear": 2026
};

// Run the Actor and wait for it to finish
const run = await client.actor("tabulary/uk-gender-pay-gap-reports").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "reportingYear": 2026 }

# Run the Actor and wait for it to finish
run = client.actor("tabulary/uk-gender-pay-gap-reports").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "reportingYear": 2026
}' |
apify call tabulary/uk-gender-pay-gap-reports --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tabulary/uk-gender-pay-gap-reports"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pFxj6BQs2DtGEJrQV/builds/0243t0bI34se92II1/openapi.json
