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.
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. Credits never expire and can be purchased at any time.
| Package | Credits | Price | Per lookup |
|---|---|---|---|
| Starter | 50 | £4.99 | 10p |
| Standard | 200 | £14.99 | 7.5p |
| Professional | 500 | £29.99 | 6p |
| Enterprise | 2,000 | £99.99 | 5p |
All API endpoints are relative to the following base URL:
https://tuxa.co.uk/api/v1
/lookupCheck whether a UK property address falls within a selective or additional licensing scheme. Provide either a full address string or precise coordinates. Deducts 1 credit per successful request.
| Field | Type | Required | Description |
|---|---|---|---|
| address | string | Conditional | Full UK property address. Required if coordinates are not provided. |
| latitude | number | Conditional | WGS84 latitude. Required together with longitude if address is not provided. |
| longitude | number | Conditional | WGS84 longitude. Required together with latitude if address is 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 requiring all privately rented properties to be licensed.",
"moreInfoUrl": "https://www.southwark.gov.uk/housing/private-sector-housing/licensing"
}
]
},
"meta": {
"creditsRemaining": 49,
"checkedAt": "2026-03-11T14:22:01.000Z"
}
}| 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 |
/creditsReturns 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 or coordinates. |
| 401 | Unauthorized | Missing, invalid, or revoked API key. |
| 402 | Insufficient Credits | Your credit balance is zero. Purchase more credits to continue. |
| 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 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": "Insufficient Credits",
"message": "You have no credits remaining. Purchase more at https://tuxa.co.uk/credits",
"creditsRemaining": 0
}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(`License 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}`);import requests
response = requests.post(
'https://tuxa.co.uk/api/v1/lookup',
headers={
'Authorization': 'Bearer tuxa_your_api_key_here',
'Content-Type': 'application/json',
},
json={
'address': '14 Coldharbour Lane, London SE5 9NR',
}
)
data = response.json()
if data['licensing']['requiresLicense']:
print(f"License required: {data['licensing']['licenseType']}")
for scheme in data['licensing']['schemes']:
print(f" - {scheme['name']} ({scheme['type']})")
else:
print('No licensing scheme applies to this property.')
print(f"Credits remaining: {data['meta']['creditsRemaining']}")<?php
$ch = curl_init('https://tuxa.co.uk/api/v1/lookup');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer tuxa_your_api_key_here',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'address' => '14 Coldharbour Lane, London SE5 9NR',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
if ($response['licensing']['requiresLicense']) {
echo "License required: " . $response['licensing']['licenseType'] . "\n";
} else {
echo "No licensing scheme applies.\n";
}
?>curl -X POST https://tuxa.co.uk/api/v1/lookup \
-H "Authorization: Bearer tuxa_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"latitude": 51.4675,
"longitude": -0.0922
}'Create and revoke API keys from your account below. Each key is shown in full only once at creation time. Store it securely.
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