API Documentation
PlanNexus provides a RESTful API for accessing planning application data from councils across England.
Authentication
All API requests require an API key passed via the X-API-Key header.
curl https://api.plannexus.io/v1/applications \
-H "X-API-Key: pn_live_your_key_here" \
-G -d "q=extension" -d "postcode=SW1"Rate Limiting
Rate limits are communicated via response headers:
| Tier | Rate | Monthly | Price |
|---|---|---|---|
| Free | 10/min | 1,000 | £0 |
| Starter | 60/min | 25,000 | £99/mo |
| Pro | 300/min | 150,000 | £299/mo |
| Enterprise | Custom | Unlimited | Custom |
Endpoints
/v1/applicationsSearch and filter planning applications with full-text search, postcode filtering, and faceted results.
Parameters
qstringFull-text search querypostcodestringPostcode prefix filter (e.g. SW1, E8)statusstringFilter by status (comma-separated)application_typestringFilter by typeauthority_iduuidFilter by authoritydate_received_fromdateReceived on or after (YYYY-MM-DD)date_received_todateReceived on or beforesortstringSort field (default: date_received)orderstringasc or desc (default: desc)pageintPage number (default: 1)per_pageintResults per page (default: 25, max: 100)/v1/applications/nearbyFind planning applications near a geographic point.
Parameters
latfloatLatitude (-90 to 90)lngfloatLongitude (-180 to 180)radiusintRadius in metres (default: 1000, max: 50000)/v1/applications/{id}Get full details for a single planning application.
/v1/applications/{id}/documentsList documents associated with an application.
/v1/applications/{id}/historyGet the status change history for an application.
/v1/authoritiesList all local authorities in the database.
/v1/subscriptionsCreate a webhook subscription to receive notifications for new applications or status changes.
Parameters
webhook_urlstringHTTPS URL to receive payloadsfilter_postcodesstring[]Postcode prefix filterseventsstring[]Event types: new_application, status_change, decision_made/v1/subscriptionsList your webhook subscriptions.
Code Examples
import httpx
client = httpx.Client(
base_url="https://api.plannexus.io/v1",
headers={"X-API-Key": "pn_live_your_key"}
)
# Search for extensions in SW1
resp = client.get("/applications", params={
"q": "extension",
"postcode": "SW1",
"per_page": 10
})
data = resp.json()
for app in data["data"]:
print(f"{app['reference']} - {app['address']}")
print(f" Status: {app['status']}")
print(f" Received: {app['date_received']}")
const response = await fetch(
"https://api.plannexus.io/v1/applications?" +
new URLSearchParams({ q: "extension", postcode: "SW1" }),
{
headers: { "X-API-Key": "pn_live_your_key" },
}
);
const { data, meta } = await response.json();
console.log(`Found ${meta.total} applications`);
data.forEach((app) => {
console.log(`${app.reference} - ${app.address}`);
});Interactive API Explorer
Try the API directly in your browser with our Swagger UI.
Open Swagger UI