API Reference
Base URL: https://api.planwire.io · Version: v1
Authentication
Pass your API key in the X-API-Key header. You can also use Authorization: Bearer YOUR_KEY.
X-API-Key: pw_live_a1b2c3d4e5f6...
Errors
All errors return JSON with an error field and an appropriate HTTP status code.
| Status | Meaning |
|---|---|
| 400 | Bad request — missing or invalid parameters |
| 401 | Unauthorised — missing or invalid API key |
| 404 | Not found — resource does not exist |
| 429 | Rate limit exceeded — upgrade your plan |
| 500 | Server error — contact support |
Pagination
All list endpoints return a meta object. Use ?page=2&limit=50 to paginate. Max limit is 100.
"meta": { "total": 4821, // total matching records "page": 1, // current page (1-indexed) "limit": 20, // records per page "pages": 242 // total pages }
Rate limits
Limits reset at midnight UTC. Exceeding the limit returns 429.
| Plan | Requests/day | Price |
|---|---|---|
| Free | 100 | £0 |
| Starter | 1,000 | £29/mo |
| Growth | 10,000 | £99/mo |
| Enterprise | Unlimited | £299/mo |
/v1/applications
List planning applications. All parameters are optional and can be combined.
Query Parameters
oxf, cam)curl "https://api.planwire.io/v1/applications?council=adu&q=extension&status=Approved&limit=5" \ -H "X-API-Key: YOUR_KEY"
/v1/applications/nearby
Find applications within a radius using PostGIS spatial indexing. Extremely fast even over millions of records.
curl "https://api.planwire.io/v1/applications/nearby?lat=51.4975&lng=-0.1278&radius_km=1" \ -H "X-API-Key: YOUR_KEY"
/v1/applications/:id
Fetch a single planning application by its UUID.
curl "https://api.planwire.io/v1/applications/8f6fac3a-d93a-453e-b5db-6c5ecc631bf0" \ -H "X-API-Key: YOUR_KEY"
/v1/applications/ref/:council/:reference
Fetch an application using the council's own reference number (e.g. 24/01234/FUL).
curl "https://api.planwire.io/v1/applications/ref/adu/AWDM%2F0158%2F25" \ -H "X-API-Key: YOUR_KEY"
/v1/councils
List all 379 supported Local Planning Authorities, with application counts.
{ "data": [{ "id": "adu", "name": "Adur District Council", "portalType": "official", "applicationCount": 874 }] }
/v1/councils/:id
Get a single council's details including the date of the most recent application.
curl "https://api.planwire.io/v1/councils/adu" \ -H "X-API-Key: YOUR_KEY"
/v1/webhooks
List all webhooks registered to your API key.
/v1/webhooks
Subscribe to planning application events. You'll receive an HTTP POST to your URL whenever a matching application is new or updated.
Request Body
SW1)curl -X POST "https://api.planwire.io/v1/webhooks" \ -H "X-API-Key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-app.com/hooks/planning", "filters": { "postcodePrefix": "SW1", "status": "Approved" } }'
Webhook Payload
Requests are signed with HMAC-SHA256 — verify using the X-PlanWire-Signature header.
{ "event": "application.new", // or "application.updated" "timestamp": "2025-03-19T14:23:01Z", "application": { /* full application object */ } }
/v1/webhooks/:id
Remove a webhook by its UUID.
Ready to build?
Get your free API key →