Vepler logo
Heritage & Designations API

The UK's protected places, reconciled.

Listed buildings, scheduled monuments, parks and gardens, battlefields, wrecks and World Heritage Sites, from all four national registers, served as map-ready geometry with each custodian's licence and attribution on every record. We keep it current with the registers; you just call it.

Read the Docs
Pixel-art plate of Whitby Abbey ruins against an open sky
Whitby AbbeyScheduled Monument
GET /v1/heritage?point=54.4886,-0.6075&radius=250 → 4 designations

4

National custodians

7

Designation registers

1

Schema, stable ids

OGL

Open Government Licence

The reconciliation

Four registers. One record shape.

Historic England, Historic Environment Scotland, Cadw and the Department for Communities each publish their own register, in their own format, with their own grading system, coordinate reference and update cycle. We reconcile all four into one schema, give every designation a stable identifier, and track changes as the custodians revise their registers.

Historic England

England · EPSG:27700

Grade III*II

Historic Environment Scotland

Scotland · EPSG:27700

Category ABC

Cadw

Wales · EPSG:27700

Grade III*II

Department for Communities

Northern Ireland · EPSG:29903

Grade AB+B1B2
One schemaAll four nations
id           stable across register revisions
grade        the nation's own, never translated
geometry     EPSG:4326, reprojected from the grids
attribution  the custodian, on every record

Grades are never translated. A Scottish Category B stays a Category B, because presenting it as an English Grade II would misstate the law that applies to the building.

The alternative

The pipeline you don't have to build.

Without the API, heritage data is a project. Four registers on four portals, in four formats. Downloads that start going stale the day you fetch them. Reprojection from two national grids. Polygons that arrive broken and need repair. Then Historic England amends the register on a Thursday, and your copy is quietly wrong.

What you'd build

HE · EnglandHES · ScotlandCadw · WalesDfC · N. Ireland

fetch

Four registers from four custodians, each on its own portal, in its own format.

reproject

British National Grid and Irish Grid into WGS84, without moving a wall.

repair

Polygons that arrive self-intersecting and break spatial queries.

reconcile

Four grading systems kept distinct, duplicate entries resolved.

watch

Listings, delistings and amendments, every cycle, forever.

host

The database, the spatial index and the uptime.

…every cycle, forever. Or:

What you call

We run that pipeline so you don't have to. Ingest, reconciliation, geometry repair and serving all happen on our infrastructure. You call one endpoint, and the stale-copy problem is ours.

One request
GET /v1/heritage?point=55.8562,-4.2467&radius=250

→ 200 OK · 14 designations

geometry      EPSG:4326, repaired, valid
grades        each nation's own
attribution   inline, the custodian named
provenance    snapshot and source dates, on every response

Everything on the left, already done.

This is infrastructure, not a download. We run the pipeline; you build the product.

The record

The record says what it knows.

Every designation carries the same fields: a stable identifier, its nation's own grade, geometry served as EPSG:4326 and reprojected from the national grids, and the custodian's attribution. Where a recorded date is only precise to the year, the record says so rather than inventing a day.

Pixel-art plate of a curved Georgian terrace in Bath
The Circus, Bath Grade I Listed
GET /v1/heritage/vhe_des_01J8QNXK
 
{
"id": "vhe_des_01J8QNXK",
"type": "listed_building",
"name": "The Circus",
"jurisdiction": "england",
"grade": "Grade I",
"custodian": "Historic England",
"designated": "1950",
"date_precision": "year",
"statutory": true,
"geometry": {
"type": "Point",
"coordinates": [-2.3629, 51.3868]
},
"attribution": "Contains Historic England data. OGL v3.0.",
"provenance": {
"snapshotId": "heritage-20260618-01",
"sources": [{
"custodian": "Historic England",
"releaseDate": "2026-06-11",
"fetchedAt": "2026-06-13T03:11:08Z"
}]
}
}

The cycle

When the register moves, the API moves.

Registers are living documents. Buildings are listed and delisted every week, boundaries are redrawn, at-risk entries come and go. A file you downloaded in the spring knows none of this.

The register wireJun 2026
Thu11
Fri12
Sat13
Sun14
Mon15
Tue16
Wed17
Thu18

2026-06-11 · register release

Historic England amends a list entry

vhe_des_01J8QNXK · boundary redrawn

2026-06-13 · ingested

fetched 03:11:08Z · reconciled · geometry repaired

re-served under the same id vhe_des_01J8QNXK

2026-06-18 · your next call

"id": "vhe_des_01J8QNXK"

"snapshotId": "heritage-20260618-01"

"releaseDate": "2026-06-11"

"fetchedAt": "2026-06-13T03:11:08Z"

You never host a copy, so you never host a stale one.

The datasets

Every designation, on its own page.

Coverage follows what the custodians publish, so the data is as current as the registers themselves. Each designation type has its own page with coverage, sources and schema.

The API

You already know how to query it.

Heritage answers the same location queries that already return planning, environmental and title data. Point, radius, bounding box or polygon, or a single designation by its identifier. One key, one schema, national scale.

One call returns every designation that touches a point, with the custodian's attribution inline.

Query by point
GET /v1/heritage?point=55.8562,-4.2467

{
  "count": 2,
  "results": [
    {
      "id": "vhe_des_01J8QNXK",
      "type": "listed_building",
      "grade": "Category B",
      "custodian": "Historic Environment Scotland"
    },
    {
      "id": "vhe_des_01J2M4TP",
      "type": "conservation_area",
      "statutory": true,
      "custodian": "Glasgow City Council"
    }
  ]
}

The use cases

Built for what you're building.

One API, four jobs. Each of these is a question the API answers in one request.

Site appraisal

What's protected on and around this site?

Send the red line and get every designation that touches it, each with its grade, geometry and custodian record. A constraint layer without a GIS team.

GET /v1/heritage?polygon=...

Property reports

Is this building listed, and at what grade?

A point query returns the listing, the nation's own grade and attribution ready to print. It drops straight into a report or a conveyancing pack.

GET /v1/heritage?point=51.5074,-0.1278

Maps in products

Show every designation in the viewport.

Bounding-box queries return map-ready geometry with the custodian's licence and attribution served on every record.

GET /v1/heritage?bbox=-0.16,51.49,-0.10,51.52

Councils and custodians

We already publish this. Why run a server too?

Publishing through the standard routes is the whole job. The register arrives here hosted, versioned and queryable, by the teams that published it too. No GIS server to procure, no API to run.

One register, served at /v1/heritage

Every week an engineer spends nursing a shapefile pipeline is a week they are not building your product.

The guarantees

Answers you can defend.

Licence

Open Government Licence sources, with each record carrying its register's licence terms inline.

Attribution

The custodian is named on every record, so attribution is never guesswork.

Provenance

Every response names its snapshot, the custodian's release date and the moment we ingested it.

Stable identifiers

Ids survive register revisions, so the references you store keep working.

Frequently asked questions

Ready to build on
something you can trust?

View Docs