# UK Business Rates (`spookyweb/uk-business-rates`) Actor

Rateable values from the Valuation Office rating list, every non-domestic property in England and Wales. Returns the rateable value, effective date, valuation history, floor areas and council reference. Filter by postcode, street, town, council, description code and value range.

- **URL**: https://apify.com/spookyweb/uk-business-rates.md
- **Developed by:** [丂卩ㄖㄖҜㄚ](https://apify.com/spookyweb) (community)
- **Categories:** Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 valuations

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## UK Business Rates

Rateable values for every non-domestic property in England and Wales, straight from the Valuation Office rating list, with the floor by floor valuation behind each one.

### 🔍 What does UK Business Rates do?

UK Business Rates reads the **Valuation Office rating list**, the official register of every shop, office, warehouse, pub, surgery, car park and mast that pays business rates in England and Wales. Give it a **postcode** and it returns each rated property at that address with its **current rateable value**, the date that value took effect, every earlier value the property has held, and the floor areas and rates per square metre the valuer used to arrive at the figure.

The quickest way to try it is the prefilled postcode: press **Start** and you get nine High Street properties in Bath with their rateable values in about fifteen seconds. From there you can widen out to a **whole street**, a **whole town**, an **entire billing authority**, or one **property type across the whole country**, and you can bound any of those by a **rateable value range**.

It runs on plain HTTP with no browser and no proxy. The rating list is a public register and the Valuation Office publishes it openly, which is why this Actor needs nothing from you beyond a search.

### 📊 What data can I extract from the rating list?

Every row is one rating list assessment. The `uarn` is the Valuation Office's own identifier for it and is stable between runs.

| Field | Type | What it is |
|---|---|---|
| `uarn` | string | Unique Authority Reference Number, the Valuation Office identifier for this assessment |
| `address` | string | Full address of the assessment as the rating list holds it, on one line |
| `postcode` | string | Postcode taken from the end of the address line |
| `description` | string | What the property is used for, in the Valuation Office's own words |
| `rateableValue` | number | Current rateable value in whole pounds, the figure the council multiplies to bill you |
| `effectiveDate` | string | Date the current valuation took effect, YYYY-MM-DD |
| `ratingList` | string | Which rating list the current valuation sits in, by revaluation year |
| `localCouncil` | string | Billing authority responsible for collecting the rates on this property |
| `localCouncilReference` | string | Billing authority reference, the number printed on the rates bill |
| `specialCategoryCode` | string | Special category or SCAT code, the finer of the two classifications |
| `valuationSchemeReference` | string | Reference of the valuation scheme, shared with the property's comparables |
| `baseRatePerSquareMetre` | number | Headline rate per square metre applied by the valuation scheme, in pounds |
| `measurementMethod` | string | Basis the floor areas were measured on, usually gross internal area |
| `transitionalReliefCertificate` | boolean | Whether a transitional relief certificate has been issued |
| `totalAreaSquareMetres` | number | Total measured floor area across every line of the valuation |
| `floorAreaValue` | number | Value of the measured floor areas before plant and adjustments |
| `plantAndMachineryValue` | number | Value added for plant and machinery, null when the valuation has none |
| `adjustmentsValue` | number | Total of the adjustments applied, negative when it reduces the value |
| `totalValueBeforeRounding` | number | Valuation total before it is rounded down to the rateable value |
| `floorAreas` | array | Line by line breakdown: description, area, rate per square metre and value |
| `adjustments` | array | Adjustments the valuer applied, such as a discount for poor access |
| `valuationHistory` | array | Every valuation period listed for the property, current one first |
| `previousRateableValue` | number | Rateable value of the period listed immediately before the current one |
| `rateableValueChange` | number | Current rateable value less the previous one, in pounds |
| `rateableValueChangePercent` | number | That change as a percentage of the previous value, to one decimal place |
| `valuationUrl` | string | Link to the Valuation Office page the row was read from |
| `valuationDetailAvailable` | boolean | Whether the valuation page was read. False only on a run with the valuation detail switched off |
| `searchedBy` | string | Which of the service's searches the run used to find this property |
| `retrievedAt` | string | When the run read the rating list, as an ISO timestamp |

### 💡 Why pull rateable values from the rating list?

**Rates reclaim casework.** A rateable value is only right if the floor areas and the rates per square metre behind it are right. `floorAreas` gives you both, line by line, so an assessment that is measured too generously shows up as an area you can check against a plan rather than a number you have to accept.

**Comparables for a challenge.** `valuationSchemeReference` is shared between every property valued under the same scheme, and `baseRatePerSquareMetre` is the rate that scheme applied. Pull a whole street or a whole special category code and you have the evidence set in one dataset instead of forty browser tabs.

**Revaluation impact.** `previousRateableValue` and `rateableValueChangePercent` sit on every row, so a portfolio's exposure to the 2026 revaluation is one run and one sort. Sorting a town by percentage change is how you find the assessments worth looking at first.

**Small business rate relief thresholds.** Set `maxRateableValue` to 12000 or 15000 and you get every assessment in an area sitting at or under the relief thresholds in England, which is the population that a relief review is worth running against.

**Property and asset sourcing.** `totalAreaSquareMetres` with `description` and `postcode` is a floor area index for commercial stock that is not on any listings portal, because a rated property exists whether or not anybody is marketing it.

**Council and portfolio reconciliation.** `localCouncilReference` is the same reference printed on the bill, so a dataset keyed on it lines up directly with a rates ledger and shows which assessments in the ledger are no longer in the list.

### 🚀 How do I use UK Business Rates?

1. Click **Try for free** and sign in to Apify, or open the Actor from your Console.
2. Leave the prefilled postcode in place for a first run, or type your own.
3. To go wider, clear the postcode and set a **town**, a **local council**, or a **special category code** instead.
4. Narrow with **description code**, **minimum rateable value** or **maximum rateable value**.
5. Set **maximum properties to return**, which caps both the run and its cost.
6. Press **Start**, then open the **Dataset** tab and export to JSON, CSV, Excel or Google Sheets.

### ⬇️ Input

| Field | Type | Notes |
|---|---|---|
| `postcode` | string | Full postcode or outward code. Matched by prefix, so BA1 also returns BA11 |
| `town` | string | Switches to the advanced address search, the only one that takes street, number and value range together |
| `street` | string | Street name without the number |
| `propertyNameOrNumber` | string | Building name or street number |
| `localCouncil` | string | Billing authority by name, by four digit code, or by a unique fragment |
| `localCouncilReference` | string | The reference on a rates bill. An exact lookup for one assessment |
| `descriptionCode` | string | Valuation Office description code, by code or by name |
| `specialCategoryCode` | string | SCAT code, by number or by name |
| `descriptionContains` | string | Free text matched against the description after the results arrive |
| `minRateableValue` | integer | Lowest current rateable value to keep, inclusive |
| `maxRateableValue` | integer | Highest current rateable value to keep, inclusive |
| `fetchValuationDetail` | boolean | Read each property's valuation page. On by default |
| `maxResults` | integer | Cap on rows saved, which is the cap on cost |
| `maxRecordsScanned` | integer | Safety stop on how many search results are read |

```json
{
  "town": "BATH",
  "descriptionCode": "Shop and Premises",
  "minRateableValue": 25000,
  "maxResults": 200
}
```

### ⬆️ Output

#### Table view

| Address | Postcode | Description | Rateable value | Effective from | Local council | Council reference | Area m2 |
|---|---|---|---|---|---|---|---|
| Royal Mail, Manvers Street, Bath, BA1 1AA | BA1 1AA | Royal mail sorting centre | 200000 | 2026-04-01 | Bath and north east somerset | 2670 5150 20 | 4324.11 |
| 18, High Street, Bath, BA1 5AJ | BA1 5AJ | Shop and premises | 45250 | 2026-04-01 | Bath and north east somerset | 1990 0018 00 | 200.3 |

#### JSON

```json
{
  "uarn": "2948482000",
  "address": "Royal Mail, Manvers Street, Bath, BA1 1AA",
  "postcode": "BA1 1AA",
  "description": "Royal mail sorting centre",
  "rateableValue": 200000,
  "effectiveDate": "2026-04-01",
  "ratingList": "2026",
  "localCouncil": "Bath and north east somerset",
  "localCouncilReference": "2670 5150 20",
  "specialCategoryCode": "217G",
  "valuationSchemeReference": "674501",
  "baseRatePerSquareMetre": 50,
  "measurementMethod": "Gross internal area",
  "transitionalReliefCertificate": false,
  "totalAreaSquareMetres": 4324.11,
  "floorAreaValue": 210008,
  "plantAndMachineryValue": 6785,
  "adjustmentsValue": -16259,
  "totalValueBeforeRounding": 200534,
  "floorAreas": [
    { "description": "Ground floor warehouse", "areaSquareMetres": 1809.67, "ratePerSquareMetre": 50, "value": 90484 },
    { "description": "Ground floor office", "areaSquareMetres": 203.1, "ratePerSquareMetre": 60, "value": 12186 }
  ],
  "adjustments": [
    { "description": "Access", "adjustment": "-7.5%" }
  ],
  "valuationHistory": [
    { "period": "1 April 2026 to present", "status": "Current", "isCurrent": true, "effectiveDate": "2026-04-01", "rateableValue": 200000 },
    { "period": "1 April 2017 to 31 March 2023", "status": "Previous", "isCurrent": false, "effectiveDate": "2017-04-01", "rateableValue": 125000 }
  ],
  "previousRateableValue": 141000,
  "rateableValueChange": 59000,
  "rateableValueChangePercent": 41.8,
  "valuationUrl": "https://www.tax.service.gov.uk/business-rates-find/valuations/start/2948482000",
  "valuationDetailAvailable": true,
  "searchedBy": "postcode",
  "retrievedAt": "2026-08-16T11:28:15.087Z"
}
```

### Coverage

The rating list covers **England and Wales only**. Scotland keeps its own valuation roll through the Scottish Assessors and Northern Ireland keeps its own through Land and Property Services, and neither is in this dataset.

It covers **non-domestic property**, so a house has no entry unless part of it is rated separately, such as a home office assessed on its own or a holiday let. The current list is the **2026 list**, compiled on 1 April 2026, and the valuation history on each property reaches back through the 2023, 2017 and 2010 lists where the assessment existed then.

The list is live rather than a snapshot, so a new assessment, a deletion or an alteration appears as soon as the Valuation Office publishes it.

### How the searches behave

The Valuation Office offers several searches and they are not interchangeable. The Actor picks the one the service will accept from the fields you fill in, and it tells you in the log which of your filters it sent and which it had to apply itself.

| You set | Search used | Sent to the service |
|---|---|---|
| Local council reference | Council reference lookup | The reference only |
| A town | Advanced address | Town, street, number, postcode, description code and value range |
| A local council | Advanced council | Council, description code and value range |
| A special category code | Advanced category | Category, description code and value range |
| A postcode on its own | Simple postcode | The postcode |

Two of these accept parameters and then ignore them. The council search and the category search both take a street and a house number, return the identical result set either way, and never say so. **Measured on Bath and North East Somerset: 9,623 results with no street, and the same 9,623 with a street.** The Actor therefore never sends a street to those searches and filters on it here instead, which is slower but correct. The council reference lookup does the same thing with the rateable value range.

The service also repeats itself while paging. **Ten pages of a council search returned 150 rows containing 117 distinct properties**, some appearing three times. Every row is deduplicated on `uarn`, so a repeat is never saved or charged twice.

### Rateable value ranges

The service applies a value range against **every valuation period a property has ever had**, not just the current one. A search for 0 to 199,999 returns a property whose current rateable value is 200,000 if an earlier list had it lower, which is not what anybody means by the filter.

So the range is sent to the service as a fast pre-filter and then checked again here against the **current** rateable value, and anything that only qualified on an old valuation is dropped. On High Street in Bath with a minimum of 50,000 the service returned 15 properties and four of them had a current value below the bound.

This second check needs the valuation page, so it only applies while **Include the full valuation** is on. With detail switched off you get the service's own looser behaviour, and the run says so in the log.

### Limits and speed

The service will not page past **10,000 results** whatever total it reports, so a search wider than that needs splitting by postcode district or by description code.

If the service stops answering partway through a large job, the run finishes with the properties it had already read rather than throwing them away, and the run status says how many that was. You keep what you paid for and nothing else is charged.

With the full valuation on, the run reads one page per property, so a hundred properties is a hundred and seven requests. Requests go out two at a time with a pause between them and the run backs off when the service asks it to, which keeps a large job polite rather than fast. Switching the valuation detail off drops that to one request per fifteen properties, at the cost of the rateable value and everything else on the valuation page.

### Data source

Every row comes from the Valuation Office **Find a business rates valuation** service at [tax.service.gov.uk/business-rates-find](https://www.tax.service.gov.uk/business-rates-find/search), which has been part of HMRC since 1 April 2026. The rating list is a public register that anyone may inspect. Publication of the valuation information is restricted to non domestic rating purposes under the [service terms and conditions](https://www.tax.service.gov.uk/business-rates-find/terms-and-conditions), so use it for rating work: reviewing an assessment you have an interest in, or comparing it against others, on your own behalf or a client's.

### 💰 How much does it cost?

**$0.001 per property returned**, plus the standard **$0.00005** Apify charges once when a run starts. Nothing else.

So a run that pulls **every shop on one high street**, say 60 assessments with their full valuations, costs **$0.06005**. A thousand properties across a whole council area costs **$1.00005**. Ten thousand, which is as far as the service will page, costs **$10.00005**.

Paid Apify plans pay less per property: **$0.00085** on Bronze, **$0.0007** on Silver, **$0.0006** on Gold, **$0.0005** on Platinum and **$0.0004** on Diamond. That same thousand property run is **$0.40005** on Diamond.

You are charged for properties the Actor actually delivers. A search that matches nothing returns nothing and costs nothing beyond the run start, and a property whose valuation page could not be read is left out rather than handed to you blank, so it is not charged for either.

`maxResults` is the cap on both rows and cost, so setting it is how you bound a run in advance: `maxResults` 50 cannot cost more than $0.05005. Narrowing with a description code, a special category code or a rateable value range keeps you from paying for assessments you were only going to discard afterwards, because those filters run on the service side before anything is saved.

### 🔌 Integrations

Send results straight to Google Sheets, Slack, Airtable, Zapier, Make or your own webhook using [Apify integrations](https://docs.apify.com/platform/integrations). Runs can be scheduled, so a monthly job that re-reads a portfolio by council reference and appends the current rateable value to a sheet takes about a minute to set up. You can also trigger a run from another tool, which is the usual way to attach a rateable value and a floor area to a new record in a CRM.

### 🔗 Using UK Business Rates with the Apify API

```bash
curl -X POST "https://api.apify.com/v2/acts/spookyweb~uk-business-rates/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "town": "BATH",
    "descriptionCode": "Shop and Premises",
    "minRateableValue": 25000,
    "maxResults": 200
  }'
```

Start a run without waiting for it and collect the dataset later:

```bash
curl -X POST "https://api.apify.com/v2/acts/spookyweb~uk-business-rates/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "localCouncil": "WESTMINSTER", "descriptionCode": "Public House and Premises", "maxResults": 500 }'
```

The [Apify API reference](https://docs.apify.com/api/v2) covers runs, datasets, webhooks and schedules. Client libraries exist for [JavaScript](https://docs.apify.com/api/client/js) and [Python](https://docs.apify.com/api/client/python).

### ❓ FAQ

#### What is a rateable value?

It is the Valuation Office's estimate of a property's open market annual rent on a fixed valuation date. It is not the rent you pay and it is not the rates bill. Your council multiplies the rateable value by a multiplier and then applies any reliefs to get the bill.

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

No. The rating list is England and Wales. Scotland is on the valuation roll held by the Scottish Assessors and Northern Ireland is with Land and Property Services, and neither publishes through this service.

#### Can I get the rateable value for one specific property?

Yes, and the cheapest way is `localCouncilReference` with the reference printed on the rates bill, which returns that single assessment. Failing that, use the full postcode with a property name or number.

#### How do I get every rated property in one council area?

Set `localCouncil` to the council name or its four digit code and leave the address fields empty. Bath and North East Somerset returns 9,623 assessments. Narrow with a description code or a rateable value range if you want a slice rather than the lot.

#### Why is my rateable value different from my rates bill?

The bill is the rateable value times the multiplier, less reliefs, plus any transitional adjustment. `transitionalReliefCertificate` tells you whether a transitional certificate has been issued. [Estimate your business rates bill](https://www.gov.uk/calculate-your-business-rates) on GOV.UK does the arithmetic.

#### What is a SCAT code?

A special category code, the Valuation Office's finer classification of what a property is. 217 is post office sorting centres, for example. Searching on one alone returns that kind of property across the whole of England and Wales, which is how a national comparable set gets built.

#### Why does my search return nothing?

Most often the property is domestic and therefore not on the rating list at all, or the postcode is outside England and Wales. A search that matches nothing finishes successfully with zero rows rather than failing, and the log says which of those it was.

#### Do I need a Valuation Office account or an API key?

No. The service hands out a session and a form token to anybody who asks, which is all the Actor uses.

#### Can I get the comparable properties for an assessment?

Not directly, but `valuationSchemeReference` is the key to them. Every property valued under the same scheme shares it, so pulling a town or a council and grouping on that reference gives you the comparable set.

### ⚖️ Is it legal to collect business rates valuations?

The rating list is a public register and anyone has a right to inspect it. The Valuation Office publishes the same figures on its own website, with no account, no sign in and no restriction on who may look at them.

Publication of the valuation information is restricted to **non domestic rating purposes** under the service's [terms and conditions](https://www.tax.service.gov.uk/business-rates-find/terms-and-conditions). That covers reviewing an assessment you have an interest in, comparing it against ones you consider comparable, and doing either of those as a representative or adviser acting for a ratepayer or a council. Use it for rating work, and pass the same terms on with the data if you pass the data on.

Two conditions are easy to miss and both are yours once you hold the data. **Delete it when the business need ends**, because the terms require it. And **do not present it as official**: the Valuation Office does not endorse this Actor or your use of the data, and the information is licensed as is with warranties excluded. Every run logs these terms and writes them to the key value store as `TERMS_OF_USE`, before it reads a single property, so a run that stops halfway still leaves them beside whatever it did return. They travel with the data rather than stopping at this page.

Nothing here is personal data. The rating list records property, not people: an address, a description, a floor area and a value. The Actor reads only pages the Valuation Office publishes openly, at a pace a person browsing the site would generate, and it signs in to nothing.

### 👍 Your feedback

Found a page shape the parser handles badly, or a filter that behaves differently from what is written above? Open an issue on the **Issues** tab of this Actor and it gets looked at. If you need a variation on this, a different set of fields, a scheduled portfolio re-read, or the same data shaped for your own system, say so in an issue and it can usually be built.

### 🔎 You might also like

- [UK Land Registry Sold Prices](https://apify.com/spookyweb/uk-land-registry-sold-prices), every residential sale in England and Wales since 1995, for the residential side of the same address.
- [UK Food Hygiene Ratings](https://apify.com/spookyweb/uk-food-hygiene-ratings), the Food Standards Agency rating for any food business, which pairs neatly with the pubs, cafes and restaurants in this dataset.
- [UK Planning Applications](https://apify.com/spookyweb/uk-planning-applications), what is being built and altered at an address.
- [Company Email Finder](https://apify.com/spookyweb/company-email-finder), for reaching the occupier once you know the property.

# Actor input Schema

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

A postcode such as BA1 5AJ, or just the outward code such as BA1. The Valuation Office matches a postcode by prefix, so BA1 also returns BA11 and BA12 addresses. On its own this is the fastest search there is.

## `town` (type: `string`):

The town on the address, for example BATH, MANCHESTER or LEEDS. Setting a town switches the run to the advanced address search, which is the only search that accepts a street, a house number and a rateable value range together.

## `street` (type: `string`):

A street name without the number, for example MILSOM STREET. Pair it with a town so a common street name does not return the same road in forty different places.

## `propertyNameOrNumber` (type: `string`):

The building name or street number, for example 19, or Royal Mail. Only the advanced address search sends this to the service, so pair it with a town to get the fast version.

## `localCouncil` (type: `string`):

The billing authority, by name or by its four digit code, for example BATH AND NORTH EAST SOMERSET or 0114. A unique fragment such as WESTMINSTER also works. This pulls every rated property in one council area, which no address field can do.

## `localCouncilReference` (type: `string`):

The billing authority reference printed on a business rates bill, for example 2670 5150 20. This is an exact lookup that returns the single assessment behind that bill, and it beats every other field when you have it.

## `descriptionCode` (type: `string`):

The Valuation Office description code, by code or by name, for example CS, Shop and Premises, or Warehouse and Premises. The full list is read off the live service at run time, so it is never out of date. An ambiguous fragment is rejected with the codes it could have meant.

## `specialCategoryCode` (type: `string`):

The special category, or SCAT, code by number or by name, for example 217 or Post Office Sorting Centres. On its own this searches the whole of England and Wales for one kind of property, which is how you build a national comparable set.

## `descriptionContains` (type: `string`):

Free text matched against the description the service prints for each property, for example hotel or car park. This is applied to the rows after they arrive, so it works alongside any search, but it reads more pages to fill the same result count.

## `minRateableValue` (type: `integer`):

Lowest current rateable value to keep, in whole pounds with no commas or currency symbol. The bound is inclusive. The service applies this against every valuation period a property has ever had, so the Actor re-checks the current value and drops anything that only qualified on an old one.

## `maxRateableValue` (type: `integer`):

Highest current rateable value to keep, in whole pounds with no commas or currency symbol. The bound is inclusive. Useful for isolating the small assessments that qualify for small business rate relief, which sits at 12,000 and 15,000 in England.

## `fetchValuationDetail` (type: `boolean`):

Read each property's valuation page for the rateable value, the effective date, the valuation history and the floor by floor breakdown. Turn this off for a fast address and description listing with no rateable value, which uses one request per fifteen properties instead of one each.

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

Hard cap on the rows saved, which is also the cap on what the run can cost. Each property saved is one billable result. The service itself refuses to page past ten thousand results however many it reports.

## `maxRecordsScanned` (type: `integer`):

Safety stop on how many search results the run reads before giving up on filling the result cap. It only matters when a filter is applied after the results arrive, because those searches read more pages than they save rows.

## Actor input object example

```json
{
  "postcode": "BA1 5AJ",
  "fetchValuationDetail": true,
  "maxResults": 10,
  "maxRecordsScanned": 2000
}
```

# Actor output Schema

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

Every matching property, one row per rating list assessment, with its rateable value, valuation history and floor areas.

## `terms` (type: `string`):

The Valuation Office terms this data is licensed under. Not Open Government Licence: use is restricted to non domestic rating purposes and the terms have to be passed on with the data. Written on every run.

# 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 = {
    "postcode": "BA1 5AJ",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("spookyweb/uk-business-rates").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 = {
    "postcode": "BA1 5AJ",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("spookyweb/uk-business-rates").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 '{
  "postcode": "BA1 5AJ",
  "maxResults": 10
}' |
apify call spookyweb/uk-business-rates --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,spookyweb/uk-business-rates"
        }
    }
}

```

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/cABXWsHGtG2m3aSSP/builds/hDdr8WOn8i4eh8w8u/openapi.json
