API

The Live Roads API

Live roadworks, closures, incidents and weather warnings on the motorways and trunk roads of England and Wales, as JSON or GeoJSON. Try it for 5 days with a free trial key; after that, the API is paid.

Attribution is mandatory, on every plan

Trial, Personal, Professional or Enterprise: any app, site or product that uses this API shows “Data: Live Roads” with a visible link to liveroads.co.uk, next to the data. Ready to copy:

Data: <a href="https://liveroads.co.uk">Live Roads</a>

Keep the original sources' credits too, where the response includes them: each record names its source, and the response carries the credit lines the sources ask for.

Getting started

Create a trial key with the form below and add it to the request. Open this in a browser, with your key at the end, and you have data:

https://liveroads.co.uk/api/v1/incidents?road=M25&key=lr_…

It returns JSON. For GeoJSON, ready to drop on a map, add &format=geojson. From code, send the key in the X-API-Key header (or Authorization: Bearer lr_…) rather than in the URL:

curl -H "X-API-Key: lr_…" "https://liveroads.co.uk/api/v1/incidents?nation=wales&type=roadworks&status=active"

Your key

From 14 October 2026 every request needs a key. The key you create here is a trial key: it works for 5 days from its first request, with 120 requests an hour, so you can find out whether the API does what you are building. To carry on after that, choose a paid plan.

We ask for a name, an email and what it is for, for three plain reasons: to tell you when an official source goes quiet or changes; to learn what the API is missing for the people who use it in earnest; and because a key that can be revoked protects everyone from a runaway loop.

Instant, no approval. Works for 5 days from the first request.

GET /api/v1/incidents

Everything the site shows on its map and road pages, from the same live snapshot, refreshed every minute. Every parameter is optional and they combine; lists are comma-separated.

ParameterValuesWhat it does
roadM25, A1(M), a1m, A55One or more road numbers. The same roads as the /road pages.
nationengland, walesWhere the event is. region works as an alias. Scotland is not covered yet.
sourcenational-highways, traffic-wales, meteoalarmThe authority that published it. authority works as an alias.
typeaccident, incident, roadworks, weatherWhat kind of event. Without it, all of them.
statusactive, scheduledHappening now, or planned works that have not started.
closureany, full, lanes, slip, link, layby, partialOnly events that shut something. full is the carriageway itself.
bbox-0.6,51.3,0.3,51.7An area: west, south, east, north, in WGS84 degrees.
limit1 to 2000 (default 500)Newest first. meta.total says how many matched.
formatjson (default), geojsonA list for code, or a FeatureCollection for maps.

Example

A real request and its answer, one record (with limit=1), fetched from the live API on 8 October 2026 at 22:42 UK time:

https://liveroads.co.uk/api/v1/incidents?road=M25&status=active&limit=1&key=lr_…
{
  "attribution": {
    "text": "Data: Live Roads",
    "url": "https://liveroads.co.uk"
  },
  "meta": {
    "count": 1,
    "total": 12,
    "limit": 1,
    "generatedAt": "2026-10-08T21:42:32.577Z",
    "coverage": "Motorways and trunk roads in England and Wales. Local roads and Scotland are not covered.",
    "licence": "Data: Live Roads (liveroads.co.uk). England: contains National Highways information, Powered by National Highways' Transport Data Feeds (licence based on the Open Government Licence). Wales: Traffic Wales. Weather warnings: Met Office via MeteoAlarm (CC BY 4.0). Keep the source credit of each record.",
    "sources": [
      {
        "name": "traffic-wales",
        "label": "Traffic Wales",
        "ok": true,
        "count": 20,
        "newestAt": "2026-10-08T20:43:00.000Z",
        "stale": false
      },
      {
        "name": "meteoalarm",
        "label": "Met Office via MeteoAlarm",
        "ok": true,
        "count": 0,
        "newestAt": null,
        "stale": false
      },
      {
        "name": "national-highways",
        "label": "National Highways: road and lane closures",
        "ok": true,
        "count": 366,
        "newestAt": "2026-10-08T21:18:39.390Z",
        "stale": false
      },
      {
        "name": "nh-signs",
        "label": "National Highways: motorway signs",
        "ok": true,
        "count": 53,
        "newestAt": "2026-10-08T21:37:24.240Z",
        "stale": false
      }
    ]
  },
  "incidents": [
    {
      "id": "nhs-ad7bbe8185b42c8f9de1",
      "type": "accident",
      "severity": "high",
      "status": "active",
      "lat": 51.711088,
      "lon": -0.291336,
      "title": "M25 near J22 to J21A, anticlockwise: Collision slow down",
      "description": "Shown on National Highways signs (M25 anti-clockwise between J22 and J21A): \"COLLISION SLOW DOWN\".",
      "source": "national-highways",
      "sourceUrl": "https://nationalhighways.co.uk/travel-updates/",
      "road": "M25",
      "direction": "anticlockwise",
      "location": "M25 anti-clockwise between J22 and J21A",
      "nation": "england",
      "startedAt": "2026-10-08T21:22:10.100Z",
      "updatedAt": "2026-10-08T21:26:49.490Z",
      "sourceName": "National Highways"
    }
  ]
}

