A map of the world for your app,
with 3D terrain.
Vector map tiles of the whole world in nine styles, with labels in 41 languages, and terrain for hillshading, contour lines and 3D views. Four of the styles are our own: outdoor, marine, relief and driving. Add one style URL to MapLibre. It works with the key you use for Overpass queries.
- 100'000 map tiles a month free
- 2 million tiles for CHF 9/month
- Servers in the EU
<!-- MapLibre GL JS, then: --> <div id="map"></div> <script type="module"> import * as maplibregl from "…/maplibre-gl.mjs"; new maplibregl.Map({ container: "map", style: "https://api.overpass.ch/v1/YOUR_KEY/maps/styles/light.json", center: [8.54, 47.37], zoom: 13 }); </script>
Maps for hiking, sailing, terrain and driving
Besides the five Protomaps styles, we made four styles for uses where a street map is not enough. The trails and the sea marks come from the live OpenStreetMap data of our Overpass server, so a new mark or a regraded trail shows within a week. Every plan includes every style.

Outdoor
Trails by SAC grade in the Swiss colours, huts, stops, drinking water, peaks with their height and contour lines.

Marine
The sea coloured by depth, depth contours, lighthouses, buoys and beacons in their colours, harbours and ferry routes.

Relief
The land coloured by height, from green lowlands to rock and snow, with hillshading and contour lines.

