Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The following pages provide an overview of the OS National Geographic Database (NGD) APIs and how you can access them. They cover the core elements of the design (including data available), technical specifications, and how to get started, amongst other topics.
These pages should be used in conjunction with the more detailed pages within the Data Structure section which are specifically focussed on the different OS NGD themes, collections and feature types.
The APIs are self-documenting and allow you to easily discover what OS NGD data is available before using it. You can explore the various data collections for free to decide what best suits your needs. The data is ready to use in numerous applications (desktop, web, and mobile), enabling you to power your applications with rich, consistent and current information about the real world.
The OS NGD APIs are available via the OS Data Hub.
The following pages provide an overview of how to get started using OS NGD API – Features. They provide step-by-step instructions to get started in the most common GIS software and web mapping libraries.
These pages should be read in conjunction with the more detailed pages within the Data Structure section and the API's Technical Specification.
The following sub-sections provide step-by-step instructions on how to access OS NGD data via OS NGD API – Features in various GIS software packages:
OS NGD API – Features Technical Specification provides an overview of the endpoints available, as well as the parameters that can be used with each endpoint. The Technical Specification is intended to be used by customers who want to integrate with the API. Click into each endpoint to learn more.
The OS NGD API – Features supports a generic filter grammar called Common Query Language (CQL) for specifying enhanced filter criteria to return a subset of features. CQL is written using a familiar text-based syntax, making it more readable and better-suited for creating complex filters.
The following table documents the supported operators:
The following table documents the OS NGD datasets available through the OS NGD API – Features showing the themes, collections and lists the available feature types.
OS NGD themes and collections have been created to group similar geographic entities and data types, making it quicker and easier to identify the data you need. The OGC API - Features standard also references feature collections, and in the context of OS NGD datasets, this is equivalent to feature types.
The following naming convention has been applied to the feature collections: theme-collection-featuretype-version
. Short codes have been used for both the theme and collection to keep the feature collection names manageable and not overly long. An example of the short codes used is below:
bld-fts-buildingline-1
Click on the theme to find out more information about the dataset:
Theme | Collection | Feature Type(s) |
---|---|---|
Find out more about the hierarchy of OS NGD data here.
If you are interested in addressing information, OS Places API provides a detailed view of an address and its lifecycle, giving you direct access to rich address data for geocoding, postcode searching, form-filling and much more.
With OS NGD API – Features, you can filter by attribute, location and / or time to create your own customised data selections. Based on the latest standard, this API can help accelerate your time-to-value by making it easier to build awesome things with our trusted geospatial data. You can use it to reduce your data management overheads, automate your workflows, and innovate at pace.
You can:
Request specific features using location, attribute, and / or time queries.
Interrogate highly detailed feature information.
Freely discover what OS NGD data collections are available.
Explore the OS NGD data schemas and queryables.
Request data in GeoJSON format.
Visualise OS data and apply your own styling.
You can't:
Create a scalable map of Great Britain across zoom levels.
Request more than 100 features in a single transaction.
Access data from the:
OS NGD Address Theme
OS NGD Administrative and Statistical Units Theme
Waterbody Catchment and River Basin District Catchment Feature Types (of the OS NGD Water Features Collection in the OS NGD Water Theme)
Operator Type | Supported Operators |
---|---|
If you are interested in addressing information, provides a detailed view of an address and its lifecycle, giving you direct access to rich address data for geocoding, postcode searching, form-filling and much more.
Comparison
EQUAL TO [ = ]
, LESS THAN [ < ]
, LESS THAN OR EQUAL TO [ <= ]
, GREATER THAN [ > ]
, GREATER THAN OR EQUAL TO [ >= ]
, ISNULL
, LIKE
, IN
, BETWEEN
Logical
AND
, OR
, NOT [ <> ]
Array
AEQUALS
, ACONTAINS
, ACONTAINEDBY
, AOVERLAPS
Spatial
INTERSECTS
Increased data update frequency
You can access OS NGD themes of data which are updated up to daily.
Rich attribution
Access OS NGD data that has been enriched with attribution to ensure that it's straightforward to navigate and query.
New, easier ways to access data
OS NGD API – Features gives you direct, online access to the OS NGD and schemas using the latest OGC API – Features standard.
Choose exactly what data you take
Access the OS NGD feature type you need rather than taking pre-selected OS products and filter only what is important to you.
Accessing OS NGD data with OS NGD API – Features via ArcGIS Online
ArcGIS Online is a web-based platform geographic information system (GIS). ArcGIS Online services are managed by Esri and accessed by a client running on a wide range of options.
The instructions that follow demonstrate how to connect to OS NGD API – Features using ArcGIS Online.
Access to the ArcGIS Online service.
A preloaded base map, for example, .
OS NGD API – Features added to an API project in the OS Data Hub. (See for more information.)
Sign into your ArcGIS Online account.
Click the Map tab to open the map viewer.
In Layers, click Add > Add layer from URL.
In the Add Layer dialog:
URL: Copy the OS NGD API – Features URL without the API Key from your OS Data Hub account and paste it into the text box.
Type: Select OGC feature layer.
Custom parameters:
Select Add custom parameters.
Parameter: Type key in the text box.
Value: Enter your API Key.
Click Next.
Select a layer to add: Select a layer to add to the map and then click Add to map.
The layer will display in the Layers panel and the data will display on the map.
Accessing OS NGD data with OS NGD API – Features via Cadcorp SIS
The Cadcorp Spatial Information System® (Cadcorp SIS®) is an integrated family of geospatial products comprising desktop, web, and developer applications.
Cadcorp SIS Desktop connects directly to the OS Data Hub through dedicated wizards.
Cadcorp SIS (version SIS 9 or later).
A preloaded base map, for example, .
OS NGD API – Features added to an API project in the OS Data Hub. (See for more information.)
These instructions are based on Cadcorp SIS Desktop version 9.1.1668.
In Cadcorp SIS Desktop, open an existing map or create a new one.
In the Home tab, click Add Overlay.
In the Overlay Types dialog, select Ordnance Survey (GB) > OS (GB) Data Hub, and then click Next.
In the OS (GB) Data Hub dialog:
Select OS National Geographic Database (NGD) API - Features.
API Key: Enter your API key.
Premium/Public Sector Plan: Select this option if you have this plan.
Save in the UI settings database (encrypted): Select this option.
Click Next.
In the OS Data Hub NGD API - Features Data Themes and Feature Types dialog:
Well-known ‘recipe’: Select a predefined recipe, if available.
Data Themes: Select your data themes.
Features: If necessary, use the editing tools (on the right) to delete feature types or to change the order in which they display in your SIS Workspace Definition (SWD). By default, all feature types within the selected data themes are available in the right panel.
Local cache: Select this option to store the data temporarily on your machine. If you save and reopen the SWD, the data will still be available as it is fetched from your local cache.
One-off import: Select this option to do a one-off import of the data. If you save and reopen the SWD, the data will not be available and you will need to re-import it. These imports have a larger file size.
Filtering: These settings are used in conjunction and define how much data is required for display. It is recommended that you always set a spatial filter and feature limit.
Spatial: The Intersect with current view extent option limits the download to only selected features within the current window extent. You can also load features within a specific area of interest using the polygon feature to draw your area of interest on the map BEFORE opening the Add Overlay dialog.
Maximum number of features: Limits the number of feature values downloaded to the number set. This limit is applied per feature within any filtered spatial area.
Click Finish.
The selected themes and feature types display in the SWD and map area.
Accessing OS NGD data with OS NGD API – Features via QGIS
QGIS is an open GIS (Geospatial Information System) desktop application that allows you to display, interrogate, visualise and create geospatial information including from geo-centric APIs (for example, a WFS).
The instructions that follow demonstrate how to connect to OS NGD API – Features using QGIS.
QGIS (version 3.12.0 or later).
A preloaded basemap, for example, .
OS NGD API – Features added to an API project in the OS Data Hub. (See for more information.)
These instructions are based on QGIS version 3.22.0.
Open an existing project or create a new one.
Deselect the Render checkbox in the bottom bar, if necessary.
Click (Add WFS Layer icon) in the Manage Layers toolbar on the left. To activate this toolbar, go to View > Toolbars and select Manage Layers Toolbar.
In Data Source Manager | WFS > Server Connections, click New.
In the Create a New WFS Connection dialog, provide the service details:
Name: Provide a name for the connection. You can reuse this connection in the future.
URL: Copy the OS NGD API – Features endpoint address from the OS Data Hub and paste it into this field.
Your API Key is automatically appended to this URL in the key
parameter.
Authentication: Leave these settings at their defaults. You do not need a username or password as authentication is done through your API Key.
Version: Click Detect to identify the version.
Enable feature paging: Select this option, if necessary.
Page size: Enter a maximum page size.
This limits the page size to a maximum number of features. We recommend a setting of about 100
to speed up response times. Larger values may result in a very slow response time.
Other: Leave the other settings at their defaults.
Click OK.
QGIS saves the connection details and lists the new connection in the Server Connections dropdown for future use.
In Data Source Manager | WFS > Server Connections:
Select your new connection in the dropdown, if necessary.
Click Connect.
When you click Connect, a list of features available in OS NGD API – Features populates in the main box.
In Data Source Manager | WFS:
Features: Select the features you want to load. You can select multiple layers using your Ctrl key.
As a best practice, only load features that relate to your current task – not all features. The more features you call, the longer it takes to load them into QGIS. In addition, each feature, regardless of its layer, counts towards your .
Only request features overlapping the view extent: Select this option. This engages the bounding box which is set by your viewing window. This means that only selected features within the viewing window will load (not all features).
Click Add to add the features.
Optionally, click Close to close the dialog.
Select the Render checkbox in the bottom bar on the main UI, and select the checkbox next to each feature you want to display in the Layers panel.
Accessing OS NGD API – Features via Leaflet
is an open-source JavaScript library for displaying interactive maps on the web or mobile. A simple and lightweight library that will enable you to display and visualise location data and build dynamic applications.
OS Maps API and OS NGD API – Features added to an API project in the with an API Key.
A text editor like Visual Studio Code or Notepad to edit and save your HTML and JavaScript files.
Create a new HTML file with a text editor (for example, Notepad, Visual Studio Code).
Add the basic HTML structure to your file with a placeholder <div>
for the map.
To enable access to OS APIs an API Key is required. Inside the <script>
tag, add a variable called apiKey
, replacing 'INSERT_API_KEY_HERE'
with the API Key from your project.
Add a variable called collectionID
, replacing 'INSERT_COLLECTIONID_HERE'
with the collection ID for the desired OS NGD feature type and version (for example, bld-fts-buildingpart-1).
Define the configuration options for the map, defining minZoom
, maxZoom
, center
, zoom
, maxBounds
, attributionControl
.
minZoom
and maxZoom
: Sets the minimum and maximum zoom level for the map. Users will not be able to go beyond these levels.
center
: Sets the initial centre point of the map.
zoom
: Sets the initial zoom level of the map.
maxBounds
: Defines the maximum bounds and restricts panning the map.
style
: Defines the style of the map, configured via a URL pointing at the style specified.
attributionControl
: When set to 'false', it hides the attribution control which displays map credits.
Initialize the map with the id
of the <div>
element and the configuration option defined in mapOptions
.
Using the 'L.tileLayer
' method, specify the basemap layer for OS Maps API, which includes your API Key to load the tiles to your map.
Create a function called fetchFeatures
that fetches the API based on the current map extent (bounding box) by generating a bbox string.
Construct the API request URL to fetch OS NGD data from OS NGD API – Features. The URL includes the collectionId
, bbox
and apiKey
.
Once the features have been returned in JSON, update the source data of the map's layers to display the features.
The map.on('moveend',...)
event handler fetches and updates the features based on the map's current extent.
Features within the viewport extent will load initially (first 100 features) and will continue to load as you pan and zoom across the map.
Congratulations! You've successfully created a map using Leaflet and added an OS NGD layer using OS NGD API – Features in a few steps.
Accessing OS NGD API – Features via OpenLayers
is a free and open-source JavaScript library for displaying interactive maps on the web. It is a powerful tool that can be used to create a wide variety of map-based applications, from simple web maps to complex GIS applications.
OpenLayers is easy to use and can be integrated with a variety of other web development frameworks.
OS Maps API and OS NGD API – Features added to an API project in the with an API Key.
A text editor like Visual Studio Code or Notepad to edit and save your HTML and JavaScript files.
Create a new HTML file with a text editor (for example, Notepad, Visual Studio Code).
Add the basic HTML structure to your file with a placeholder <div>
for the map.
To enable access to OS APIs an API Key is required. Inside the <script>
tag, add a variable called apiKey
, replacing 'INSERT_API_KEY_HERE'
with the API Key from your project.
Add a variable called collectionId
, replacing 'INSERT_COLLECTIONID_HERE'
with the collection ID for the desired OS NGD feature type and version (for example, bld-fts-buildingpart-1).
Create a source for the basemap layer using OS Maps API and initialise the ol.map
class with the applicable map properties – target
, layers
and view
. Add the following code inside the JavaScript block:
The above code creates the main map instance using the OpenLayers library where you can specify various properties:
target
: Defines where the map should be displayed. In this instance, it is set to the id
of the <div>
element.
layers
: An array containing the layers to be added to the map.
view
: Defines the initial view of the main, containing various settings such as projection, extent (the geographic bounds of the map), minimum and maximum zoom levels, centre of the map and the initial zoom level.
Define and initialise the source using the ol.source.Vector
class to make a request to OS NGD API – Features. By utilising the ol.loadingstrategy.bbox
this means that data from OS NGD API – Features will be loaded based on the visible map extent.
To create a separate layer to overlay OS NGD data onto the map, you will need to add the ngdFeatures
layers to the ol.map
object to render both layers on the map.
Features within the viewport extent will load initially (first 100 features) and will continue to load as you pan across the map.
Congratulations! You've successfully created a map using OpenLayers and added an OS NGD layer using OS NGD API – Features in a few steps.
Accessing OS NGD API – Features via MapLibre GL JS
is a free and powerful JavaScript library for displaying interactive maps on the web. It's based on Mapbox GL JS and provides a wide range of features for creating maps with custom styles, markers and interactivity.
OS Maps API and OS NGD API – Features added to an API project in the with an API Key.
A text editor like Visual Studio Code or Notepad to edit and save your HTML and JavaScript files.
Create a new HTML file with a text editor (for example, Notepad, Visual Studio Code).
Add the basic HTML structure to your file with a placeholder <div>
for the map.
To enable access to OS APIs an API Key is required. Inside the <script>
tag, add a variable called apiKey
, replacing 'INSERT_API_KEY_HERE'
with the API Key from your project.
Add a variable called collectionId
, replacing 'INSERT_COLLECTIONID_HERE'
with the collection ID for the desired OS NGD feature type and version (for example, bld-fts-buildingpart-1).
To add the OS Maps API, you will need to define the map style using MapLibre GL JS's format. This specifies the source of map tiles, which will be retrieved from OS Maps API in the 'Light' raster tiles style.
Initialise the map object using the maplibregl.Map
class to configure the basemap layer and define its properties – container
, minZoom
, maxZoom
, maxBounds
, style
, center
and zoom
.
Add navigation controls to the map, excluding the compass button and disabling map rotation.
The above code creates the main map instance using the MapLibre GL JS library where you can specify various properties:
container
: Defines where the map should be displayed. In this instance, it is set to the id
of the <div>
element.
minZoom
and maxZoom
: Sets the minimum and maximum zoom level for the map. Users will not be able to go beyond these levels.
maxBounds
: Defines the maximum bounds and restricts panning the map.
style
: Defines the style of the map, configured via a URL pointing at the style specified.
center
: Sets the initial centre point of the map.
zoom
: Sets the initial zoom level of the map.
Create an empty GeoJSON placeholder to hold the feature objects called by OS NGD API – Features.
Create a function called fetchFeatures
that fetches the API based on the current map extent (bounding box) by generating a bbox string.
Construct the API request URL to fetch OS NGD data from OS NGD API – Features. The URL includes the collectionId
, bbox
and apiKey
.
Once the features have been returned in JSON, update the source data of the map's layers to display the features.
Event listeners are triggered when the map loads and finishes moving (panning or zooming) to load and update features based on the map's updated extent. Inside the map.on('load',...)
event handler, we add styles for various types of features, including polygons, linestrings and points so that any collectionId
specified will render.
The map.on('moveend',...)
event handler will then fetch and update the features based on the map's current extent.
Features within the viewport extent will load initially (first 100 features) and will continue to load as you pan and zoom across the map.
Congratulations! You've successfully created a map using MapLibre GL JS and added an OS NGD layer using OS NGD API – Features in a few steps.
Now you can continue to explore Ordnance Survey's to learn more about advanced features and functionality, such as adding markers, pop-ups, and additional layers.
Now you can continue to explore Ordnance Survey's to learn more about advanced features and functionality, such as adding markers, pop-ups, and additional layers.
Now you can continue to explore Ordnance Survey's to learn more about advanced features and functionality, such as adding markers, pop-ups, and additional layers.
The following sub-sections provide step-by-step instructions on how to access OS NGD data via OS NGD API – Tiles in various GIS software packages:
The following pages provide an overview of how to get started using the OS NGD API – Tiles. They cover the core elements to get started in the most common GIS software and web mapping libraries.
These pages should be used in conjunction with the more detailed pages within the Data Structure section and Technical Specification.
The following sub-sections provide step-by-step instructions on how to access OS NGD data via OS NGD API – Tiles in various web mapping libraries:
Accessing OS NGD API – Tiles via MapLibre GL JS
MapLibre GL JS is a free and powerful JavaScript library for displaying interactive maps on the web. It's based on Mapbox GL JS and provides a wide range of features for creating maps with custom styles, markers and interactivity.
OS NGD API – Tiles added to an API project in the OS Data Hub with an API Key.
A text editor like Visual Studio Code or Notepad to edit and save your HTML and JavaScript files.
Create a new HTML file with a text editor (for example, Notepad, Visual Studio Code).
Add the basic HTML structure to your file with a placeholder <div>
for the map.
To enable access to OS APIs an API Key is required. Inside the <script>
tag, add a variable called apiKey
, replacing 'INSERT_API_KEY_HERE'
with the API Key from your project.
Inside the <script>
tag, add another variable called collectionId
with the collection ID for the OS NGD API – Tiles basemap – ngd-base
.
We need to intercept and customise the style request, adding a tiles
property to provide a correctly formatted URL and ensuring authentication through the apiKey
is enabled to make sure that the correct tiles are requested.
Add the following code inside the JavaScript block:
Initialise the map object using the maplibregl.Map
class to configure the vector tile layer and define its properties – container
, minZoom
, maxZoom
, maxBounds
, style
, center
and zoom
.
Add navigation controls to the map, excluding the compass button and disabling map rotation.
The above code creates the main map instance using the MapLibre GL JS library where you can specify various properties:
container
: Defines where the map should be displayed. In this instance, it is set to the ID
of the <div>
element.
minZoom
and maxZoom
: Sets the minimum and maximum zoom level for the map. Users will not be able to go beyond these levels.
maxBounds
: Defines the maximum bounds and restricts panning the map.
style
: Defines the style of the map, configured via a URL pointing at the default style for the 'collectionId
' defined.
center
: Sets the initial centre point of the map.
zoom
: Sets the initial zoom level of the map.
Congratulations! You've successfully created a vector map using MapLibre GL JS using OS NGD API – Tiles in a few steps.
Now you can continue to explore Ordnance Survey's code examples to learn more about advanced features and functionality, such as adding markers, pop-ups, and additional layers.
Accessing OS NGD API – Tiles via Leaflet
Leaflet is an open-source JavaScript library for displaying interactive maps on the web or mobile. A simple and lightweight library that will enable you to display and visualise location data and build dynamic applications.
OS NGD API – Tiles added to an API project in the OS Data Hub with an API Key.
A text editor like Visual Studio Code or Notepad to edit and save your HTML and JavaScript files.
Create a new HTML file with a text editor (for example, Notepad, Visual Studio Code).
Add the basic HTML structure to your file with a placeholder <div>
for the map.
To enable access to OS APIs an API Key is required. Inside the <script>
tag, add a variable called apiKey
, replacing 'INSERT_API_KEY_HERE'
with the API Key from your project.
Inside the <script>
tag, add another variable called collectionId
with the collection ID for the OS NGD API – Tiles basemap – ngd-base
.
We need to intercept and customise the style request, adding a tiles property to provide a correctly formatted URL and ensure authentication through the apiKey
is enabled to make sure that the correct tiles are requested.
Add the following code inside the JavaScript block:
Initialize the map object using the L.Map
class to configure the vector tile layer and the mapOptions
variable to define its properties – minZoom
, maxZoom
, maxBounds
, center
and zoom
.
The above code creates the main map instance using the Leaflet library where you can specify various properties:
minZoom
and maxZoom
: Sets the minimum and maximum zoom level for the map. Users will not be able to go beyond these levels.
maxBounds
: Defines the maximum bounds and restricts panning the map.
center
: Sets the initial centre point of the map.
zoom
: Sets the initial zoom level of the map.
Congratulations! You've successfully created a vector map using Leaflet using OS NGD API – Tiles in a few steps.
Now you can continue to explore Ordnance Survey's code examples to learn more about advanced features and functionality, such as adding markers, pop-ups, and additional layers.
Accessing OS NGD API – Tiles via OpenLayers
OpenLayers is a free and open-source JavaScript library for displaying interactive maps on the web. It is a powerful tool that can be used to create a wide variety of map-based applications, from simple web maps to complex GIS applications.
OpenLayers is easy to use and can be integrated with a variety of other web development frameworks.
OS NGD API – Tiles added to an API project in the OS Data Hub with an API Key.
A text editor like Visual Studio Code or Notepad to edit and save your HTML and JavaScript files.
Create a new HTML file with a text editor (for example, Notepad, Visual Studio Code).
Add the basic HTML structure to your file with a placeholder <div>
for the map.
To enable access to OS APIs an API Key is required. Inside the <script>
tag, add a variable called apiKey
, replacing 'INSERT_API_KEY_HERE'
with the API Key from your project.
Inside the <script>
tag, add another variable called collectionId
with the collection ID for the OS NGD API – Tiles basemap – ngd-base
.
To correctly render the vector tiles within OpenLayers, you will need to fetch
the defined EPSG:3857 Tile Matrix Set and style definitions from the OS NGD API – Tiles service. The two endpoints provide information about the structure of the vector tiles and how the styles are to be applied.
A promise.all
is used to process the data to ensure that both requests are completed before proceeding.
Based on the fetched Tile Matrix Set data, a tile grid is defined using the ol.tilegrid.TileGrid class. The tile grid provides information about the resolution, origin and tile sizes to handle the vector tiles correctly.
Add the following code inside the JavaScript block:
Define the a new vector tiles layer and source that will be used to fetch vector tiles from OS NGD API – Tiles. The ol.layer.VectorTile
uses a ol.source.OGCVectorTile
source to retrieve tiles from the API.
After creating the vector layer, you will need to use a style function to ensure that the Ordnance Survey styles are applied to each tile. Use the olms.applyStyle
function to retrieve the style sheets available for the basemap.
Initialize the map object using the ol.map
class to configure the vector tile layer and define its properties – target
, layers
and view
.
The above code creates the main map instance using the OpenLayers library where you can specify various properties:
target
: Defines where the map should be displayed. In this instance it is set to the ID
of the <div>
element.
layers
: An array containing the layers to be added to the map.
view
: Defines the initial view of the main, containing various settings such as projection, extent (the geographic bounds of the map), minimum and maximum zoom levels, centre of the map and the initial zoom level.
Congratulations! You've successfully created a vector map using OpenLayers using OS NGD API – Tiles in a few steps.
Now you can continue to explore Ordnance Survey's code examples to learn more about advanced features and functionality, such as adding markers, pop-ups, and additional layers.
OS NGD API – Tiles Technical Specification provides an overview of the endpoints available, as well as the parameters that can be used with each endpoint. The Technical Specification is intended to be used by customers who want to integrate with the API. Click into each endpoint to learn more.
OS NGD API – Tiles offers you a vector tile service powered by the OS NGD. It provides a detailed and customisable basemap that's based on the latest OGC API – Tiles standard to help you create stunning and interactive web maps. It can be used with most web mapping libraries, including OpenLayers, MapLibre GL JS and Leaflet. The major benefit of vector tiles is that they are optimised for use across the internet and are therefore great for building interactive web maps that allow users to zoom, pan, rotate, tilt and more.
You have a choice between using Ordnance Survey styles or creating your own. You can customise the content and style to create a professional-looking map that perfectly meets your needs, matches your branding, and pleases your customers.
OS NGD API – Tiles is available in two projections: British National Grid for Great Britain (GB) data and Web Mercator, a global coordinate system.
You can:
Use it as a basemap in GIS, web or mobile applications.
View the whole of Great Britain in unrivalled detail.
Seamlessly pan, zoom, pitch and tilt the map.
Overlay your own data on the basemap to give geographic context to your data.
Trace over OS NGD (Premium Data) detailed geometries.
Customise the map style and content to create the map you need.
Access maps in different projections: British National Grid and Web Mercator.
You can't:
Retrieve all the detailed attribution from OS NGD data.
Access data from the:
OS NGD Address Theme
OS NGD Routing and Asset Management Information (RAMI) Collection (of the OS NGD Transport Theme)
If you are interested in addressing information, OS Places API provides a detailed view of an address and its lifecycle, giving you direct access to rich address data for geocoding, postcode searching, form-filling and much more.
The following table details the OS NGD datasets that were used to create the OS NGD API – Tiles basemap. The result is a detailed OS basemap that combines OS Open Zoomstack and OS NGD data.
Theme | Collection | Feature Type(s) |
---|---|---|
Find out more about the hierarchy of OS NGD data here.
If you are interested in addressing information, OS Places API provides a detailed view of an address and its lifecycle, giving you direct access to rich address data for geocoding, postcode searching, form-filling and much more.
The following table details the OS NGD datasets that can be used as overlays to the basemap to add additional information:
The following attribution is available as part of OS NGD API – Tiles:
The map features do not contain every OS NGD feature type, nor the complete list of attribution available within the feature types that are included; we have purposefully only selected feature types and a subset of attribution from them that are useful for visualisation as this keeps the tiles lightweight and quick to render.
The inclusion of unique identifiers (IDs), where available, allows you to cross-reference with the full product, for example, with OS NGD API – Features. Find out more about OS NGD Unique identifiers.
Although OS NGD API – Tiles will be updated weekly, the data updates are based on the set currency of the OS NGD collections (for example, the OS NGD Structure Features Collection currency is daily, whereas the OS NGD Water Network Collection currency is monthly).
Accessing OS NGD data with OS NGD API – Tiles via Cadcorp SIS
The Cadcorp Spatial Information System® (Cadcorp SIS®) is an integrated family of geospatial products comprising desktop, web, and developer applications.
Cadcorp SIS Desktop connects directly to the OS Data Hub through dedicated wizards.
Cadcorp SIS (version SIS 9.1 or later).
OS NGD API – Tiles added to an API project in the OS Data Hub. (See for more information.)
These instructions are based on Cadcorp SIS Desktop version 9.1.2109.64.
In Cadcorp SIS Desktop, open an existing map or create a new one.
In the Home tab, click Add Overlay.
In the Overlay Types dialog, select Ordnance Survey (GB) > OS (GB) Data Hub, and then click Next.
In the OS (GB) Data Hub dialog:
Select OS National Geographic Database (NGD) API - Tiles.
API Key: Enter your API key.
Premium / Public Sector Plan: Select this option if you have this plan.
Save in the UI settings database (encrypted): Select this option.
Click Next.
In the OS (GB) Data Hub NGD API - Tiles dialog, select the appropriate layer from the list of available options, and then click Finish.
The selected layer will automatically display in the map area.
Accessing OS NGD data with OS NGD API – Tiles via QGIS
QGIS is an open GIS (Geospatial Information System) desktop application that allows you to display, interrogate, visualise and create geospatial information including from geo-centric APIs (for example, a Vector Tiles Service).
The instructions that follow demonstrate how to connect to OS NGD API – Tiles using QGIS.
QGIS (version 3.22.0 or later).
Open an existing project or create a new one.
Deselect the Render checkbox in the bottom bar, if necessary.
Navigate to Layer > Add Layer > Add Vector Tile Layer...
In Data Source Manager | Vector Tile, click the New button below the drop-down menu and select New Generic Connection...
The Vector Tiles Connection dialog that pops up requires you to input the API information you obtained in the OS Data Hub.
In the Vector Tiles Connection dialog, provide the service details of the API:
Name: Provide a name for the connection. It is good practice to name your connections in a way that makes them instantly recognisable. You can reuse this connection in the future.
URL: Copy the OS NGD API – Tiles endpoint address from the OS Data Hub and paste it into this field.
Your API Key is automatically appended to this URL in the key
parameter.
Min. and Max. Zoom Levels: Set these as follows based on your preferred projection:
Web Mercator (EPSG: 3857): Min Zoom = 6; Max Zoom = 19
British National Grid (BNG: EPSG: 27700): Min Zoom = 0; Max Zoom = 15
Style URL: Input the OS NGD API – Tiles style URL to style the tiles based on the default style for the specified OS NGD collection.
Authentication: Leave these settings at their defaults. You do not need a username or password as authentication is done through your API Key.
Other: Leave all other settings at their defaults.
Click OK.
To retrieve tiles and style them appropriately, you will need two URLs. The URLs have slight variations based on the collection ID and projection.
Here are some example URLs to retrieve the basemap (ngd-base) in Web Mercator (EPSG: 3857):
https://api.os.uk/maps/vector/ngd/ota/v1/collections/ngd-base/styles/3857?key={INSERT_YOUR_API_KEY}
Please note: You will need to replace the /{tileMatrix}/{tileRow}/{tileCol} used in the default 'retrieve tile' URL with /{z}/{y}/{x} to be able to connect to OS NGD API – Tiles.
In Data Source Manager | Vector Tile, click Add and Close. You'll then see the map displayed in the main QGIS UI.
Theme | Collection | Feature Type(s) | Collection ID |
---|---|---|---|
CollectionID | Layer(s) | Available Attribution |
---|---|---|
Collection ID | Update Frequency |
---|---|
To learn more about the available collections in OS NGD API – Tiles, you can view what data is available .
Increased data update frequency
OS NGD API – Tiles is updated weekly ensuring you have access to the latest data as quickly as possible.
Beautifully styled basemap, ready to customise
Customise your maps to perfectly meet your needs. You have a choice between using Ordnance Survey styles or creating your own.
Interactive and flexible web maps
Control every aspect of your map with the flexibility to create dynamic interaction with the map and individual features.
Boundary High Water Mark, Ceremonial County, Country, Devolved Parliament Constituency, Devolved Parliament Electoral Region, Electoral Division, GLA Assembly Constituency, Historic County, Historic European Region, Lower Tier Local Authority, Parish Or Community, Polling District, Region, Regional Authority, Upper Tier Local Authority, Ward, Westminster Constituency
asu-bdy
trn-ntwk-railway
wtr-ctch
ngd-base
All
osid, description, name1_text (only applicable to the Named Point, Site and Water Link Set layers), designatedname1_text (only applicable to the Road layer), versionavailablefromdate
asu-bdy
All
osid, description, name1_text (only applicable to the Country layer), name2_text,
pollingdistrictid (only applicable to the Polling District layer), versionavailablefromdate
trn-ntwk-railway
osid, description, railwayuse, operationalstatus, physicallevel, name1_text, versionavailablefromdate
osid, description, versionavailablefromdate
osid,
name1_text,
name2_text,
versionavailablefromdate
wtr-ctch
osid, riverbasindistrictname, versionavailablefromdate
osid, waterbodyname_text, waterbodycategory, versionavailablefromdate
ngd-base
Weekly
asu-bdy
Biannually
trn-ntwk-railway
Monthly
wtr-ctch
Updated as and when updates are received from the authoritative bodies
Ordnance Survey National Geographic Database API – Features conformance page.
A known collection ID.
"bld-fts-building-1"
Schema for an Ordnance Survey National Geographic Database feature collection.
Ordnance Survey National Geographic Database API – Features landing page.
Get a list of all the available OS NGD feature collections
All Ordnance Survey National Geographic Database feature collections.
A known collection ID.
"bld-fts-building-1"
A feature ID which is the identifier(id) for the feature.
"11111111-1111-1111-1111-111111111111"
The coordinate reference system of the response geometries. It must be a coordinate reference system supported by the collection. Default is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84).
A single feature in the feature collection.
A known collection ID.
"bld-fts-building-1"
The optional bbox parameter specifies a supported bounding box. Only features that have a geometry that intersects the bounding box are selected. The bounding box is provided as four comma-separated numbers: Lower left corner, coordinate axis 1 (e.g. min x axis) Lower left corner, coordinate axis 2 (e.g. min y axis) Upper right corner, coordinate axis 1 (e.g. max x axis) Upper right corner, coordinate axis 2 (e.g. max y axis)The default coordinate reference system of the values is WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in the parameter bbox-crs
.
The coordinate reference system of the bbox
parameter. It must be a 2D coordinate reference system supported by the collection. Default is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84).
The coordinate reference system of the response geometries. It must be a coordinate reference system supported by the collection. Default is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84).
Either a local date, a date-time with UTC time zone (Z) or an open or closed interval. Open ranges in time intervals at the start or end are supported using a double-dot (..) or an empty string for the start/end. Date and time expressions adhere to RFC 3339. Examples:A date-time: '2021-12-12T23:20:50Z'A closed interval: '2021-12-12T00:00:00Z/2021-12-18T12:31:12Z'Open intervals: '2021-12-12T00:00:00Z/..' or '../2021-12-18T12:31:12Z'An interval until now: '2018-02-12T00:00:00Z/..' or '2018-02-12T00:00:00Z/'Selects features that have a temporal property that intersects the value of the parameter.
"2018-02-12T00:00:00Z/.."
The optional limit parameter limits the number of items that are presented in the response document. Minimum = 1. Maximum = 100. Default = 100.
The optional offset parameter skips past the specified number of features in the collection. Minimum = 0. Default = 0.
The optional filter parameter is a filter expression in CQL format which is applied when retrieving resources to determine which resources are included in a result set.
Specify which of the supported CRSs to use to encode geometric values in a filter expression. It must be a 2D coordinate reference system supported by the collection. Default is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84).
The optional filter-lang parameter is the specific language used for the filter parameter. Default = cql-text
A list of features in a feature collection.
Get information about an OS NGD feature collection
A known collection ID.
"bld-fts-building-1"
A single Ordnance Survey National Geographic Database feature collection.
A known collection ID.
"bld-fts-building-1"
A list of queryable attributes and their types for this feature collection.
Local identifier of a collection
An identifier representing a specific style.
OK
Local identifier of a collection
An identifier representing a specific style.
Styling resourece base name.
"sprites"
OK
The URIs of all conformance classes supported by the server
Identifier selecting one of the scales defined in the TileMatrixSet and representing the scaleDenominator the tile.
"15"
Row index of the tile on the selected TileMatrix.
11179
Column index of the tile on the selected TileMatrix.
16558
Local identifier of a collection
A vector tile returned as a response.
Identifier selecting one of the scales defined in the TileMatrixSet and representing the scaleDenominator the tile.
"15"
Row index of the tile on the selected TileMatrix.
11179
Column index of the tile on the selected TileMatrix.
16558
Local identifier of a collection
Identifier for a supported TileMatrixSet
A vector tile returned as a response.
The landing page provides links to the API definition (link relation service-desc
, in this case path /api
), to the Conformance declaration (path /conformance
, link relation conformance
), and to the Collections of geospatial data (path /collections
, link relation data
).
While a title is not required, implementors are strongly advised to include one.
"OS NGD API"
"Ordnance Survey National Geographic Database API."
The attribution
should be short and intended for presentation to a user, for example, in a corner of a map. Parts of the text can be links to other resources if additional information is needed. The string can include HTML markup.
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
List of tile matrix sets (tiling schemes).
Optional local tile matrix set identifier, e.g. for use as unspecified {tileMatrixSetId}
parameter. Implementation of 'identifier'
Title of this tile matrix set, normally used for display to a human
Reference to an official source for this tileMatrixSet
Reference to one coordinate reference system (CRS)
Links to related resources. A 'self' link to the tile matrix set definition is required.
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
Local identifier of a collection
List of available styles.
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
Local identifier of a collection
List of available tilesets.
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
identifier of the tile matrix set
"3857"
A title for this tileset
Type of data
Reference to one coordinate reference system (CRS)
Reference to a Tile Matrix Set on an offical source for Tile Matrix Sets such as the OGC NA definition server (http://www.opengis.net/def/tms/). Required if the tile matrix set is registered on an open official source.
Links to related resources. A 'self' link to the tileset as well as a 'http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme' link to a definition of the TileMatrixSet are required.
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
The collections of (mostly geospatial) data available from this API. The dataset contains one or more collections. This resource provides information about and access to the collections. The response contains the list of collections. Each collection is accessible via one or more OGC API set of specifications, for which a link to relevant accessible resources, e.g. /collections/{collectionId}/(items, coverage, map, tiles...) is provided, with the corresponding relation type, as well as key information about the collection. This information includes:
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
identifier of the collection used, for example, in URIs
"buildingpart"
human readable title of the collection
"Building Part"
a description of the data in the collection
"Polygon feature representing a building."
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
The extent module only addresses spatial and temporal extents. This module extends extent by specifying how intervals and crs properties can be used to specify additional geometries.
The spatial extent of the data in the collection.
One or more bounding boxes that describe the spatial extent of the dataset. In the Core only a single bounding box is supported.
Extensions may support additional areas. The first bounding box describes the overall spatial extent of the data. All subsequent bounding boxes describe more precise bounding boxes, e.g., to identify clusters of data. Clients only interested in the overall spatial extent will only need to access the first item in each array.
Coordinate reference system of the coordinates in the spatial extent
(property bbox
). The default reference system is WGS 84 longitude/latitude.
In the Core the only other supported coordinate reference system is
WGS 84 longitude/latitude/ellipsoidal height for coordinates with height.
Extensions may support additional coordinate reference systems and add
additional enum values.
Local identifier of a collection
Information about a particular collection of (mostly geospatial) data available from this API. The collection is accessible via one or more OGC API set of specifications, for which a link to relevant accessible resources, e.g. /collections/{collectionId}/(items, coverage, map, tiles...) is contained in the response, with the corresponding relation type, as well as key information about the collection. This information includes:
identifier of the collection used, for example, in URIs
"buildingpart"
human readable title of the collection
"Building Part"
a description of the data in the collection
"Polygon feature representing a building."
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"
The extent module only addresses spatial and temporal extents. This module extends extent by specifying how intervals and crs properties can be used to specify additional geometries.
The spatial extent of the data in the collection.
One or more bounding boxes that describe the spatial extent of the dataset. In the Core only a single bounding box is supported.
Extensions may support additional areas. The first bounding box describes the overall spatial extent of the data. All subsequent bounding boxes describe more precise bounding boxes, e.g., to identify clusters of data. Clients only interested in the overall spatial extent will only need to access the first item in each array.
Coordinate reference system of the coordinates in the spatial extent
(property bbox
). The default reference system is WGS 84 longitude/latitude.
In the Core the only other supported coordinate reference system is
WGS 84 longitude/latitude/ellipsoidal height for coordinates with height.
Extensions may support additional coordinate reference systems and add
additional enum values.
Identifier for a supported TileMatrixSet
tile matrix set
Title of this tile matrix set, normally used for display to a human
Tile matrix set identifier. Implementation of 'identifier'
Reference to an official source for this tileMatrixSet
Reference to one coordinate reference system (CRS)
Reference to a well-known scale set
Describes scale levels and its tile matrices
Identifier selecting one of the scales defined in the TileMatrixSet and representing the scaleDenominator the tile. Implementation of 'identifier'
Scale denominator of this tile matrix
Cell size of this tile matrix
The corner of the tile matrix (topLeft or bottomLeft) used as the origin for numbering tile rows and columns. This corner is also a corner of the (0, 0) tile.
Precise position in CRS coordinates of the corner of origin (e.g. the top-left corner) for this tile matrix. This position is also a corner of the (0, 0) tile. In previous version, this was 'topLeftCorner' and 'cornerOfOrigin' did not exist.
Width of each tile of this tile matrix in pixels
Height of each tile of this tile matrix in pixels
Width of the matrix (number of tiles in width)
Height of the matrix (number of tiles in height)
Local identifier of a collection
Identifier for a supported TileMatrixSet
Description of the tileset
identifier of the tile matrix set
"3857"
A title for this tileset
Type of data
Reference to one coordinate reference system (CRS)
Reference to a Tile Matrix Set on an offical source for Tile Matrix Sets such as the OGC NA definition server (http://www.opengis.net/def/tms/). Required if the tile matrix set is registered on an open official source.
Links to related resources. A 'self' link to the tileset as well as a 'http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme' link to a definition of the TileMatrixSet are required.
Supplies the URI to a remote resource (or resource fragment).
"http://data.example.com/buildingpart/123"
The type or semantics of the relation.
"alternate"
A hint indicating what the media type of the result of dereferencing the link should be.
"application/geo+json"
This flag set to true if the link is a URL template.
A base path to retrieve semantic information about the variables used in URL template.
"/ogcapi/vars/"
A hint indicating what the language of the result of dereferencing the link should be.
"en"
Used to label the destination of a link such that it can be used as a human-readable identifier.
"Building Part"