# UK Waste Carrier Licence Check (Environment Agency) (`japan-open-data/uk-waste-carrier-register`) Actor

Check waste carriers, brokers and dealers in England's official Environment Agency register by registration number, exact name or postcode + radius: type, tier, expiry date, active status, Companies House link. Organisations only - no personal data. JSON via API or MCP. $5/1,000 rows.

- **URL**: https://apify.com/japan-open-data/uk-waste-carrier-register.md
- **Developed by:** [Japan Open Data](https://apify.com/japan-open-data) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 registration rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## UK Waste Carrier Licence Check (Environment Agency)

**Check England's official waste carrier, broker and dealer register — the Waste Carriers and Brokers Public Register for England kept by the Environment Agency.** Look up a waste company by its registration number (`CBDU…` / `CBDL…`), by its exact registered name, or by postcode + radius, and get one flat JSON row per registration: registration type (carrier / broker / dealer), upper or lower tier, registration and expiry dates, an `active` / `expired` status, postcode, town, distance and a Companies House link. Read live from the Environment Agency on every run. No API key, no login. **$5 per 1,000 rows; not-found and error rows are free.**

- **Organisations only — no personal data, addresses as postcode and town only.** Two gates. First, every request asks the Environment Agency for company, charity, local authority and public body registrations only, so sole trader and partnership records are never even downloaded. Second — because that applicant type is chosen by the registrant and is not checked for lower tier registrations — any record whose holder name reads as a person's name rather than an organisation's is withheld as well. You get roughly 201,000 of the register's 422,822 registrations. Street addresses are never output because for a small waste business the registered address is very often a home.
- **Official data, read live on every run.** Straight from the Environment Agency's Public Registers Online API, so the answer is as current as the register itself — no monthly snapshot, no stale copy.
- **Built for duty-of-care checks and for lead lists.** UK businesses must legally check that whoever takes their waste is a registered carrier, and Defra's Digital Waste Tracking service becomes mandatory for waste receivers in England and Wales on 1 October 2026. One row tells you whether a registration exists, what it covers, whether it is still valid and how many days are left.
- **Pay per registration row — $0.005 each.** `not_found` and `error` rows are free, so a check on a carrier that turns out not to be registered costs only the $0.001 run fee.

### Why use this instead of the register's own website?

| | Environment Agency website | Compliance dashboards (from £19–£300 / month) | This Actor |
|---|---|---|---|
| Cost | Free | Monthly subscription per seat / per supplier | **$0.005 per registration row, $0.001 per run** |
| Bulk and automation | One search at a time, in a browser | Usually one dashboard, one login | Up to 5,000 rows per run, JSON / CSV / Excel, API and MCP |
| Personal data | Sole traders and home addresses are shown | Varies | **Organisations only, postcode and town only — two gates** |
| Extras | — | Alerts, audit trails | `active` / `expired` status, `daysUntilExpiry`, carrier / broker / dealer booleans, Companies House link, `distanceKm` |

About **201,000** of the register's **422,822** registrations are returned. The rest belong to sole traders, partnerships, or businesses recorded under a person's name, and are deliberately withheld.

### What can you do with the England waste carrier register?

1. **Duty of care: is this contractor registered?** Before you hand over waste, check the carrier's registration number or exact company name and read `registrationStatus`, `registrationTier` and `expiryDate`. Keep the row as your audit record.
2. **Monitor your suppliers' expiry dates.** Upper tier registrations must be renewed every 3 years. Run the Actor on a schedule against your carriers' registration numbers and alert on `daysUntilExpiry`.
3. **Build a lead list of waste companies near a site.** Sell skips, containers, tippers, tyres, insurance, weighbridges, route software or fuel cards? Search by postcode + radius and get every registered waste company nearby, nearest first, with a Companies House link to join with your CRM.
4. **Procurement and supplier onboarding.** Screen a list of contractors in one run and store the registration number, tier and expiry date against each supplier record.
5. **AI agents.** "Is CBDU128084 a valid waste carrier?", "Which registered waste carriers are within 5 km of M1 1AE?" — one small flat JSON row per registration, ready for an LLM.

### How to use

1. Click **Start** with the default input: registered waste carriers within 1 km of postcode `EC4V 4EH` (City of London).
2. To check one business, set **Registration number** (e.g. `CBDU128084`) or **Company name (exact)**.
3. To browse an area, set **Postcode** and **Radius (km)**; results come back nearest first with `distanceKm`.
4. Set **Maximum registrations** to control how many rows — and therefore how much — a run returns.
5. Download the results as JSON, CSV or Excel, or call the Actor via API / MCP (see below).

Only one search runs per call. **Registration number** wins over **Company name**, which wins over **Postcode + radius**.

#### Watch your suppliers' registrations on a schedule

Upper tier (`CBDU…`) registrations expire after 3 years, and a lapsed registration is deleted from the register altogether.

1. Run the Actor once with `{"registrationNumber": "CBDU…"}` for a supplier and keep the row.
2. Open the **Schedules** tab in Apify Console, add a schedule (for example monthly) and attach a task with that input.
3. Alert when `status` becomes `not_found` (the registration has gone from the register) or when `daysUntilExpiry` drops below your threshold (renewal due).

Each scheduled check costs $0.006 when the carrier is still registered, and $0.001 when it is not.

### Input

No input is required; every field has a default, and the default run always returns rows.

| Input | Type | Default | What it does |
|---|---|---|---|
| `postcode` | string | `EC4V 4EH` | Full English postcode to search around, e.g. `M1 1AE`. Partial postcodes (`EC4V`) are not accepted. |
| `radiusKm` | integer | `1` | Search radius in kilometres, 1 to 25. The Environment Agency's radius search only accepts whole kilometres. |
| `registrationNumber` | string | `""` | Exact registration number, e.g. `CBDU128084` (upper tier) or `CBDL30639` (lower tier). Takes priority over the other inputs. |
| `companyName` | string | `""` | Full registered business name **exactly** as filed, e.g. `PAVERPRINT DRIVEWAYS & PATIOS LIMITED`. Capitalisation does not matter; partial names are not supported. |
| `maxResults` | integer | `50` | Maximum number of rows to return (1–5000). Each `ok` row is charged. |

#### Input examples

Check one carrier before giving it a load:

```json
{ "registrationNumber": "CBDU128084" }
```

Every registered waste company within 5 km of central Manchester:

```json
{ "postcode": "M1 1AE", "radiusKm": 5, "maxResults": 500 }
```

### Output

One row per registration held by a company, charity, local authority or public body whose recorded name is an organisation's name (`status: "ok"`), nearest first for a postcode search. If nothing matches, one **free** row with `status: "not_found"` and an `error` sentence that says what to change; invalid input gives one free `status: "error"` row.

A real row (`{"registrationNumber": "CBDU128084"}`, run on 23 September 2026):

```json
{
  "status": "ok",
  "registrationNumber": "CBDU128084",
  "businessName": "PAVERPRINT DRIVEWAYS & PATIOS LIMITED",
  "applicantType": "Company",
  "companyNumber": "04751916",
  "companiesHouseUrl": "https://find-and-update.company-information.service.gov.uk/company/04751916",
  "registrationType": "Carrier Dealer",
  "isCarrier": true,
  "isBroker": false,
  "isDealer": true,
  "registrationTier": "Upper",
  "registrationStatus": "active",
  "registrationDate": "2025-08-06",
  "expiryDate": "2028-09-02",
  "daysUntilExpiry": 711,
  "postcode": "RG8 0SU",
  "postcodeArea": "RG",
  "town": "Reading",
  "distanceKm": null,
  "registerUrl": "https://environment.data.gov.uk/public-register/waste-carriers-brokers/registration/CBDU128084",
  "fetchedAt": "2026-09-23T00:01:09Z",
  "source": "Waste Carriers and Brokers Public Register for England, Environment Agency Public Registers Online. Contains Environment Agency information (c) Environment Agency and/or database right. Companies and other organisations only; registrations held by, or recorded under the name of, a private individual are excluded by this Actor."
}
```

When the registration exists but belongs to a private individual — either because the register types it as a sole trader or partnership, or because the recorded name is a person's name (free row):

```json
{
  "status": "not_found",
  "fetchedAt": "2026-09-23T05:57:53Z",
  "error": "Registration \"CBDL46692\" is in the Waste Carriers and Brokers Public Register for England but was not returned. It is held by a sole trader, and this Actor returns only registrations held by companies, charities and public bodies (no personal data)."
}
```

#### Output fields

| Field | Description |
|---|---|
| `status` | `ok`, `not_found` or `error`. |
| `registrationNumber` | Environment Agency registration number. `CBDU…` = upper tier, `CBDL…` = lower tier. |
| `businessName` | Business name exactly as recorded by the Environment Agency (a company, charity, local authority or public body — never a private person). |
| `applicantType` | `Company`, `Charity`, `Authority` or `Public body`. `Sole trader` and `Partnership` are never returned. |
| `companyNumber` / `companiesHouseUrl` | Companies House number as recorded on the registration, and a link to that company's Companies House page. `null` when the register holds no number (a little over half of rows — the Environment Agency requires one for upper tier registrations but not for lower tier). |
| `registrationType` | `Carrier, Broker, Dealer`, `Carrier Dealer` or `Broker Dealer`, as recorded by the Environment Agency. |
| `isCarrier` / `isBroker` / `isDealer` | The same information as three booleans, so you can filter without parsing text. |
| `registrationTier` | `Upper` (businesses whose main activity is dealing with waste; renewable, 3-year term, fee payable) or `Lower` (businesses that only carry their own or certain low-risk waste; no expiry). |
| `registrationStatus` | `active`, `expired` or `unknown`. See "Upper and lower tier" below. |
| `registrationDate` / `expiryDate` | Dates in `YYYY-MM-DD`. `expiryDate` is `null` for every lower tier registration. |
| `daysUntilExpiry` | Days from today (UTC) to `expiryDate`; negative when expired, `null` for lower tier. |
| `postcode` / `postcodeArea` / `town` | Postcode, its area letters (`RG`) and the town of the registered address. Street addresses are not output (see Privacy). |
| `distanceKm` | Distance from the searched postcode, in km (postcode searches only; `null` otherwise). |
| `registerUrl` | The registration's page on the Environment Agency public register. |
| `fetchedAt`, `source` | Run time (UTC) and attribution. |
| `error` | On `not_found` / `error` rows: one English sentence explaining what to change. |

#### Upper and lower tier, and how `registrationStatus` is decided

The register has two tiers and they expire differently:

- **Upper tier** (`CBDU…`) — for businesses that carry, broker or deal in other people's waste as a main activity. The registration lasts **3 years** and must be renewed, so `expiryDate` is always filled in.
- **Lower tier** (`CBDL…`) — for businesses that only carry their own waste, or certain low-risk waste (for example charities, waste from their own building or demolition work). A lower tier registration **does not expire**, so `expiryDate` is `null`.

So `registrationStatus` is:

- `active` when `expiryDate` is today or later, **or** when the tier is `Lower` and there is no expiry date at all;
- `expired` when `expiryDate` is in the past;
- `unknown` in the rare case of an upper tier record with no expiry date.

Note that the Environment Agency removes registrations from the public register once they lapse, so `expired` rows are rare — on 23 September 2026 the earliest expiry date in the whole register was that same day. **A registration that is absent from the register is the usual sign of an expired or revoked registration**, and that is reported as a free `not_found` row.

### How much does it cost?

This Actor uses **Pay per event** pricing — you pay per registration row, not for compute time:

| Event | Price | When it is charged |
|---|---|---|
| Registration row (`result-row`) | **$0.005** | Each `ok` row — one waste carrier / broker / dealer registration |
| Actor start | **$0.001** | Once per run |

| What you are doing | Rows | Cost of the run |
|---|---|---|
| **Is this contractor a registered waste carrier?** (one registration number or exact name) | 1 | **$0.006** |
| The carrier is not in the register (free `not_found` row) | 0 | **$0.001** |
| Default run (nearest 50 registered waste companies to `EC4V 4EH`) | 50 | $0.251 |
| Lead list: every registered waste company within 10 km of a town | 500 | $2.50 |
| Largest run the Actor allows | 5,000 | $25.00 |

`not_found` and `error` rows are **free**, so a duty-of-care check on a carrier that is not in the register costs only the $0.001 run fee. Set a **maximum cost per run** when you start the Actor to cap spending; if the cap is reached, the Actor stops cleanly and says so in the status message.

The cheapest way to use it is one check at a time: `{"registrationNumber": "CBDU…"}` returns exactly one row.

### Use via API / MCP (AI agents)

**Apify API (HTTP).** Run the Actor and get the rows in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/japan-open-data~uk-waste-carrier-register/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"registrationNumber": "CBDU128084"}'
```

**Python (apify-client):**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("japan-open-data/uk-waste-carrier-register").call(run_input={
    "postcode": "M1 1AE", "radiusKm": 5, "maxResults": 200,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["status"], row.get("registrationNumber"), row.get("businessName"),
          row.get("registrationStatus"), row.get("expiryDate"))
```

