Rear extension adjacent to Grade II listed building
Oxford · 22/09876/FUL
“…heritage impact was contested by the Conservation Officer due to harm to the listed building.”
Every planning authority, every application, as far back as each council's record goes. We read the documents, link the people, normalise the statuses and extract the conditions, then keep it all current with every portal.

The intelligence layer
A planning application arrives as PDFs and portal fields. We read it five ways: the documents, the people, the type, the status and the conditions. Each reading is served as structured fields you can query, not prose you have to parse.
What it emits
GET /v1/planning/applications/{id}/documents
→ Officer Delegated Report.pdf · 28 pages
recommendation approve, subject to conditions
objections 3 · heritage impact contested
policies_cited NPPF ¶11 · Local Plan H3
risks flood zone 2 · noise amenityStructured fields, not prose.
Every extracted field links back to its source document and page, so your users can check the original.
The coverage
Every planning authority in the country, each with its own portal, its own labels and its own way of going down for maintenance. We watch them all, adapt when they change, and keep serving while they wobble.
Oxford
Oxfordshire
Camden
London
Bristol
South West
York
North Yorkshire
Norwich
Norfolk
Brighton & Hove
East Sussex
Cornwall
South West
Milton Keynes
Buckinghamshire
Westminster
London
Durham
North East
Cardiff
Wales
Glasgow
Scotland
…and all the rest
Every authority
The policy graph
Trace the line from the national framework, through each council's local plan, to the applications it decided. Built for policy teams, appeal preparation and planning risk.
National Planning Policy Framework
¶11 · presumption in favour of sustainable development
Semantic search
Search officer reports, decision notices and committee minutes by meaning, not keyword. Every match carries a relevance score and quotes the exact passage, so the answer arrives with its evidence.
Rear extension adjacent to Grade II listed building
Oxford · 22/09876/FUL
“…heritage impact was contested by the Conservation Officer due to harm to the listed building.”
Roof terrace within conservation area near Grade II listed building
Camden · 23/04789/FUL
“Members considered that the proposal would cause unacceptable heritage impact to the adjacent listed building and refused permission.”
Two-storey side extension beside Grade II listed building
Leeds · 22/03147/HSE
“The Conservation Officer initially contested the heritage impact, but revisions reduced harm to an acceptable level.”
The same search ships as an endpoint, so your users can ask their own questions with scores and sources.
The record
Every application arrives in its council's own dialect and leaves in one schema. The raw label is preserved next to the normalised value, and where a mapping involved judgement, the record carries a confidence score instead of pretending certainty.
The cycle
Applications move. Documents arrive, statuses change, decisions land, conditions discharge. A scrape you ran in the spring knows none of this.
2026-06-11 · portal release
Oxford City Council publishes the decision notice
24/01892/FUL · decision issued
2026-06-12 · ingested
fetched 03:12:09Z · documents read · status normalised
conditions extracted · same reference 24/01892/FUL
2026-06-13 · your next call
"reference": "24/01892/FUL"
"status": "approved"
"decisionDate": "2026-06-11"
"fetchedAt": "2026-06-12T03:12:09Z"
You never run a scraper, so you never nurse a broken one.
Try it
One search opens the whole record: the overview, the documents, the people, the policies it engages and the conditions it carries. The application below is a worked example, shaped the way the API returns it.
12 High Street, Oxford
The use cases
One API, four jobs. Each of these is a question the API answers in one request.
Property & conveyancing
Every application at a property and around it: the extensions, the refusals, the conditions still attached. The full history in one call, with the documents linked.
GET /v1/planning/applications?point=51.7519,-1.2445&radius=100
Developers & land teams
Approval rates, decision times and committee outcomes by application type, drawn from the decisions themselves. Evidence for a pre-app, not anecdote.
GET /v1/planning/applications?council=oxford&type=major
Policy teams & appeals
Trace a local-plan policy to the applications that cited it and how each one was decided, with the officer's reasoning quoted from the report.
Policy graph · every decision keeps its policy citations
Risk & portfolio monitoring
New applications within a radius of any holding, watched for you: the neighbouring development, the change of use, the infrastructure scheme you'd rather hear about now.
GET /v1/planning/applications?point=…&radius=500&since=…
Every week an engineer spends nursing a portal scraper is a week they are not building your product.
The guarantees
Source-linked
Every extracted fact cites its document and page, so the original is always one click away.
Confidence, stated
Normalised mappings carry a score, and the council's raw wording stays on the record beside them.
Freshness
Every portal watched, and every record carries the moment it was fetched. Freshness you can check, not take on trust.
Stable identifiers
Ids survive portal migrations and re-scrapes, so the references you store keep working.