Driving
Wide, clear roads with motorway numbers, fuel stations, charging stations and car parks.
Pictures: © OpenStreetMap contributors · Protomaps · Copernicus WorldDEM™-90 © DLR, Airbus · GEBCO
Try the styles and the terrain
This map uses the same tiles and styles you get with a key. In 3D, tilt and turn it with the right mouse button, or with two fingers.
One key for the whole map
The whole world
Streets, paths, buildings, places, water, parks and borders from OpenStreetMap, as vector tiles from zoom 0 to 14. Closer in, the map enlarges zoom 14. New data every week.
Nine styles
Outdoor with trails by difficulty, huts, stops, fountains and peak heights; marine with depths, buoys and lights; relief with colours by height; driving with strong roads, fuel and parking. Plus light, dark, white, grayscale and black by Protomaps. Labels come in 41 languages, chosen with ?lang=de.
Terrain and contour lines
Terrain tiles from the Copernicus 90 m data for hillshading and 3D views, and contour lines as vector tiles. Add ?terrain=1 to any style for 3D, or ?hillshade=1 for shading.
Your data on the map
The same key runs Overpass queries and elevation lookups. Draw the results of a query on your own base map, with no second provider.
Keys for websites
A key of the type "Maps only" works for tiles and styles and nothing else, and you can limit it to your websites. Browsers on other websites are refused.
Simple counting
Every tile counts once. Styles, fonts, icons and tiles the browser already has are free. Map tiles have their own allowance and never use up Overpass requests.
Add it to your page
Create a key of the type "Maps only" in your dashboard and enter your website as an allowed referer. Then:
<link rel="stylesheet" href="https://unpkg.com/maplibre-gl@6.13.0/dist/maplibre-gl.css">
<style>#map { height: 480px; }</style>
<div id="map"></div>
<script type="module">
import * as maplibregl from "https://unpkg.com/maplibre-gl@6.13.0/dist/maplibre-gl.mjs";
const map = new maplibregl.Map({
container: "map",
style: "https://api.overpass.ch/v1/YOUR_KEY/maps/styles/light.json?lang=en",
center: [8.54, 47.37], // longitude, latitude
zoom: 13
});
map.addControl(new maplibregl.NavigationControl());
</script>
const map = new maplibregl.Map({
container: "map",
style: "https://api.overpass.ch/v1/YOUR_KEY/maps/styles/light.json?terrain=1",
center: [7.6586, 45.9763], // the Matterhorn
zoom: 12.5,
pitch: 70,
maxPitch: 85
});
map.addControl(new maplibregl.NavigationControl({ visualizePitch: true }));
// the terrain source on its own, for your own style:
// { "type": "raster-dem", "url": "https://api.overpass.ch/v1/YOUR_KEY/maps/terrain.json" }
<!-- Leaflet shows vector maps through MapLibre, with the maplibre-gl-leaflet plugin. It needs the classic (UMD) build of MapLibre, which version 5 still has. --> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"> <link rel="stylesheet" href="https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.css"> <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> <script src="https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js"></script> <script src="https://unpkg.com/@maplibre/maplibre-gl-leaflet@0.1.4/leaflet-maplibre-gl.js"></script> <style>#map { height: 480px; }</style> <div id="map"></div> <script> const map = L.map("map").setView([47.37, 8.54], 13); L.maplibreGL({ style: "https://api.overpass.ch/v1/YOUR_KEY/maps/styles/light.json" }).addTo(map); </script>
import Map from "ol/Map";
import { apply } from "ol-mapbox-style";
const map = new Map({ target: "map" });
apply(map, "https://api.overpass.ch/v1/YOUR_KEY/maps/styles/light.json");
Layer → Add Layer → Add Vector Tile Layer → New → New Generic Connection Name: overpass.ch map URL: https://api.overpass.ch/v1/YOUR_KEY/maps/vector/{z}/{x}/{y}.mvt Max. zoom: 14 Style URL: https://api.overpass.ch/v1/YOUR_KEY/maps/styles/light.json # QGIS sends no referer: use a key without a website restriction.
The endpoints, style options, terrain format and error codes are in the documentation.
Maps plans
Every account includes 100'000 map tiles a month. The Maps plans have more, with every style, terrain and the elevation API. They are a subscription of their own, next to your Overpass plan, and work with the keys you have.
Maps Free
- Map tiles / month100'000
- Map tiles / minute1'200
- Elevation lookups / month1 million
- World map, updated weekly
- Our outdoor, marine, relief and driving styles
- 5 Protomaps styles, labels in 41 languages
- 3D terrain, hillshading, contour lines
- Elevation API included
- Commercial use
- No e-mail support
Maps Small
- Map tiles / month2 million
- Map tiles / minuteUnlimited
- Elevation lookups / month50 million
- World map, updated weekly
- Our outdoor, marine, relief and driving styles
- 5 Protomaps styles, labels in 41 languages
- 3D terrain, hillshading, contour lines
- Elevation API included
- Commercial use
- E-mail support
Maps Medium
- Map tiles / month10 million
- Map tiles / minuteUnlimited
- Elevation lookups / month200 million
- World map, updated weekly
- Our outdoor, marine, relief and driving styles
- 5 Protomaps styles, labels in 41 languages
- 3D terrain, hillshading, contour lines
- Elevation API included
- Commercial use
- Priority e-mail support
Maps Large
- Map tiles / month40 million
- Map tiles / minuteUnlimited
- Elevation lookups / month500 million
- World map, updated weekly
- Our outdoor, marine, relief and driving styles
- 5 Protomaps styles, labels in 41 languages
- 3D terrain, hillshading, contour lines
- Elevation API included
- Commercial use
- Priority support
2 million map tiles a month elsewhere
| Provider | For 2 million map tiles a month | Notes |
|---|---|---|
| overpass.ch Maps Small | CHF 9 or €9 | Vector and terrain tiles, nine styles with outdoor and marine. The elevation API is included. Hosted in the EU. |
| Stadia Maps | about USD 50 | Starter: USD 20 with 1 million credits (one per tile), then USD 0.03 per 1,000. |
| MapTiler | about USD 255 | Flex: USD 30 with 500,000 requests, then USD 0.15 per 1,000. |
| OpenFreeMap | free | No keys and no limits, commercial use allowed. No service guarantee and no support. |
Prices as listed by the providers on 22 October 2026. The free plans of Stadia Maps and MapTiler do not allow commercial use; the free plan of overpass.ch includes 100'000 tiles a month.
What to expect
- The tiles go up to zoom 14, and the map enlarges them for closer views. Streets, paths, parks and buildings stay, but house numbers and most shops and restaurants are missing at street level.
- The map data is updated every week. For data that is minutes old, query it with Overpass and draw it on top.
- Terrain and contour lines come from a 90 m grid. They are good for hills and mountains, and too coarse for small slopes in towns. The sea is flat at 0 m in 3D.
- The sea depths of the marine style come from GEBCO, a grid of about 460 m. They show where the sea is deep or shallow and are not for navigation; use official charts on board.
- The relief and marine styles need MapLibre GL JS 5.6 or later for their colours by height and depth. Outdoor, marine and driving use a second set of icons, which MapLibre supports and some other map libraries do not.
- There are no PNG map images yet. Libraries that cannot draw vector maps need a plugin, as Leaflet does above.
Data and attribution
Map data © OpenStreetMap contributors, available under the Open Database Licence, with Natural Earth. The tile schema and the styles are by Protomaps (BSD and CC0 licences); the icons come from the MIT-licensed Tangrams icon set and the fonts are Noto Sans (SIL Open Font Licence).
The styles show the credits in a corner of the map. Keep them visible: the OpenStreetMap licence requires it.
Trails, stops and sea marks come from OpenStreetMap through our own Overpass server; the sea marks use the seamark:* tags that OpenSeaMap also uses. Sea depths: GEBCO Compilation Group, GEBCO Grid.
Terrain: produced using Copernicus WorldDEM™-90 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved. Neither organisation endorses overpass.ch.
Questions
Is there a free map tile API?
Yes. Every account includes 100'000 map tiles a month, together with Overpass and elevation, and you may use it for a commercial project. For a website with steady traffic, Maps Small costs CHF 9 or €9 a month for 2 million tiles.
Do I need an Overpass plan for the Maps plans?
No. Every account has the free Overpass plan, so you pay only for the Maps plan. With a paid Overpass plan as well, you have two subscriptions with the same payment method and billing address, and your keys get the larger allowance of map tiles and elevation lookups.
Can I use the marine style for navigation?
No. The depths come from a grid of about 460 m and the sea marks from OpenStreetMap, where marks can be missing, old or misplaced. The style is for websites and apps that show the sea, such as marinas, sailing schools, ferries and coastal tourism.
How many tiles does a visit use?
A full-screen map on a laptop loads about 15 to 30 tiles when it opens, and more as people pan and zoom. Larger maps load more. Terrain adds a few tiles. Tiles the browser already has are not counted.
Can I switch from Mapbox GL JS?
MapLibre GL JS started as a fork of Mapbox GL JS, and most code works after replacing mapboxgl with maplibregl and the style URL. Our tiles use the Protomaps schema, so styles made for Mapbox Streets or OpenMapTiles need changes before they fit.
Can I make my own style?
Yes. Load one of ours, change it in Maputnik or in code, and serve the JSON from your own site. The layers and their fields are listed in the TileJSON at /maps/vector.json.
Can I download the tiles for offline use?
The terms of the API do not allow bulk downloads. Protomaps publishes the whole world as a single file that you can host yourself.
What happens when the allowance is used up?
Tiles get HTTP 429 until the next month starts or you upgrade, and we send an e-mail at 80% and at 100%. We never bill overage.
Get your key in under a minute
Free plan, no credit card. The same key works for Overpass, elevation and map tiles.