Council Tax API

Look up UK council tax bands and rates for residential properties across England, Scotland, and Wales

REST API
JSON Responses
API Key Authentication
Real-time Data

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 taxYear parameter
  • 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

Never expose your API key in client-side code. Always make API calls from your server-side application to protect your credentials.

Endpoints

Base URL

https://propertyinsights.co.uk/api/v1/

Council Tax Bands by Postcode

GET
/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

GET
/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

GET
/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

GET
/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

GET
/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.

ParameterRequiredTypeDescription
postcodeRequiredStringUK postcode (e.g., "SW1A 1AA")
taxYearOptionalStringFinancial 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.

ParameterRequiredTypeDescription
postcodeRequiredStringUK postcode (e.g., "SW1A 1AA")
addressRequiredStringMost 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.
taxYearOptionalStringFinancial 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.

ParameterRequiredTypeDescription
postcodeRequiredStringEngland or Wales postcode to retrieve VOA property candidates for.

GET /council-tax/authorities

Query parameters for authority search. All parameters are optional.

ParameterRequiredTypeDescription
qOptionalStringAuthority name or authority code fragment (for example "Westminster" or "E09000033").
nationOptionalStringFilter to England, Wales, or Scotland.
categoryOptionalStringFilter by authority category such as London Borough, Unitary Authority, or Scottish Council.
limitOptionalIntegerMaximum 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.

ParameterRequiredTypeDescription
authorityCodeRequiredStringAuthority LAD/GSS code such as E09000033 or W06000015.
taxYearOptionalStringFinancial 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 headerMeaning
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

FieldTypeDescription
councilTaxBandStringProperty's council tax band (A-H) - property lookup only
councilTaxAmountNumberAnnual council tax amount for the property's band - property lookup only
councilTaxBandsObjectAll council tax band amounts for the local authority. Postcode and property lookup return bands A-H. Authority lookup returns A-I.
taxYearStringThe financial year used for the returned council tax values. On postcode and property lookups this is the resolved year for the returned row.
propertyDetailsObjectVOA property information including type and rateable value
candidateCount / candidatesNumber / ArrayReturned by property-candidates and no-match property lookup errors to help resolve ambiguous addresses.
authorityCodeStringBilling authority LAD/GSS code returned by authority search and authority lookup.
taxYearStringReturned by authority lookup to show which financial year the rate row belongs to.
sourcePublishedAt / sourceUpdatedAtStringPublication 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 CodeError CodeDescription
400MISSING_POSTCODEPostcode parameter is required
400MISSING_ADDRESSAddress parameter is required (property lookup only)
400FLAT_ONLY_ADDRESSAddress is too ambiguous; include flat/unit, building name or number, and street
400ORGANISATION_OR_AGENT_NAMEAddress appears to be an organisation or agent name rather than a residential address
400PROPERTY_LEVEL_COUNTRY_UNSUPPORTEDProperty-level lookup is not supported for Scotland; use postcode or authority-level rates
400MISSING_AUTHORITY_CODEauthorityCode parameter is required (authority lookup only)
400INVALID_POSTCODEInvalid UK postcode format
400INVALID_TAX_YEARtaxYear must use the format YYYY-YY
404POSTCODE_NOT_FOUNDPostcode not found in UK database
404PROPERTY_NOT_FOUNDProperty not found in VOA database
404AUTHORITY_NOT_FOUNDCouncil tax authority not found
404COUNCIL_TAX_NOT_FOUNDCouncil tax data not available for the requested authority or tax year
502CANDIDATE_LOOKUP_FAILEDUnable to retrieve VOA property candidates
503VOA_ERRORUnable to retrieve property information from VOA
401AUTHENTICATION_REQUIREDValid API key is required
402INSUFFICIENT_CREDITSNot enough API credits remaining to perform operation
500DATABASE_ERRORError accessing database - please try again
500INTERNAL_SERVER_ERRORAn 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:

PlanRequests per MinuteRequests per DayRequests per Month
Basic105005,000
Standard302,00030,000
Premium1005,000100,000
EnterpriseCustomCustomCustom

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.