Discover/Planning Portal API
live

Planning Portal APIplanningportal.co.uk

Access UK Local Planning Authority data by postcode, LPA contact details, planning service URLs, consent types, and guidance content via the Planning Portal API.

Endpoint health
verified 2d ago
get_lpa_details
get_lpa_urls
get_page_content
find_lpa_by_postcode
get_common_paths
6/6 passing latest checkself-healing
Endpoints
6
Updated
26d ago

What is the Planning Portal API?

The Planning Portal API exposes 6 endpoints covering UK planning authority lookup, contact data, service URLs, consent types, and guidance content. Use find_lpa_by_postcode to resolve any UK postcode to its responsible Local Planning Authority — including the LPA code, name, county, and spatial coordinates — then chain into get_lpa_details or get_lpa_urls for contact information and direct links to that authority's planning decision register.

Try it
The unique X-prefixed code of the LPA (e.g. 'X5990' for Westminster City Council). Discoverable via find_lpa_by_postcode endpoint.
api.parse.bot/scraper/57dc4109-4a1c-44b5-b0a6-c5429260e98a/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/57dc4109-4a1c-44b5-b0a6-c5429260e98a/get_lpa_details?lpa_code=X5990' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace planningportal-co-uk-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Planning Portal UK API — find your local planning authority and explore guidance."""
from parse_apis.planning_portal_uk_api import PlanningPortal, Path, PageNotFound

client = PlanningPortal()

# Look up the Local Planning Authority for a UK postcode.
lookup = client.postcodelookups.get(postcode="SW1A 2AA")
print(f"Postcode: {lookup.postcode}, Coordinates: ({lookup.coordinates.x}, {lookup.coordinates.y})")
for auth in lookup.lpa_lookup:
    print(f"  LPA: {auth.lpa_name} ({auth.lpa_code}), GLA: {auth.is_gla}")

# Get full authority details and its planning service URLs.
authority = client.authorities.get(lpa_code="X5990")
print(f"Authority: {authority.contact_information.name}")
print(f"  Email: {authority.contact_information.email_address}")
print(f"  Phone: {authority.contact_information.telephone_one}")

for url_item in authority.urls.list(limit=3):
    print(f"  Service: {url_item.name} -> {url_item.url}")

# List consent types available in England.
consent = client.consenttypes.list(limit=3).first()
if consent:
    print(f"First consent type: {consent.title} ({consent.slug})")

# Retrieve page content with typed-error handling.
try:
    page = client.pages.get(path=Path.PLANNING_PLANNING_APPLICATIONS)
    print(f"Page: {page.path}, template: {page.component_chunk_name}")
    print(f"  Description: {page.page_context.description}")
except PageNotFound as exc:
    print(f"Page not found: {exc}")

# Discover available guidance paths.
for p in client.pages.list_paths(limit=5):
    print(f"  Available path: {p}")

print("Exercised: postcodelookups.get / authorities.get / authority.urls.list / consenttypes.list / pages.get / pages.list_paths")
All endpoints · 6 totalmissing one? ·

Retrieves detailed contact and website information for a specific Local Planning Authority by its code. Returns contact details including name, email, website URL, address, and telephone numbers. LPA codes use a proprietary X-prefixed format (e.g. 'X5990' for Westminster City Council). Use find_lpa_by_postcode to discover the lpa_code for a given location.

Input
ParamTypeDescription
lpa_coderequiredstringThe unique X-prefixed code of the LPA (e.g. 'X5990' for Westminster City Council). Discoverable via find_lpa_by_postcode endpoint.
Response
{
  "type": "object",
  "fields": {
    "lpa_code": "string, the LPA code",
    "attributes": "object with additional LPA attributes",
    "tenantInformation": "object with terms and conditions URL",
    "contactInformation": "object containing LPA name, email, website URL, address, telephone, and other contact details",
    "paymentInformation": "object with payment details or null"
  },
  "sample": {
    "data": {
      "lpa_code": "X5990",
      "attributes": {},
      "tenantInformation": {
        "termsAndConditionsUrl": null
      },
      "contactInformation": {
        "name": "Westminster City Council",
        "town": "Redhill",
        "isGla": true,
        "postCode": "EH1 9FL",
        "websiteUrl": "https://www.westminster.gov.uk/planning-building-and-environmental-regulations/planning-applications/making-planning-application",
        "addressLine1": "Town Planning – Westminster City Council",
        "emailAddress": "[email protected]",
        "telephoneOne": "+1 (555) 012-3456",
        "isNationalPark": false
      },
      "paymentInformation": null
    },
    "status": "success"
  }
}

About the Planning Portal API

LPA Lookup and Contact Data

The find_lpa_by_postcode endpoint accepts any UK postcode (spaces optional) and returns two key structures: an addresses array with UPRN identifiers, easting/northing coordinates, and formatted address strings, plus an lpa_lookup array identifying the responsible Local Planning Authority by lpaCode, lpaName, countyCode, and GLA membership flag. The lpaCode uses a proprietary X-prefixed format (e.g. X5990 for Westminster City Council) that feeds directly into the other LPA endpoints.

LPA Details and Service URLs

