BYTETOOLS

Urban Observatory (Newcastle) API

Free Newcastle Urban Observatory API with no key: hundreds of live building and city sensors streaming air quality, climate, occupancy and energy readings. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Urban Observatory (Newcastle) API?

The Newcastle Urban Observatory runs the UK's largest set of publicly available real-time urban sensor data, exposed through a free API needing no key. It covers hundreds of entities — building floors, streets, weather stations — each carrying multiple metric feeds such as air quality, temperature, occupancy and energy use.

The data model here is three levels deep and worth understanding before you write any code. An `entity` is a place — "Urban Sciences Building: Floor 1" — carrying a `meta` object describing it and an array of `feed` objects. Each feed is one metric being measured at that place, identified by a `metric` string such as `BMSTimeSwitch`, with its own hardware, technology and provider attached. Readings hang off feeds, not entities, so a query that stops at the entity level returns structure but no numbers.

The `provider` block on every feed is the part that makes this credible for research use: it names the organisation, whether it is private sector, and carries contact details, so you can trace any reading back to whoever installed and maintains the sensor. Pagination is straightforward — 616 entities across 62 pages of 10 at the time of testing — but `position` is frequently an empty array for indoor sensors, since a room inside a building has no meaningful single coordinate. Do not assume every entity can be mapped.

Quick facts

Base URL
https://api.usb.urbanobservatory.ac.uk/api/v2.0a
Authentication
No API key or registration. The Observatory is a Newcastle University research facility publishing its data openly.
Rate limit
No published limit. This is university research infrastructure — poll sensibly and cache the entity list, which changes rarely.
Pricing
Free. Data is published for research and public use; cite the Urban Observatory when publishing results.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Urban Observatory (Newcastle) API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. List Urban Observatory sensor entities

GET https://api.usb.urbanobservatory.ac.uk/api/v2.0a/sensors/entity?limit=1

curl
curl 'https://api.usb.urbanobservatory.ac.uk/api/v2.0a/sensors/entity?limit=1'
JavaScript (fetch)
const res = await fetch("https://api.usb.urbanobservatory.ac.uk/api/v2.0a/sensors/entity?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.usb.urbanobservatory.ac.uk/api/v2.0a/sensors/entity?limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "pagination": {
    "pageNumber": 1,
    "pageSize": 10,
    "pageCount": 62,
    "total": 616
  },
  "items": [
    {
      "entityId": "970d26c6-37c3-49e4-b2f8-00db042ac3eb",
      "name": "Urban Sciences Building: Floor 1",
      "meta": {
        "building": "Urban Sciences Building",
        "buildingFloor": "1"
      },
      "position": [],
      "feed": [
        {
          "feedId": "bdefbeb4-4a16-4647-97d4-4d3ce3083005",
          "metric": "BMSTimeSwitch",
          "hardwareId": null,
          "meta": {},
          "hardware": null,
          "technology": null,
          "provider": {
            "providerId": "d8bdbef0-d499-448c-9106-ac9916fd7ee9",
            "licence": {
              "licenceId": "124d6e24-62b2-40cc-b85d-69cc0fa9471a",
              "name": "Urban Observatory: Open data",
              "url": "http://www.urbanobservatory.ac.uk/",
              "description": {
                "open": true
              }
            },
            "contact": {
              "contactId": "19c2aabb-33d0-47f1-a4f5-3fbfe3c7bcf0",
              "name": "Urban Observatory",
              "email": "urbanobservatory@ncl.ac.uk",
              "phone": "0191 208 8599"
            },
            "organisation": {
              "organisationId": "2567c616-43f3-4b6b-930b-126ba9ad51c8",
              "name": "Urban Observatory",
              "url": "http://www.urbanobservatory.ac.uk/",
              "privateSector": false
            }
          },
          "brokerage": [
            {
              "brokerageId": "22feca2b-ded8-476e-92df-a325b923ee55",

Parameters

ParameterTypeRequiredDescription
limitqueryOptionalEntities per page. The default page size is 10. 1
pagequeryOptionalPage number; `pagination.pageCount` tells you the maximum. 2
/sensors/entitypathOptionalThe entity list — places carrying sensor feeds. /sensors/entity
/sensors/entity/{entityId}pathOptionalOne entity with its full feed list. /sensors/entity/970d26c6-...
/sensors/feed/{feedId}/timeseriespathOptionalHistoric readings for one feed. /sensors/feed/bdefbeb4-.../timeseries

Response fields

paginationobject
`pageNumber`, `pageSize`, `pageCount` and `total` — 616 entities over 62 pages when tested.
itemsarray
The entities.
items[].entityIdstring
UUID for the place. Use it to fetch full feed detail.
items[].namestring
Human name such as `Urban Sciences Building: Floor 1`.
items[].metaobject
Descriptive attributes — `building`, `buildingFloor` and similar, varying by entity type.
items[].positionarray
Coordinates, frequently empty for indoor sensors that have no single meaningful point.
items[].feedarray
The metrics measured at this entity. Readings hang off feeds, not entities.
feed[].feedIdstring
UUID for the individual metric stream — the key for time series queries.
feed[].metricstring
What is being measured, for example `BMSTimeSwitch` or an air quality parameter.
feed[].providerobject
Operating organisation with `name`, `url`, a `privateSector` flag and contact details.

What you can build with the Urban Observatory (Newcastle) API

  • Plot live air quality readings across Newcastle
  • Study building occupancy and energy patterns from real sensors
  • Feed a smart city dashboard with genuine live urban data
  • Correlate traffic, weather and pollution measurements
  • Teach IoT and time series analysis with real-world data

Common errors and how to fix them

Entities returned but no readings

Readings hang off feeds, not entities.

Fix: Take `feedId` from the entity's `feed` array and query the timeseries endpoint for that feed.

Cannot map an entity

`position` is empty for indoor sensors.

Fix: Check the array is non-empty before mapping, and fall back to the `meta.building` value for a label.

Only 10 items returned

That is the default page size.

Fix: Set `limit` and page using `pagination.pageCount`, which reports the true number of pages.

Timeouts on broad queries

It is research infrastructure, not a commercial CDN.

Fix: Cache the entity list, request specific feeds rather than everything, and back off on failure.

Urban Observatory (Newcastle) API — frequently asked questions

Is the Urban Observatory API free?

Yes, no key and no registration. It is a Newcastle University research facility that publishes its sensor data openly, and asks only that you cite it in published work.

What is the difference between an entity and a feed?

An entity is a place, such as a building floor or a street site. A feed is one metric measured at that place. Readings belong to feeds, so you always drill from entity to feed before requesting numbers.

How much data is there?

616 entities at the time of testing, each carrying several feeds, which makes it the largest publicly available set of real-time urban sensor data in the UK. Historic time series are available per feed.

Why do some sensors have no coordinates?

Indoor sensors — a room or a floor within a building — have no single meaningful latitude and longitude, so `position` comes back empty. Use the `meta` object, which names the building and floor, for those.

Tools that pair with this API

Urban Observatory (Newcastle) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.