Programmatic access to UK property rental licensing data. Check whether any UK address falls within a selective or additional licensing scheme, directly from your application or CRM.
You can make your first API call in under two minutes. Follow these three steps:
Scroll to Manage Your API Keys below and click New API Key. Copy the key immediately — it is only shown once.
Send a POST /lookup request with any UK address. The API returns the licensing status, applicable schemes, and the property's UPRN.
curl -X POST https://tuxa.co.uk/api/v1/lookup \
-H "Authorization: Bearer tuxa_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"address": "14 Coldharbour Lane, London SE5 9NR"}'All API requests must include your API key in the Authorization header using the Bearer scheme. API keys begin with tuxa_.
Authorization: Bearer tuxa_your_api_key_here
API keys are tied to your Tuxa account and deduct from your credit balance. Keep your key secret and never expose it in client-side code.
The Tuxa API uses a credit-based pricing model. Each successful POST /lookup request deducts one credit from your balance. New accounts receive 10 free trial credits on sign-up. Credits never expire.
| Package | API Calls | Price | Per call |
|---|---|---|---|
| Free TrialOn sign-up | 10 | Free | Free |
| 100 API Calls | 100 | £10.00 | 10p |
| 500 API Calls | 500 | £45.00 | 9p |
| 1,000 API Calls | 1,000 | £80.00 | 8p |
| Enterprise | Custom | Contact us | £0.15+ |
Enterprise contracts include volume discounts, SLA guarantees, and dedicated support. Contact [email protected] to discuss your requirements.
Try a live lookup directly in your browser. Enter any UK address and your API key to see the full response.
Sign in to auto-populate your API key.
All API endpoints are relative to the following base URL:
https://tuxa.co.uk/api/v1
Check whether a UK property address falls within a selective or additional licensing scheme. Provide an address string, a UPRN, or precise coordinates. Deducts 1 credit per successful request.
| Field | Type | Required | Description |
|---|---|---|---|
| address | string | Conditional | Full UK property address. Required if uprn and coordinates are not provided. Including the full postcode significantly improves geocoding accuracy. |
| uprn | string | Conditional | Unique Property Reference Number. When provided, geocoding is resolved directly via OS Places with zero ambiguity — the fastest and most precise resolution path. Recommended for CRM integrations that store UPRNs. |
| latitude | number | Conditional | WGS84 latitude. Required together with longitude if address and UPRN are not provided. |
| longitude | number | Conditional | WGS84 longitude. Required together with latitude if address and UPRN are not provided. |
curl -X POST https://tuxa.co.uk/api/v1/lookup \
-H "Authorization: Bearer tuxa_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"address": "14 Coldharbour Lane, London SE5 9NR"}'{
"address": "14 Coldharbour Lane, London SE5 9NR",
"coordinates": {
"latitude": 51.4675,
"longitude": -0.0922
},
"council": {
"id": 42,
"name": "London Borough of Southwark",
"code": "southwark"
},
"licensing": {
"requiresLicense": true,
"licenseType": "selective",
"schemes": [
{
"id": 87,
"name": "Southwark Selective Licensing Scheme",
"type": "Selective",
"startDate": "2023-04-01",
"endDate": "2028-03-31",
"description": "Borough-wide selective licensing scheme.",
"moreInfoUrl": "https://www.southwark.gov.uk/housing/private-sector-housing/licensing"
}
]
},
"geocoding": {
"source": "os_places",
"uprn": "100021892955"
},
"meta": {
"creditsRemaining": 49,
"checkedAt": "2026-03-26T14:22:01.000Z"
}
}| Field | Description |
|---|---|
| licensing.requiresLicense | Boolean — whether a licence is required for this property |
| licensing.licenseType | "none", "selective", "additional", or "both" |
| licensing.schemes | Array of applicable licensing scheme objects |
| council.name | Name of the local authority the property falls within |
| geocoding.source | Which provider resolved the coordinates: "os_places", "cache", "postcodes_io", "google", or "passthrough" |
| geocoding.uprn | UPRN of the matched property (when resolved via OS Places) |
| meta.creditsRemaining | Your remaining credit balance after this request |
| meta.checkedAt | ISO 8601 timestamp of when the check was performed |
| Value | Meaning |
|---|---|
| none | No licensing scheme applies to this property |
| selective | The property falls within a selective licensing area |
| additional | The property falls within an additional (HMO) licensing area |
| both | The property falls within both selective and additional licensing areas |
Returns the current credit balance for the authenticated API key. Does not deduct any credits.
curl https://tuxa.co.uk/api/v1/credits \ -H "Authorization: Bearer tuxa_your_api_key_here"
{
"creditsRemaining": 49
}The API uses standard HTTP status codes. All error responses include an error field and a human-readable message.
| Status | Error | Description |
|---|---|---|
| 400 | Bad Request | Missing required fields. Provide either address, UPRN, or coordinates. |
| 401 | Unauthorised | Missing, invalid, or revoked API key. |
| 402 | payment_required | Your credit balance is zero. The response includes topUpUrl and docsUrl for easy recovery. |
| 404 | Council Not Found | The coordinates do not correspond to a known local authority in England or Wales. |
| 422 | Geocoding Failed | The address could not be geocoded. Check the address includes a valid UK postcode and try again. |
| 429 | Too Many Requests | Rate limit exceeded. Maximum 60 requests per minute per API key. |
| 500 | Internal Server Error | An unexpected error occurred. Please try again or contact support. |
{
"error": "payment_required",
"message": "You have no API credits remaining. Top up to continue making lookups.",
"creditsRemaining": 0,
"topUpUrl": "https://tuxa.co.uk/credits",
"docsUrl": "https://tuxa.co.uk/api-docs#pricing"
}const response = await fetch('https://tuxa.co.uk/api/v1/lookup', {
method: 'POST',
headers: {
'Authorization': 'Bearer tuxa_your_api_key_here',
'Content-Type': 'application/json',
},
body: JSON.stringify({
address: '14 Coldharbour Lane, London SE5 9NR',
}),
});
const data = await response.json();
if (data.licensing.requiresLicense) {
console.log(`Licence required: ${data.licensing.licenseType}`);
data.licensing.schemes.forEach(scheme => {
console.log(` - ${scheme.name} (${scheme.type})`);
});
} else {
console.log('No licensing scheme applies to this property.');
}
console.log(`Credits remaining: ${data.meta.creditsRemaining}`);Create and revoke API keys from your account below. Each key is shown in full only once at creation time — store it securely in your application's environment variables.
We use cookies
Tuxa uses a strictly necessary session cookie to keep you logged in. We also use Umami Analytics — a privacy-friendly, cookie-free tool that collects no personal data. Privacy & Cookie Policy