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.

Example requestcurl
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:

TierRateMonthlyPrice
Free10/min1,000£0
Starter60/min25,000£99/mo
Pro300/min150,000£299/mo
EnterpriseCustomUnlimitedCustom

Endpoints

GET/v1/applications

Search and filter planning applications with full-text search, postcode filtering, and faceted results.

Parameters

qstringFull-text search query
postcodestringPostcode prefix filter (e.g. SW1, E8)
statusstringFilter by status (comma-separated)
application_typestringFilter by type
authority_iduuidFilter by authority
date_received_fromdateReceived on or after (YYYY-MM-DD)
date_received_todateReceived on or before
sortstringSort field (default: date_received)
orderstringasc or desc (default: desc)
pageintPage number (default: 1)
per_pageintResults per page (default: 25, max: 100)
GET/v1/applications/nearby

Find planning applications near a geographic point.

Parameters

latfloatLatitude (-90 to 90)
lngfloatLongitude (-180 to 180)
radiusintRadius in metres (default: 1000, max: 50000)
GET/v1/applications/{id}

Get full details for a single planning application.

GET/v1/applications/{id}/documents

List documents associated with an application.

GET/v1/applications/{id}/history

Get the status change history for an application.

GET/v1/authorities

List all local authorities in the database.

POST/v1/subscriptions

Create a webhook subscription to receive notifications for new applications or status changes.

Parameters

webhook_urlstringHTTPS URL to receive payloads
filter_postcodesstring[]Postcode prefix filters
eventsstring[]Event types: new_application, status_change, decision_made
GET/v1/subscriptions

List your webhook subscriptions.

Code Examples

Pythonpython
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']}")
JavaScriptjavascript
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