Skip to content

Feature

Vector tiles on the same key as your geocoder

geolith cloud serves vector map tiles next to geocoding: GET https://api.geolith.app/v1/tiles/{set}.json returns a TileJSON 3.0.0 document and /v1/tiles/{set}/{z}/{x}/{y}.mvt returns Mapbox Vector Tiles that MapLibre GL JS, OpenLayers and deck.gl render directly. Tile requests use the same API key and monthly quota as search. Today the hosted tile set is a sample basemap named sample; full basemap coverage is planned.

What are vector tiles?

Vector tiles are map data cut into square tiles for each zoom level and sent as geometry with attributes (the Mapbox Vector Tile format) rather than as pictures. The browser draws and styles the map itself, so one tile set can serve any map style. geolith serves them with a TileJSON 3.0.0 description that MapLibre reads directly.

Detail

Two routes

The TileJSON document lists the layers, zoom range and bounds, and its tile URLs already carry your key. Point a MapLibre vector source at it.

  • GET /v1/tiles/{set}.json: TileJSON 3.0.0.
  • GET /v1/tiles/{set}/{z}/{x}/{y}.mvt (or .pbf): one tile.
  • An empty tile answers 204 No Content.
  • Layers follow the Protomaps basemap schema: earth, water, landuse, landcover, roads, buildings, boundaries, places, pois.
MapLibre GL JS
import maplibregl from 'maplibre-gl';

const map = new maplibregl.Map({
  container: 'map',
  style: {
    version: 8,
    sources: {
      geolith: {
        type: 'vector',
        // TileJSON 3.0.0; the tile URLs it returns carry your key
        url: 'https://api.geolith.app/v1/tiles/sample.json?api_key=YOUR_PUBLISHABLE_KEY',
      },
    },
    layers: [
      { id: 'bg', type: 'background', paint: { 'background-color': '#f4f3ee' } },
      { id: 'water', type: 'fill', source: 'geolith', 'source-layer': 'water',
        paint: { 'fill-color': '#9fd3cf' } },
      { id: 'roads', type: 'line', source: 'geolith', 'source-layer': 'roads',
        paint: { 'line-color': '#8a8778', 'line-width': 1 } },
    ],
  },
  center: [11.2543, 43.7672],
  zoom: 13,
});

Detail

Built by geolith

geolith builds PMTiles basemaps from Overture Maps and OpenStreetMap. The same build that writes the .glx geocoding file writes the tiles, so names on the map and names in search come from the same data.

Detail

What is live and what is planned

The tiles API is live and serves the sample tile set. A full worldwide basemap on the hosted API is planned. Until then, guides use the free MapLibre demo style for the base map and geolith for search.

Guides

See it in code

Questions

Vector tiles: questions

Do tile requests count against my quota?
Yes. Each tile request counts once, the same as a geocoding request.
Which map libraries work?
Any library that reads TileJSON and Mapbox Vector Tiles: MapLibre GL JS, MapLibre Native, OpenLayers, deck.gl and Leaflet with a vector tile plugin.
Is there a worldwide basemap?
Not on the hosted API yet. Today the hosted tile set is a sample; a full basemap is planned.

Sources

  1. Mapbox Vector Tile Specification, Mapbox (open specification) (read 2026-10-22)

Geocode your first address in a minute.

100,000 requests a month free. Commercial use with attribution. No card.