UK Waste Carrier Licence Check (Environment Agency) avatar

UK Waste Carrier Licence Check (Environment Agency)

Pricing

from $5.00 / 1,000 registration rows

Go to Apify Store
UK Waste Carrier Licence Check (Environment Agency)

UK Waste Carrier Licence Check (Environment Agency)

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.

Pricing

from $5.00 / 1,000 registration rows

Rating

0.0

(0)

Developer

Japan Open Data

Japan Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

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 websiteCompliance dashboards (from £19–£300 / month)This Actor
CostFreeMonthly subscription per seat / per supplier$0.005 per registration row, $0.001 per run
Bulk and automationOne search at a time, in a browserUsually one dashboard, one loginUp to 5,000 rows per run, JSON / CSV / Excel, API and MCP
Personal dataSole traders and home addresses are shownVariesOrganisations only, postcode and town only — two gates
Extras—Alerts, audit trailsactive / 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.

InputTypeDefaultWhat it does
postcodestringEC4V 4EHFull English postcode to search around, e.g. M1 1AE. Partial postcodes (EC4V) are not accepted.
radiusKminteger1Search radius in kilometres, 1 to 25. The Environment Agency's radius search only accepts whole kilometres.
registrationNumberstring""Exact registration number, e.g. CBDU128084 (upper tier) or CBDL30639 (lower tier). Takes priority over the other inputs.
companyNamestring""Full registered business name exactly as filed, e.g. PAVERPRINT DRIVEWAYS & PATIOS LIMITED. Capitalisation does not matter; partial names are not supported.
maxResultsinteger50Maximum number of rows to return (1–5000). Each ok row is charged.

Input examples

Check one carrier before giving it a load:

{ "registrationNumber": "CBDU128084" }

Every registered waste company within 5 km of central Manchester:

{ "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):

{
"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):

{
"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

FieldDescription
statusok, not_found or error.
registrationNumberEnvironment Agency registration number. CBDU… = upper tier, CBDL… = lower tier.
businessNameBusiness name exactly as recorded by the Environment Agency (a company, charity, local authority or public body — never a private person).
applicantTypeCompany, Charity, Authority or Public body. Sole trader and Partnership are never returned.
companyNumber / companiesHouseUrlCompanies 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).
registrationTypeCarrier, Broker, Dealer, Carrier Dealer or Broker Dealer, as recorded by the Environment Agency.
isCarrier / isBroker / isDealerThe same information as three booleans, so you can filter without parsing text.
registrationTierUpper (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).
registrationStatusactive, expired or unknown. See "Upper and lower tier" below.
registrationDate / expiryDateDates in YYYY-MM-DD. expiryDate is null for every lower tier registration.
daysUntilExpiryDays from today (UTC) to expiryDate; negative when expired, null for lower tier.
postcode / postcodeArea / townPostcode, its area letters (RG) and the town of the registered address. Street addresses are not output (see Privacy).
distanceKmDistance from the searched postcode, in km (postcode searches only; null otherwise).
registerUrlThe registration's page on the Environment Agency public register.
fetchedAt, sourceRun time (UTC) and attribution.
errorOn 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:

EventPriceWhen it is charged
Registration row (result-row)$0.005Each ok row — one waste carrier / broker / dealer registration
Actor start$0.001Once per run
What you are doingRowsCost 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 town500$2.50
Largest run the Actor allows5,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:

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):

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.

The register is published by the Environment Agency under the 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 seeWhat it meansWhat to do
status: "not_found" on a company you know is a waste carrierIt is a sole trader / partnership, or its recorded name reads as a person's name, or it is registered in Scotland, Wales or Northern IrelandRead 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 registerThe name must match the register exactly, including LIMITED / LTD and & vs ANDSearch by registrationNumber, or by postcode + radiusKm and filter the rows yourself
status: "error", "full postcode"A partial postcode (EC4V) was givenUse the full postcode, e.g. EC4V 4EH
status: "error", registration number formatThe number is not in the register's formatUse CBDU…, CBDL… or the older CB-… form, exactly as printed on the certificate
Fewer rows than maxResults on a postcode searchThere are simply no more registered organisations in that radiusRaise radiusKm (up to 25)
Run stopped early with a note in the status messageYour maximum cost per run was reachedRaise the cap or lower maxResults
expiryDate is nullIt is a lower tier (CBDL…) registration, which does not expireTreat 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 (Public Registers Online API, registration.json).
  • Postcode centroids: postcodes.io (ONS Postcode Directory; contains OS data © Crown copyright and database right, Open Government Licence v3.0).
  • License: 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

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.