API Documentation
Integrate PRSCheck property compliance data directly into your existing systems. Our REST API provides programmatic access to property checks, bulk screening, and address lookups.
API access is included in Professional and Enterprise plans
REST API overview
The PRSCheck API is a JSON-based REST API. All requests use HTTPS and require authentication via API key. Responses include standard HTTP status codes and descriptive error messages.
| Base URL | https://api.prscheck.co.uk/v1 |
| Content type | application/json |
| Authentication | Authorization: Bearer YOUR_API_KEY |
| Versioning | URL path versioning (currently v1) |
Endpoints
/api/check
Check a single property's compliance status. Returns EPC data, gas safety status, licensing status, deposit protection, and an overall compliance score.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
uprn | string | Yes* | Unique Property Reference Number |
postcode | string | Yes* | UK postcode (with or without space) |
address | string | No | First line of address (for disambiguation) |
*Provide either uprn or postcode. UPRN is preferred for exact matching.
Example response
{
"uprn": "100023336956",
"address": "10 Downing Street, London, SW1A 2AA",
"compliance_score": 72,
"checks": {
"epc": {
"status": "pass",
"rating": "C",
"expiry": "2028-03-15"
},
"gas_safety": {
"status": "warning",
"last_certificate": "2025-02-20",
"expiry": "2026-02-20"
},
"eicr": {
"status": "fail",
"detail": "No EICR record found"
},
"licensing": {
"status": "not_required",
"scheme": null
},
"deposit_protection": {
"status": "pass",
"scheme": "TDS",
"protected_date": "2024-11-01"
}
},
"risk_level": "medium",
"last_updated": "2026-04-05T10:30:00Z"
}/api/check/bulk
Submit a batch of properties for compliance screening. Returns a job ID for polling results. Supports up to 10,000 properties per request.
Request body
{
"properties": [
{ "uprn": "100023336956" },
{ "postcode": "SW1A 2AA", "address": "11 Downing Street" },
{ "uprn": "200003541287" }
],
"checks": ["epc", "gas_safety", "eicr", "licensing"],
"callback_url": "https://your-council.gov.uk/webhook/prscheck"
}Response
{
"job_id": "bulk_7f3a9b2c",
"status": "processing",
"total_properties": 3,
"estimated_completion": "2026-04-05T11:00:00Z",
"results_url": "/api/check/bulk/bulk_7f3a9b2c/results"
}/api/addresses
Look up addresses by postcode or partial address string. Returns UPRNs and full address details for use with the /api/check endpoint.
Parameters
| Name | Type | Description |
|---|---|---|
postcode | string | UK postcode to search |
query | string | Free-text address search |
Authentication
All API requests require a valid API key passed in the Authorization header. API keys are generated in your PRSCheck dashboard under Settings > API Keys.
Example header
Authorization: Bearer prs_live_k7x9m2p4q8r1s5t3
Keep your API key secure. Do not expose it in client-side code or public repositories. If you believe your key has been compromised, regenerate it immediately from your dashboard.
Rate limits
| Plan | Requests per minute | Requests per day | Bulk batch size |
|---|---|---|---|
| Professional | 60 | 10,000 | 1,000 |
| Enterprise | 300 | 100,000 | 10,000 |
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. If you exceed the limit, you will receive a 429 status code.
Code examples
cURL
curl -X GET "https://api.prscheck.co.uk/v1/api/check?uprn=100023336956" \ -H "Authorization: Bearer prs_live_k7x9m2p4q8r1s5t3" \ -H "Content-Type: application/json"
Python
import requests
API_KEY = "prs_live_k7x9m2p4q8r1s5t3"
BASE_URL = "https://api.prscheck.co.uk/v1"
response = requests.get(
f"{BASE_URL}/api/check",
params={"uprn": "100023336956"},
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
print(f"Compliance score: {data['compliance_score']}")
print(f"EPC rating: {data['checks']['epc']['rating']}")
print(f"Risk level: {data['risk_level']}")Node.js
const API_KEY = "prs_live_k7x9m2p4q8r1s5t3";
const BASE_URL = "https://api.prscheck.co.uk/v1";
const response = await fetch(
`${BASE_URL}/api/check?uprn=100023336956`,
{
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
}
);
const data = await response.json();
console.log(`Compliance score: ${data.compliance_score}`);
console.log(`EPC rating: ${data.checks.epc.rating}`);
console.log(`Risk level: ${data.risk_level}`);Register Your Interest
Be first to know when PRS Database integration goes live.