Council Tax API
Look up UK council tax bands and rates for residential properties across England, Scotland, and Wales
Overview
The Council Tax API provides comprehensive access to UK council tax information including band lookup by postcode and specific property council tax calculations. Our API integrates with the UK Government's Valuation Office Agency (VOA) database and official postcode data to deliver accurate, up-to-date council tax information.
This API provides:
- Council tax band lookup by postcode for billing authorities across England, Scotland, and Wales
- Property-specific council tax band and amount calculation using VOA band data
- Authority search and authority-level rate lookup for local-authority-based workflows
- Historic and current council tax year support using the optional
taxYearparameter - VOA property details including property type and rateable value where available
- Coverage for Great Britain billing authorities. Northern Ireland is excluded because it uses domestic rates rather than council tax.
UK Council Tax Bands:
Council Tax Bands
- Band A: Up to £40,000
- Band B: £40,001 - £52,000
- Band C: £52,001 - £68,000
- Band D: £68,001 - £88,000
- Band E: £88,001 - £120,000
- Band F: £120,001 - £160,000
- Band G: £160,001 - £320,000
- Band H: Above £320,000
Key Features
- Real-time VOA database integration
- Property-specific band determination
- Billing authority search by name or code
- Accurate postcode-to-council mapping
- Current and historical tax year lookup
- Fast response times (<2 seconds typical)
This API is ideal for:
- Property portals displaying council tax costs
- Estate agents providing comprehensive property information
- Mortgage calculators including all property costs
- Property investment analysis platforms
- Conveyancing software requiring council tax data
- Financial planning applications
Important Note
Council tax calculations are based on official UK government data from the VOA and local authorities. Rates may vary slightly between authorities and can change annually. Always verify critical calculations directly with the relevant local authority.
Authentication
All requests to the Council Tax API require authentication using an API key. You can obtain your API key from your PropertyInsights dashboard after subscribing to an API plan.
Include your API key in the request header as follows:
X-API-Key: your_api_key_here
Security Warning
Endpoints
Base URL
https://propertyinsights.co.uk/api/v1/
Council Tax Bands by Postcode
/council-tax/lookup?postcode={postcode}&taxYear={taxYear} Get all council tax band amounts (A-H) for a given postcode. Returns the full local authority name and all band rates. The taxYear parameter is optional.
Property-Specific Council Tax
/council-tax/property-lookup?postcode={postcode}&address={address}&taxYear={taxYear} Get the exact council tax band and amount for a specific England/Wales property. Includes property details from the VOA database and the specific council tax amount for that property's band. The taxYear parameter is optional.
Property Candidate Discovery
/council-tax/property-candidates?postcode={postcode}Return VOA candidate address strings for an England/Wales postcode. Use this zero-credit diagnostic endpoint to resolve ambiguous inputs such as flat-only addresses before calling property lookup.
Search Council Tax Authorities
/council-tax/authorities?q={query}&nation={nation}&category={category}&limit={limit}Search selectable billing authorities by name or authority code. Useful when you want to look up rates by local authority instead of postcode or address.
Council Tax by Billing Authority
/council-tax/authority-lookup?authorityCode={authorityCode}&taxYear={taxYear}Get authority-wide council tax rates for a billing authority and tax year. This endpoint returns the richer versioned response, including tax year, source metadata, and band I where available for Welsh authorities.
Request Parameters
GET /council-tax/lookup
Query parameters for council tax band lookup by postcode.
| Parameter | Required | Type | Description |
|---|---|---|---|
| postcode | Required | String | UK postcode (e.g., "SW1A 1AA") |
| taxYear | Optional | String | Financial year in the format "YYYY-YY" (e.g., "2026-27"). If omitted, the current active council tax year is used. |
GET /council-tax/property-lookup
Query parameters for property-specific council tax lookup.
| Parameter | Required | Type | Description |
|---|---|---|---|
| postcode | Required | String | UK postcode (e.g., "SW1A 1AA") |
| address | Required | String | Most complete property-identifying address available, including flat/unit, building name or number, and street where relevant (e.g., "Flat 4, Riverside Court, 20 Thorburn Road"). Do not send agent names, company names, or flat numbers without building/street context. |
| taxYear | Optional | String | Financial year in the format "YYYY-YY" (e.g., "2026-27"). If omitted, the current active council tax year is used. |
GET /council-tax/property-candidates
Query parameters for diagnostic VOA candidate discovery. This endpoint returns candidate address strings only and does not select a council tax band.
| Parameter | Required | Type | Description |
|---|---|---|---|
| postcode | Required | String | England or Wales postcode to retrieve VOA property candidates for. |
GET /council-tax/authorities
Query parameters for authority search. All parameters are optional.
| Parameter | Required | Type | Description |
|---|---|---|---|
| q | Optional | String | Authority name or authority code fragment (for example "Westminster" or "E09000033"). |
| nation | Optional | String | Filter to England, Wales, or Scotland. |
| category | Optional | String | Filter by authority category such as London Borough, Unitary Authority, or Scottish Council. |
| limit | Optional | Integer | Maximum rows to return. Defaults to 25 and is capped at 100. |
GET /council-tax/authority-lookup
Query parameters for authority-level council tax rate lookup.
| Parameter | Required | Type | Description |
|---|---|---|---|
| authorityCode | Required | String | Authority LAD/GSS code such as E09000033 or W06000015. |
| taxYear | Optional | String | Financial year in the format "YYYY-YY". If omitted, the current active council tax year is used. |
Address Matching: For property lookups, provide enough detail to uniquely identify the property. House numbers and street names work best. For flats, include the flat, building name, and street where available. Avoid agent, company, or property manager names because they are not residential VOA addresses.
Examples: Good: "Flat 4, Riverside Court, 20 Thorburn Road". Weak: "Flat 4". Bad: "Martin & Co".
Postcode Format: Accepts postcodes with or without spaces. Both "SW1A1AA" and "SW1A 1AA" are valid.
Scotland: Property-level bands require Scottish Assessors data, so /council-tax/property-lookup and /council-tax/property-candidates return PROPERTY_LEVEL_COUNTRY_UNSUPPORTED for Scottish postcodes. Use /council-tax/lookup for authority-level Scottish rates.
Billing details in the response
Successful chargeable JSON responses include a top-level billing object. The endpoint examples on this page focus on the endpoint-specific data, so this repeated block may not be shown in every example.
"billing": {
"mode": "prepaid",
"creditsCharged": 1,
"creditsRemaining": 1999,
"creditsRefreshAt": "2026-08-14T09:30:00.000Z"
}| Field or header | Meaning |
|---|---|
| billing.creditsCharged X-Credits-Charged | Credits charged by this call. Failed and non-chargeable calls return 0 in the header. |
| billing.creditsRemaining X-Credits-Remaining | The credit balance after the call. |
| billing.creditsRefreshAt X-Credits-Refresh-At | The next monthly credit refresh as an ISO 8601 timestamp. Trial and non-renewing balances return null and omit the header. |
All authenticated API-key calls expose the billing headers, including validation errors and zero-credit status or management requests. Only successful chargeable JSON responses add the billing object to the response body.
Response Format
All API responses are returned in JSON format. The standard response structure is as follows:
{
"success": boolean,
"data": {
// Response data varies by endpoint
},
"error": {
"code": string,
"message": string
} // Only present if success is false
}Council Tax Lookup Response
{
"success": true,
"data": {
"postcode": "SW1A 1AA",
"authority": "City of Westminster",
"ons_code": "E09000033",
"taxYear": "2026-27",
"councilTaxBands": {
"band_a": 699.70,
"band_b": 816.32,
"band_c": 932.93,
"band_d": 1049.55,
"band_e": 1282.78,
"band_f": 1516.02,
"band_g": 1749.25,
"band_h": 2099.10
}
}
}Property-Specific Council Tax Response
{
"success": true,
"data": {
"postcode": "SW1A 2AA",
"searchAddress": "10 DOWNING STREET",
"matchedAddress": "FLAT 2ND FLR 10, DOWNING STREET, LONDON, SW1A 2AA",
"councilTaxBand": "H",
"councilTaxAmount": 2099.10,
"authority": "City of Westminster",
"ons_code": "E09000033",
"taxYear": "2026-27",
"propertyDetails": {
"voaDetailsLink": "https://www.tax.service.gov.uk/check-council-tax-band/property/617413c2-7ced-5b4b-bb72-4298e46e27d1"
},
"allBandAmounts": {
"band_a": 699.70,
"band_b": 816.32,
"band_c": 932.93,
"band_d": 1049.55,
"band_e": 1282.78,
"band_f": 1516.02,
"band_g": 1749.25,
"band_h": 2099.10
}
}
}Property Candidate Discovery Response
{
"success": true,
"data": {
"postcode": "CH62 1EW",
"candidateCount": 2,
"candidates": [
"FLAT 4 RIVERSIDE COURT, 20 THORBURN ROAD, WIRRAL, CH62 1EW",
"FLAT 5 RIVERSIDE COURT, 20 THORBURN ROAD, WIRRAL, CH62 1EW"
],
"executionTime": 1420
}
}Candidate discovery is a diagnostic helper. Treat candidates as options for the customer to choose from, not confirmed matches.
Authority Search Response
{
"success": true,
"data": {
"authorities": [
{
"authorityCode": "E09000033",
"name": "City of Westminster",
"category": "London Borough",
"nation": "England",
"isBillingAuthority": true,
"isSelectable": true,
"websiteUrl": null
}
]
}
}Authority Lookup Response
{
"success": true,
"data": {
"authorityCode": "E09000033",
"authority": "City of Westminster",
"ons_code": "E09000033",
"category": "London Borough",
"nation": "England",
"taxYear": "2026-27",
"sourcePublishedAt": "2026-03-25T09:30:00+00:00",
"sourceUpdatedAt": "2026-04-14T11:06:14+00:00",
"councilTaxBands": {
"band_a": 699.70,
"band_b": 816.32,
"band_c": 932.93,
"band_d": 1049.55,
"band_e": 1282.78,
"band_f": 1516.02,
"band_g": 1749.25,
"band_h": 2099.10,
"band_i": null
}
}
}For Welsh authorities, band_i is populated instead of null.
Response Fields
| Field | Type | Description |
|---|---|---|
| councilTaxBand | String | Property's council tax band (A-H) - property lookup only |
| councilTaxAmount | Number | Annual council tax amount for the property's band - property lookup only |
| councilTaxBands | Object | All council tax band amounts for the local authority. Postcode and property lookup return bands A-H. Authority lookup returns A-I. |
| taxYear | String | The financial year used for the returned council tax values. On postcode and property lookups this is the resolved year for the returned row. |
| propertyDetails | Object | VOA property information including type and rateable value |
| candidateCount / candidates | Number / Array | Returned by property-candidates and no-match property lookup errors to help resolve ambiguous addresses. |
| authorityCode | String | Billing authority LAD/GSS code returned by authority search and authority lookup. |
| taxYear | String | Returned by authority lookup to show which financial year the rate row belongs to. |
| sourcePublishedAt / sourceUpdatedAt | String | Publication and update timestamps for the imported authority-level rate row. Authority lookup only. |
Examples
Example 1: Council Tax Bands by Postcode
GET https://propertyinsights.co.uk/api/v1/council-tax/lookup?postcode=SW1A%201AA&taxYear=2026-27 X-API-Key: your_api_key_here
{
"success": true,
"data": {
"postcode": "SW1A 1AA",
"authority": "City of Westminster",
"ons_code": "E09000033",
"taxYear": "2026-27",
"councilTaxBands": {
"band_a": 699.70,
"band_b": 816.32,
"band_c": 932.93,
"band_d": 1049.55,
"band_e": 1282.78,
"band_f": 1516.02,
"band_g": 1749.25,
"band_h": 2099.10
}
}
}Returns all council tax band amounts for the City of Westminster for the explicit 2026-27 tax year.
Example 2: Property-Specific Council Tax
GET https://propertyinsights.co.uk/api/v1/council-tax/property-lookup?postcode=SW1A%202AA&address=10%20DOWNING%20STREET&taxYear=2026-27 X-API-Key: your_api_key_here
{
"success": true,
"data": {
"postcode": "SW1A 2AA",
"searchAddress": "10 DOWNING STREET",
"matchedAddress": "FLAT 2ND FLR 10, DOWNING STREET, LONDON, SW1A 2AA",
"councilTaxBand": "H",
"councilTaxAmount": 2099.10,
"authority": "City of Westminster",
"ons_code": "E09000033",
"taxYear": "2026-27",
"propertyDetails": {
"voaDetailsLink": "https://www.tax.service.gov.uk/check-council-tax-band/property/617413c2-7ced-5b4b-bb72-4298e46e27d1"
},
"allBandAmounts": {
"band_a": 699.70,
"band_b": 816.32,
"band_c": 932.93,
"band_d": 1049.55,
"band_e": 1282.78,
"band_f": 1516.02,
"band_g": 1749.25,
"band_h": 2099.10
}
}
}Returns Band H and £2,099.10 annual council tax for 10 Downing Street for the explicit 2026-27 tax year.
Example 3: Property Candidate Discovery
GET https://propertyinsights.co.uk/api/v1/council-tax/property-candidates?postcode=CH62%201EW X-API-Key: your_api_key_here
{
"success": true,
"data": {
"postcode": "CH62 1EW",
"candidateCount": 2,
"candidates": [
"FLAT 4 RIVERSIDE COURT, 20 THORBURN ROAD, WIRRAL, CH62 1EW",
"FLAT 5 RIVERSIDE COURT, 20 THORBURN ROAD, WIRRAL, CH62 1EW"
],
"executionTime": 1420
}
}Use candidate strings to collect or send a full property-identifying address into property lookup. This diagnostic endpoint does not deduct credits.
Example 4: Search Billing Authorities
GET https://propertyinsights.co.uk/api/v1/council-tax/authorities?q=Westminster&limit=5 X-API-Key: your_api_key_here
{
"success": true,
"data": {
"authorities": [
{
"authorityCode": "E09000033",
"name": "City of Westminster",
"category": "London Borough",
"nation": "England",
"isBillingAuthority": true,
"isSelectable": true,
"websiteUrl": null
}
]
}
}Useful when the user knows the council name but not the postcode.
Example 5: Authority-Level Rates
GET https://propertyinsights.co.uk/api/v1/council-tax/authority-lookup?authorityCode=E09000033&taxYear=2026-27 X-API-Key: your_api_key_here
{
"success": true,
"data": {
"authorityCode": "E09000033",
"authority": "City of Westminster",
"ons_code": "E09000033",
"category": "London Borough",
"nation": "England",
"taxYear": "2026-27",
"sourcePublishedAt": "2026-03-25T09:30:00+00:00",
"sourceUpdatedAt": "2026-04-14T11:06:14+00:00",
"councilTaxBands": {
"band_a": 699.70,
"band_b": 816.32,
"band_c": 932.93,
"band_d": 1049.55,
"band_e": 1282.78,
"band_f": 1516.02,
"band_g": 1749.25,
"band_h": 2099.10,
"band_i": null
}
}
}Use this endpoint for local-authority-based council tax workflows and historical tax year lookup.
Error Handling
Failed validation, unsupported country, no-match, and candidate-discovery errors do not deduct standard property lookup credits. Successful property-specific council tax lookups remain chargeable.
| HTTP Code | Error Code | Description |
|---|---|---|
| 400 | MISSING_POSTCODE | Postcode parameter is required |
| 400 | MISSING_ADDRESS | Address parameter is required (property lookup only) |
| 400 | FLAT_ONLY_ADDRESS | Address is too ambiguous; include flat/unit, building name or number, and street |
| 400 | ORGANISATION_OR_AGENT_NAME | Address appears to be an organisation or agent name rather than a residential address |
| 400 | PROPERTY_LEVEL_COUNTRY_UNSUPPORTED | Property-level lookup is not supported for Scotland; use postcode or authority-level rates |
| 400 | MISSING_AUTHORITY_CODE | authorityCode parameter is required (authority lookup only) |
| 400 | INVALID_POSTCODE | Invalid UK postcode format |
| 400 | INVALID_TAX_YEAR | taxYear must use the format YYYY-YY |
| 404 | POSTCODE_NOT_FOUND | Postcode not found in UK database |
| 404 | PROPERTY_NOT_FOUND | Property not found in VOA database |
| 404 | AUTHORITY_NOT_FOUND | Council tax authority not found |
| 404 | COUNCIL_TAX_NOT_FOUND | Council tax data not available for the requested authority or tax year |
| 502 | CANDIDATE_LOOKUP_FAILED | Unable to retrieve VOA property candidates |
| 503 | VOA_ERROR | Unable to retrieve property information from VOA |
| 401 | AUTHENTICATION_REQUIRED | Valid API key is required |
| 402 | INSUFFICIENT_CREDITS | Not enough API credits remaining to perform operation |
| 500 | DATABASE_ERROR | Error accessing database - please try again |
| 500 | INTERNAL_SERVER_ERROR | An unexpected error occurred |
Error Response Format
{
"success": false,
"error": {
"code": "PROPERTY_NOT_FOUND",
"message": "Property not found in VOA database. Please check the postcode and address.",
"candidateCount": 2,
"suggestions": [
"FLAT 4 RIVERSIDE COURT, 20 THORBURN ROAD, WIRRAL, CH62 1EW",
"FLAT 5 RIVERSIDE COURT, 20 THORBURN ROAD, WIRRAL, CH62 1EW"
]
}
} Use FLAT_ONLY_ADDRESS and ORGANISATION_OR_AGENT_NAME as validation signals before retrying with a full residential address. Use PROPERTY_LEVEL_COUNTRY_UNSUPPORTED to route Scottish postcodes to /council-tax/lookup for authority-level rates.
Rate Limits
API requests are subject to rate limiting based on your subscription plan. The current limits are:
| Plan | Requests per Minute | Requests per Day | Requests per Month |
|---|---|---|---|
| Basic | 10 | 500 | 5,000 |
| Standard | 30 | 2,000 | 30,000 |
| Premium | 100 | 5,000 | 100,000 |
| Enterprise | Custom | Custom | Custom |
When you exceed your rate limit, the API will return a 429 Too Many Requests response. Each response includes the following headers to help you track your usage:
X-RateLimit-Limit: [requests-per-minute limit] X-RateLimit-Remaining: [requests remaining in current window] X-RateLimit-Reset: [timestamp when limit resets]
Performance Note: Property lookup requests may take 5 to 6 seconds whilst we gather the data from the VOA, while postcode-only lookups are typically under 200ms.
Need Help?
If you need assistance with implementation or have questions about the Council Tax API, our support team is here to help.