Getting Started

From zero to your first API call in under 5 minutes. No credit card required.

Prerequisites

  • • An HTTP client (curl, Postman, or your language's HTTP library)
  • • A Homedata account (free signup)
1

Create your free account

Sign up at homedata.co.uk/register. You'll need:

  • • Your name and email
  • • Organisation name (company or project name)
  • • Industry (helps us tailor your experience)

Your API key is generated instantly after signup. The free tier gives you 100 requests/month — enough to build and test your integration.

2

Get your API key

After signing in, go to Developer → API Keys in your dashboard. Click "Reveal" to see your full API key.

Your API Key Format
prefix.your_secret_key_here

⚠️ Keep your API key secret. Don't commit it to version control or expose it in client-side code.

3

Make your first request

Let's start with something simple — look up the EPC energy rating for a property. The EPC endpoint is open (no auth required), so you can try it right now:

cURL Copy & paste into your terminal
curl https:/.homedata.co.uk/api/epc-checker/10093609154/
Python pip install requests
import requests

response = requests.get(
    "https:/.homedata.co.uk/api/epc-checker/10093609154/"
)
data = response.json()
print(f"Energy efficiency: {data['current_energy_efficiency']}/100")
print(f"Potential: {data['potential_energy_efficiency']}/100")
JavaScript (Node.js / Browser)
const response = await fetch(
  "https:/.homedata.co.uk/api/epc-checker/10093609154/"
);
const data = await response.json();
console.log(`Energy efficiency: ${data.current_energy_efficiency}/100`);
console.log(`Potential: ${data.potential_energy_efficiency}/100`);
PHP
$response = file_get_contents(
    "https:/.homedata.co.uk/api/epc-checker/10093609154/"
);
$data = json_decode($response, true);
echo "Energy efficiency: " . $data['current_energy_efficiency'] . "/100";

Expected response:

200 OK ~250ms
{
  "uprn": 10093609154,
  "current_energy_efficiency": 84,
  "potential_energy_efficiency": 84,
  "last_epc_date": "2020-07-28",
  "epc_floor_area": 59,
  "construction_age_band": "2020-2029",
  "epc_id": "1813679032512020072814144822200478"
}

Energy efficiency is scored 1–100 (higher = better). Use the /api/properties/{uprn}/ endpoint for full property details including EPC band letter, tenure, and sold history.

4

Use your API key for authenticated endpoints

Most endpoints require authentication. Pass your API key in the Authorization header:

cURL
# Full property data (requires API key)
curl https:/.homedata.co.uk/api/properties/100023336956/ \
  -H "Authorization: Api-Key YOUR_API_KEY"

# Environmental risk assessment
curl "https:/.homedata.co.uk/api/risks/flood/?uprn=100023336956" \
  -H "Authorization: Api-Key YOUR_API_KEY"

# Deprivation data by postcode
curl "https:/.homedata.co.uk/api/deprivation/?postcode=SW1A%202AA" \
  -H "Authorization: Api-Key YOUR_API_KEY"
Python
import requests

API_KEY = "YOUR_API_KEY"
BASE = "https:/.homedata.co.uk"
headers = {"Authorization": f"Api-Key {API_KEY}"}

# Get full property data
prop = requests.get(f"{BASE}/api/properties/100023336956/", headers=headers).json()
print(f"Address: {prop['full_address']}")
print(f"Type: {prop['property_type']}, Beds: {prop['bedrooms']}")

# Get flood risk
risk = requests.get(
    f"{BASE}/api/risks/flood/",
    params={"uprn": "100023336956"},
    headers=headers
).json()
for result in risk["results"]:
    print(f"{result['risk_type']}: {result['label']}")

# Get deprivation data
dep = requests.get(
    f"{BASE}/api/deprivation/",
    params={"postcode": "SW1A 2AA"},
    headers=headers
).json()
print(f"Deprivation: {dep['overall']['label']}")
JavaScript
const API_KEY = "YOUR_API_KEY";
const BASE = "https:/.homedata.co.uk";
const headers = { "Authorization": `Api-Key ${API_KEY}` };

// Get full property data
const prop = await fetch(`${BASE}/api/properties/100023336956/`, { headers })
  .then(r => r.json());

// Get all environmental risks at once
const risks = await fetch(
  `${BASE}/api/risks/all/?uprn=100023336956`,
  { headers }
).then(r => r.json());

risks.results.forEach(r =>
  console.log(`${r.risk_type}: ${r.label}`)
);
5

Monitor your usage

Every response includes rate limit headers so you always know where you stand:

Response Headers
X-RateLimit-Limit: 100      ← Monthly allowance
X-RateLimit-Remaining: 97  ← Requests left this month

You can also check your usage in the Developer Dashboard — it shows a 30-day usage chart with daily breakdown.