Response fields

FieldWhat it is
attributionThe credit to show, { text, url }. Also in the X-Attribution header.
meta.count / totalRecords in this answer, and how many matched before the limit.
meta.generatedAtWhen the snapshot was taken from the sources.
meta.licenceThe credit lines the sources ask for. Keep them.
meta.sourcesEach feed: whether it answered, how many records, its newest update, and stale when it has gone quiet.
idStable while the source keeps the event.
type, status, severityaccident, incident, roadworks or weather; active or scheduled; info, low, medium, high or critical.
title, descriptionA short title, and the source's own wording.
road, direction, locationRoad number, direction in words, and the junctions where the source gives them.
closureWhat is shut, when something is: full, lanes, slip, link, layby or partial.
overnight, hoursWorks that run overnight only, and their nightly window.
lat, lonWGS84. In GeoJSON, the point geometry instead.
nationengland or wales.
startedAt, endsAt, updatedAtISO 8601, UTC.
source, sourceName, sourceUrlWho published it. Keep this credit wherever the record is shown.

Errors

StatusWhen
400A parameter with a value the API does not know. The body says which and what it accepts.
401No key (from 14 October 2026). Until then a keyless request still answers, with a notice in X-API-Notice and in the body.
402The trial ended (5 days after the first request). Choose a paid plan to carry on.
403The key was revoked. The body says why.
429Too many requests. Wait for the seconds in Retry-After.

Trial keys get X-API-Trial-Ends with the end of the trial. Every answer carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset.

Limits

Counted per key, not per IP address, so an app with many users is not held back by one of them: 120 an hour on the trial, and a daily allowance on the paid plans (below). Until 14 October, requests without a key are held to 20 an hour per address.

The data changes about once a minute, so asking more often than that brings nothing new. CORS is open: you can call the API straight from a browser.

Plans

The plans pay for access to the service: the API itself, its limits and support. They do not sell or license the underlying data, which belongs to the authorities that publish it and keeps their credits.

Trial

Anyone, to find out whether it fits

Free

  • 5 days from the first request
  • Every live event in England and Wales
  • Attribution required

Personal

Personal or small projects with no meaningful revenue

£13a month, inc. VAT

  • About 10,000 requests a day
  • England and Wales
  • Attribution required

Professional

Commercial apps, ad-supported sites, use inside a company

£69a month, inc. VAT

  • About 100,000 requests a day
  • An email when a source goes quiet
  • Attribution required

Enterprise

Fleets, insurers, media, several countries, an SLA

Talk to us

  • Agreed limits and an SLA
  • Several countries, through Roadscore
  • A contract

To move to a paid plan, write to [email protected] with your project's name, your key and what you use the data for. We reply with the plan and an invoice; your key keeps working, without the trial's end date. Enterprise, for fleets, insurers, media or several countries, goes through Roadscore, the same team's data platform.

Terms and attribution

Using the API means agreeing to show where the data comes from. Building a product on it without a key, or without attribution, is not an authorised use.

Attribution is mandatory, on every plan

Trial, Personal, Professional or Enterprise: any app, site or product that uses this API shows “Data: Live Roads” with a visible link to liveroads.co.uk, next to the data. Ready to copy:

Data: <a href="https://liveroads.co.uk">Live Roads</a>

Keep the original sources' credits too, where the response includes them: each record names its source, and the response carries the credit lines the sources ask for.

This is not a formality. The data comes from National Highways, Traffic Wales and the Met Office (through MeteoAlarm), and a reader has a right to know that a closure was published by a highways authority, not guessed by an algorithm. The credit lines they ask for are in meta.licence.

Honest about coverage

This API returns what the official sources published, not what is happening on every road. A road with nothing in the response is not a clear road: it is a road nobody has published anything about. Local roads are not covered, nor is Scotland yet, and England's accidents and queues come from what the motorway signs say.

If you build alerts on this, tell the people who receive them. Do not use it for emergency decisions: in an emergency, call 999. Whether each source is answering right now is in meta.sources.

Publishing data, rather than reading it

This page is for reading the data. If you are a council, an operator or another authority and want your closures on the map and in this API, with your name as the source, see the partners programme. It is free for public bodies.

Contact

Questions, a lost key, higher limits or a plan: [email protected].