**MCP (Claude, ChatGPT, Cursor and other AI agents).** Add this Actor as a tool through the Apify MCP server (https://mcp.apify.com), for example with `?tools=japan-open-data/uk-waste-carrier-register`. No input is required.

Recommended agent settings:

- "Is this carrier registered?" → `{"registrationNumber": "CBDU128084"}` (one row, one charge).
- "Is company X a registered waste carrier?" → `{"companyName": "<full registered name including LIMITED / LTD>"}`.
- "Registered waste carriers near postcode Y" → `{"postcode": "<full postcode>", "radiusKm": 5, "maxResults": 20}`.
- Always read `status` first. On `not_found` the `error` sentence says whether the registration is absent from the register, or present but held by a private individual (and therefore withheld).
- Keep `maxResults` small (1–50) for questions; raise it only for list exports.

**Summary for AI agents:** Input: `registrationNumber`, or `companyName` (exact), or `postcode` + `radiusKm` (1–25), plus `maxResults`. Output: flat rows, one per waste carrier / broker / dealer registration in England held by a company, charity, local authority or public body, with `status`, `registrationNumber`, `businessName`, `registrationType`, `isCarrier` / `isBroker` / `isDealer`, `registrationTier`, `registrationStatus`, `expiryDate`, `daysUntilExpiry`, `postcode`, `town`, `distanceKm` and `companiesHouseUrl`. No personal names, no street addresses. `not_found` / `error` rows are free.

### FAQ

#### Why can't I find a waste carrier I know?

Four possible reasons, and the `error` sentence tells you which:

1. **It is registered as a sole trader or a partnership.** About half of the register is, and those registrations are never returned because the business name is a person's name and the address is often a home.
2. **It is registered outside England.** This register covers **England only**. Scotland has its own register (SEPA), Wales has Natural Resources Wales (NRW) and Northern Ireland has the NIEA — those carriers are not in this dataset.
3. **The exact name did not match.** `companyName` is an exact match on the name as filed with the Environment Agency, including `LIMITED` / `LTD`. Use `postcode` + `radiusKm` to browse an area instead, or look the carrier up by registration number.
4. **Its recorded name looks like a person's name.** Some businesses register under a name such as `A W Smith` with no company suffix. Those records are withheld, because that name identifies a person; the free `not_found` row says so.

#### How many registrations can I get?

The register holds 422,822 registrations. This Actor returns **about 201,000** of them — the ones held by companies, charities, local authorities and public bodies whose recorded name is an organisation's name. The rest are sole traders and partnerships, or records whose recorded name is a person's name, and they are withheld (see Privacy). One run returns up to 5,000 rows.

#### Does this help with Defra's Digital Waste Tracking?

It is a useful input, not the service itself. From **1 October 2026** licensed waste receivers in England and Wales must report every load they receive through Defra's Digital Waste Tracking service, and carriers and brokers follow in a later phase. Checking that the businesses you hand waste to — or receive it from — hold a current Environment Agency registration is part of the same duty of care, and this Actor automates that check against the official register.

#### Does it cover Scotland, Wales or Northern Ireland?

No — England only. The Environment Agency's register is for England; SEPA, NRW and the NIEA keep separate registers that are not part of this API.

#### Is an entry with no expiry date still valid?

Yes. Lower tier (`CBDL…`) registrations do not expire, so `expiryDate` is `null` and `registrationStatus` is `active`. Only upper tier (`CBDU…`) registrations have a 3-year term.

#### How fresh is the data?

The Actor calls the Environment Agency's live API on every run, so rows are as current as the register itself. `fetchedAt` records when.

#### Can I get directors, owners' names or full addresses?

No. The Actor never outputs a person's name, and outputs the postcode and town instead of the street address.

#### Are all the addresses in England?

The *register* is England's, but a carrier registered with the Environment Agency can be based anywhere in the UK, so a small number of rows carry a Welsh, Scottish or Northern Irish postcode. What "England only" means is that a carrier registered **instead** with SEPA, NRW or the NIEA will not be in this register at all.

#### Is it legal to use this data?

The register is published by the Environment Agency under the [Environment Agency Conditional Licence](https://www.gov.uk/government/publications/environment-agency-conditional-licence/environment-agency-conditional-licence), which allows commercial and non-commercial re-use and adaptation with attribution (included in every row's `source`). This Actor outputs only registrations held by companies and other organisations. You remain responsible for how you use the data, including UK direct-marketing rules when you contact businesses.

### Troubleshooting

| What you see | What it means | What to do |
|---|---|---|
| `status: "not_found"` on a company you know is a waste carrier | It is a sole trader / partnership, or its recorded name reads as a person's name, or it is registered in Scotland, Wales or Northern Ireland | Read the `error` sentence — it names the reason. For Scotland, Wales and Northern Ireland use SEPA, NRW or the NIEA |
| `status: "not_found"` on an exact company name you copied from the register | The name must match the register exactly, including `LIMITED` / `LTD` and `&` vs `AND` | Search by `registrationNumber`, or by `postcode` + `radiusKm` and filter the rows yourself |
| `status: "error"`, "full postcode" | A partial postcode (`EC4V`) was given | Use the full postcode, e.g. `EC4V 4EH` |
| `status: "error"`, registration number format | The number is not in the register's format | Use `CBDU…`, `CBDL…` or the older `CB-…` form, exactly as printed on the certificate |
| Fewer rows than `maxResults` on a postcode search | There are simply no more registered organisations in that radius | Raise `radiusKm` (up to 25) |
| Run stopped early with a note in the status message | Your **maximum cost per run** was reached | Raise the cap or lower `maxResults` |
| `expiryDate` is `null` | It is a lower tier (`CBDL…`) registration, which does not expire | Treat `registrationStatus: "active"` as valid |

### Known limitations

- **Beta service.** The Environment Agency's Public Registers Online API describes itself as a "Beta service" in every response, so field names and behaviour may change. If a run starts failing, please open an issue on the **Issues** tab.
- **England only** (see the FAQ).
- **Company name search is exact, not partial.** The API has no substring search, so `companyName` must be the full registered name. The Actor tries the obvious capitalisations of what you type.
- **Radius is whole kilometres, 1–25.** The API rejects decimal distances.
- A radius search returns the nearest `maxResults` registrations; if more exist, widen or narrow `radiusKm` rather than paging.
- **Postcode geocoding** uses postcodes.io (ONS Postcode Directory). A very new or terminated postcode may not be found; use a neighbouring one.
- **The register's applicant type is self-declared.** Lower tier registration is free and self-service, and the Environment Agency does not verify the "Company" / "Charity" / "Public body" choice: a review of 30,000 filtered records found hundreds typed as organisations whose recorded name was plainly a person. This Actor therefore also withholds any registration whose name reads as a private individual's. That is deliberately cautious, so roughly 4% of the rows withheld this way are genuine micro-businesses with a plain trading name (`Canford Audio`, `GB Liners`). About 0.8% of register entries carry no applicant type at all and are excluded for the same reason.
- `companyNumber` is present on a little under half of rows — every upper tier (`CBDU…`) registration has one, most lower tier (`CBDL…`) ones do not.
- `registrationStatus: "expired"` is rare because lapsed registrations are removed from the register (see "Upper and lower tier" above).

### Data source and license

- Source: Environment Agency, [Waste Carriers and Brokers Public Register for England](https://environment.data.gov.uk/public-register/view/search-waste-carriers-brokers) (Public Registers Online API, `registration.json`).
- Postcode centroids: [postcodes.io](https://postcodes.io/) (ONS Postcode Directory; contains OS data © Crown copyright and database right, Open Government Licence v3.0).
- License: [Environment Agency Conditional Licence](https://www.gov.uk/government/publications/environment-agency-conditional-licence/environment-agency-conditional-licence). **Contains Environment Agency information © Environment Agency and/or database right.**
- Changes made by this Actor: sole trader and partnership registrations removed, registrations recorded under a private individual's name removed, free-text street addresses dropped (postcode and town kept), nested API fields flattened into one row per registration, carrier / broker / dealer booleans and an `active` / `expired` status derived, Companies House links added.
- This Actor is not affiliated with, endorsed by or connected to the Environment Agency or the UK Government.

### Privacy

Roughly half of this register belongs to private individuals: sole traders whose "business name" is their own name, and partnerships. This Actor:

- asks the Environment Agency, on **every** request, for company, charity, local authority and public body registrations only, so individuals' records are not downloaded in the first place;
- re-checks the applicant type of every record before it is written out;
- **also withholds any record whose holder name reads as a person's name** — a first name and a surname, initials and a surname, or a personal title — even when the register types it as a company, a charity, a local authority or a public body. That applicant type is picked by the registrant and is not verified for lower tier registrations, so on its own it is not enough;
- outputs the **postcode and town only**, never the street address, because a small waste business is very often registered at a home address;
- never outputs a person's name, and never outputs the register's free-text address or organisation-name fields;
- when a search finds nothing, may read back **only the applicant type label** of the withheld records so that the free `not_found` row can tell you "this registration exists but is held by a sole trader" — the holder name and address of those records are discarded and never stored.

### More from Japan Open Data

- [UK Visa Sponsor Register Tracker (Daily Changes)](https://apify.com/japan-open-data/uk-visa-sponsor-register) — new, removed and downgraded UK visa sponsor licences from the official Home Office register, or check whether a company can sponsor workers.
- [US Flood Zone Lookup by Address (FEMA NFHL)](https://apify.com/japan-open-data/us-flood-zone-lookup) — official FEMA flood zone (A, AE, VE, X…), base flood elevation and FIRM panel for any U.S. address or coordinates.
- [UK HGV Operator Licence Lookup (Official DVSA)](https://apify.com/japan-open-data/uk-hgv-operator-licence) — the other UK business register in this series: Great Britain's official HGV and bus / coach operator licences by company, postcode and fleet size. Many waste carriers also hold an O-licence.
- [UK Flood Risk Lookup by Postcode (England)](https://apify.com/japan-open-data/uk-flood-zone-lookup) — Environment Agency flood zone, recorded flood extents and flood defences for any postcode or coordinates in England.
- [Mexico Gas Prices API by Station (Official CNE)](https://apify.com/japan-open-data/mexico-fuel-station-prices) — today's gas and diesel prices at every Mexican gas station, from the official CNE feed.
- [Argentina Fuel Prices API by Station (Official)](https://apify.com/japan-open-data/argentina-fuel-station-prices) — last reported gasoline (nafta), diesel and CNG prices at every Argentine gas station.
- [US Hail History by Location (NOAA NEXRAD Radar)](https://apify.com/japan-open-data/us-hail-history) — every hail day near any U.S. latitude/longitude with max estimated hail size.
- [US Storm Reports API: Hail, Wind & Tornado (NWS)](https://apify.com/japan-open-data/us-storm-reports-live) — U.S. hail, wind, tornado and flood reports from official NWS Local Storm Reports.
- [TSA Checkpoint Travel Numbers (Daily, Weekly & YoY)](https://apify.com/japan-open-data/tsa-checkpoint-throughput) — daily U.S. TSA airport checkpoint traveler counts.
- [Japan Postal Code & Address in English](https://apify.com/japan-open-data/japan-postal-code-english) — Japanese postal codes and addresses in English/romaji, kanji and kana.
- [France Property Risk Lookup by Address (Georisques)](https://apify.com/japan-open-data/france-property-risk-lookup) — official Géorisques risks for any French address or coordinates: flood, clay shrink-swell, seismic zone, radon, past natural-disaster declarations and nearby industrial / polluted sites, one row per location.
- [England Listed Building & Conservation Area Check](https://apify.com/japan-open-data/england-heritage-constraint-lookup) — official listed buildings, scheduled monuments, conservation areas and Article 4 directions for any postcode or coordinates in England, one row per location.
- [UK NHS Organisation Lookup (Official ODS Codes)](https://apify.com/japan-open-data/uk-nhs-organisation-lookup) — GP practices, pharmacies, dentists, hospitals and NHS trusts from the official ODS register, by postcode, type or ODS code (organisations only).

### Feedback

Missing a filter or a field (partial name search, registration type filter, Scotland / Wales)? Open an issue on the Actor's **Issues** tab with your input and what you expected.

# Actor input Schema

## `postcode` (type: `string`):

Full English postcode to search around, e.g. "EC4V 4EH" or "M1 1AE". Used together with "Radius". Ignored when a registration number or a company name is given.

## `radiusKm` (type: `integer`):

How far around the postcode to search, in whole kilometres (1 to 25). The Environment Agency's radius search only accepts whole kilometres. Results are sorted by distance, nearest first.

## `registrationNumber` (type: `string`):

Exact Environment Agency registration number, e.g. "CBDU128084" (upper tier) or "CBDL30639" (lower tier). Takes priority over the other inputs. Leave empty to ignore.

## `companyName` (type: `string`):

Full registered business name exactly as filed, e.g. "PAVERPRINT DRIVEWAYS & PATIOS LIMITED". Capitalisation does not matter, but partial names are not supported - use postcode + radius to browse. Leave empty to ignore.

## `maxResults` (type: `integer`):

Maximum number of registration rows to return (1 to 5000). Each returned row is charged.

## Actor input object example

```json
{
  "postcode": "EC4V 4EH",
  "radiusKm": 1,
  "registrationNumber": "",
  "companyName": "",
  "maxResults": 50
}
```

# Actor output Schema

## `results` (type: `string`):

Registration number, business name, carrier / broker / dealer flags, upper or lower tier, active or expired, expiry date, postcode, town and Companies House link per registration. Table view: overview.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("japan-open-data/uk-waste-carrier-register").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("japan-open-data/uk-waste-carrier-register").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 '{}' |
apify call japan-open-data/uk-waste-carrier-register --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,japan-open-data/uk-waste-carrier-register"
        }
    }
}
```

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/Tc0sYtdF1nNJvQjng/builds/iYpWFtWKwlUU6o0Zk/openapi.json
