Commercial API
HMO licensing data, into your workflow.
A REST API for conveyancers, search providers and white-label partners. It answers questions about a subject property — the one your client is buying — and about what we hold for its council.
What it will not do
Worth stating before the endpoints, because it shapes all of them and it is not negotiable at any price:
- No bulk extraction. There is no “list all” call and no pagination through the dataset. Contracted volume is enforced per key.
- No reverse search. You cannot ask which properties a person or company holds, or which have more than N bedrooms.
- No licence-holder personal data. Company holders are named with their Companies House number. Individuals are a flag and nothing more — we do not hold their names, so we cannot return them.
- No occupancy for neighbours. Room and occupant counts are returned for the subject property only.
- No statement that a property is unlicensed. Absence from a register is reported as absence, with the register’s retrieval date, and never as a conclusion.
Authentication
Every request carries an X-API-Key header. Keys are issued against a commercial account and are stored hashed, so we cannot show you a key again after issuing it.
curl https://api.hmowatch.co.uk/api/v1/property?postcode=NW1%208NH \ -H "X-API-Key: hmow_..."
GET /api/v1/property
Licensing position for a subject property and the licensed HMOs near it. Parameters: postcode (required, full UK postcode) and address (optional, to match the subject property within the postcode).
{
"postcode": "NW1 8NH",
"covered": true,
"council": { "name": "Camden", "lastRefreshed": "2026-08-20T21:39:42Z" },
"subject": {
"address": "12 Example Road",
"onRegister": true,
"status": "licensed",
"schemeType": "mandatory",
"expiryDate": "2027-03-08"
},
"nearby": [
{ "address": "14 Example Road", "distanceM": 22, "status": "licensed" }
],
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0"
}Where the subject property is not on the register, onRegister is false and the response carries the full statutory wording explaining what that does and does not mean. Reproduce that wording rather than summarising it: operating an unlicensed HMO is a criminal offence, and a shortened version of this sentence in a search report is a statement neither of us can stand behind.
GET /api/v1/coverage
What we hold for every UK council, so an integration can tell the difference between “no HMOs near this property” and “we hold no register for this council”. These are very different answers to give a buyer, and conflating them is the single most likely way to mislead one.
Rate limits and errors
401— missing or revoked key.429— contracted volume exceeded. The response carriesRetry-Afterin seconds.400— a malformed or partial postcode. Full postcodes only.
Getting a key
Commercial access is contracted rather than self-serve, because volume and permitted use are part of the agreement. Tell us the shape of your integration and expected monthly volume and we will come back with pricing and a key.