get_lpa_details takes an lpa_code and returns structured contactInformation (name, email, website, postal address, telephone), tenantInformation with terms URLs, and a paymentInformation object. get_lpa_urls returns the localPlanningAuthorityUrls array — each entry includes an id, human-readable name, url, and sortOrder — giving direct links to the LPA's searchable planning application register and decision history.

Consent Types and Guidance Content

get_consent_types returns all 14 planning consent types in England, each with a title, slug, description, and full_url. These cover householder planning, full planning, outline planning, listed building consent, lawful development certificates, prior approval, and more. get_page_content retrieves structured guidance pages by path slug, returning pageContext with codename, breadcrumbs, SEO keywords, and nested content sections. Valid path slugs are discoverable via get_common_paths, which returns a curated array of available guidance routes.

Reliability & maintenanceVerified

The Planning Portal API is a managed, monitored endpoint for planningportal.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when planningportal.co.uk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official planningportal.co.uk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2d ago
Latest check
6/6 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Resolve a customer's postcode to their Local Planning Authority and surface the correct planning register URL automatically
  • Build a planning pre-application tool that displays LPA contact details (email, telephone, address) before a user submits
  • Populate a consent type selector in a planning application form using the 14 types from get_consent_types
  • Index Planning Portal guidance pages by fetching slugs from get_common_paths and content from get_page_content for a search tool
  • Validate which LPA has jurisdiction over a property by comparing the lpa_lookup result with a known address UPRN
  • Generate a directory of LPA planning decision register URLs across multiple authority codes using get_lpa_urls
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Planning Portal have an official developer API?+
Planning Portal does not publish a general-purpose public developer API. The data accessible here is sourced from Planning Portal's web services at planningportal.co.uk, which are not offered as a documented public API product.
What does find_lpa_by_postcode return beyond just the LPA name?+
It returns an addresses array with UPRN identifiers, easting/northing coordinates (used for the spatial lookup), and formatted address strings for each address at that postcode. The lpa_lookup array includes lpaCode, lpaName, countyCode, countyName, isGLA, isoCode, organisationTypeId, and boundaryCode. The coordinates object shows the easting/northing values used to resolve the authority.
Does the API cover planning applications or individual decision records?+
Not directly. The API provides the URL to each LPA's planning application register via get_lpa_urls, but does not return individual application records, decision notices, or case statuses. You can fork this API on Parse and revise it to add an endpoint that retrieves application records from a specific LPA's register URL.
What happens if an unrecognized LPA code is passed to get_lpa_details or get_lpa_urls?+
Invalid or unrecognized LPA codes will produce an upstream error response from the API. LPA codes follow a proprietary X-prefixed format and are best discovered by first calling find_lpa_by_postcode, which returns valid lpaCode values in its lpa_lookup array.
Does the API cover planning guidance for Wales, Scotland, or Northern Ireland?+
The API reflects the scope of Planning Portal, which focuses on England. The get_consent_types endpoint explicitly covers consent types in England, and LPA data is drawn from English and Welsh authorities registered on the portal. Coverage of devolved nations' distinct planning systems is limited. You can fork this API on Parse and revise it to add endpoints targeting the relevant national planning portals for Scotland or Northern Ireland.
Page content last updated . Spec covers 6 endpoints from planningportal.co.uk.
Related APIs in Government PublicSee all →
losangeles.gov API
Search for building permits, inspection records, and property details for Los Angeles addresses to access permit histories, parcel information, code enforcement records, and occupancy certificates. Track retrofit programs and get comprehensive permit summaries to research property compliance and construction activity in LA.
geoportail-urbanisme.gouv.fr API
Find parcel information and urban planning documents for any French address, instantly accessing zoning details, land use regulations, and planning requirements from the official Géoportail database. Search by address to discover property classifications, construction rules, and relevant urban planning documentation for your location.
pensions-ombudsman.org.uk API
Search through the UK Pensions Ombudsman's past decisions and guidance to find relevant information about pension disputes, complaints procedures, and FAQs. Access news updates, publications, and detailed information about filing complaints or understanding your rights as a pension scheme member.
pharmdata.co.uk API
Search UK pharmacies, access NHS service statistics, and retrieve pharmacy dispensing data to compare performance across regions. Monitor MHRA drug safety alerts and view LPC rankings to make informed decisions about pharmacy services and medications.
spatial.nsw.gov.au API
Search and retrieve spatial data, publications, news, and information from NSW Spatial Services, including portal items, data packs, and groups. Access detailed information about spatial datasets and resources available through the NSW Spatial Services Portal.
propertypal.com API
Search and browse thousands of properties across Northern Ireland including rentals, sales, and commercial listings while accessing agent details, price trends, and market news. Get comprehensive property information, open viewing schedules, and real estate insights all in one place.
service-public.fr API
Search the official French public service portal (service-public.fr) for practical guides, legal information, administrative procedures, and support resources. Retrieve structured content from any guide or category page, explore autocomplete suggestions, and access legal references — all through a single unified API.
energymadeeasy.gov.au API
Search Australian energy plans by location and get detailed pricing, terms, and provider information. Compare plan features and availability across different areas to make informed decisions about energy providers.