Developer Platform

Planning Alerts API

Self-serve REST API for UK planning application data. All 312 councils. Daily refresh. Spatial search, webhooks, and bulk export.

Authentication

All API requests require a Bearer token in the Authorization header. API keys are prefixed with pa_live_ for production.

curl https://api.planningalerts.app/v1/applications?postcode=SW1A1AA \
-H "Authorization: Bearer pa_live_xxxxxxxxxxxx"

Base URL: https://api.planningalerts.app

API Pricing

Starter

£99/mo
  • 10,000 API calls/month
  • REST API access
  • Spatial search by postcode
  • All 312 councils
  • JSON responses
  • Email support
Most popular

Professional

£299/mo
  • 100,000 API calls/month
  • Everything in Starter
  • Webhooks for new applications
  • Status change events
  • Bulk export (CSV/JSON)
  • Priority support

Enterprise

£799/mo
  • Unlimited API calls
  • Everything in Professional
  • Custom radius queries
  • Dedicated account manager
  • SLA guarantee
  • Custom data feeds

API Reference

GET/v1/applications

Search planning applications by postcode, status, date range, or free text.

Parameters

postcodestringUK postcode (e.g. SW1A1AA)
radiusintegerRadius in metres (50, 100, 500, 1000)
statusstringPermitted | Refused | Undecided | Withdrawn
limitintegerResults per page (max 100, default 20)
offsetintegerPagination offset

Example

GET /v1/applications?postcode=SW1A1AA&radius=500&status=Undecided
Authorization: Bearer pa_live_xxxxxxxxxxxx

{
  "total": 12,
  "items": [
    {
      "id": 1234567,
      "reference": "25/00456/FUL",
      "lpa_code": "WCC",
      "address": "14 Oak Street, London SW1A 1AA",
      "description": "Erection of single-storey rear extension",
      "app_status": "Undecided",
      "app_type": "Full",
      "received_date": "2026-07-15",
      "source_url": "https://planning.westminster.gov.uk/...",
      "attribution": "Contains public sector information licensed under OGL3."
    }
  ]
}
GET/v1/applications/:id

Retrieve a single planning application by its internal ID.

Example

GET /v1/applications/1234567
Authorization: Bearer pa_live_xxxxxxxxxxxx
GET/v1/councils

List all 312 councils with their portal status and last scrape timestamp.

Example

GET /v1/councils
Authorization: Bearer pa_live_xxxxxxxxxxxx
POST/v1/webhooks

Register a webhook URL to receive real-time notifications when new applications are submitted.

Parameters

urlstringHTTPS endpoint to receive POST events
postcodestringPostcode to monitor
radiusintegerRadius in metres
eventsarray['new_application', 'status_change']

Example

POST /v1/webhooks
Authorization: Bearer pa_live_xxxxxxxxxxxx

{
  "url": "https://your-app.com/webhooks/planning",
  "postcode": "SW1A1AA",
  "radius": 500,
  "events": ["new_application", "status_change"]
}

Webhook Events

Webhooks are available on Professional and Enterprise plans. Events are delivered as HTTP POST requests to your endpoint with a JSON body.

new_application

A new planning application has been submitted

status_change

An application status has changed (e.g. Undecided → Permitted)