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 URLhttps://api.prscheck.co.uk/v1
Content typeapplication/json
AuthenticationAuthorization: Bearer YOUR_API_KEY
VersioningURL path versioning (currently v1)

Endpoints

GET

/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

NameTypeRequiredDescription
uprnstringYes*Unique Property Reference Number
postcodestringYes*UK postcode (with or without space)
addressstringNoFirst 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"
}
POST

/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"
}
GET

/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

NameTypeDescription
postcodestringUK postcode to search
querystringFree-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

PlanRequests per minuteRequests per dayBulk batch size
Professional6010,0001,000
Enterprise300100,00010,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.