TileJSON Tileset Metadata Extractor avatar

TileJSON Tileset Metadata Extractor

Pricing

from $0.35 / 1,000 records

Go to Apify Store
TileJSON Tileset Metadata Extractor

TileJSON Tileset Metadata Extractor

Point at ANY TileJSON 3.0 tileset metadata URL (OpenFreeMap, VersaTiles, MapTiler, Stadia, tileserver-gl, Tippecanoe, PMTiles) and extract structured metadata: one row per vector layer (id, fields, zoom) plus bounds, center, attribution, scheme, tile URLs. Raster tilesets emit a summary row.

Pricing

from $0.35 / 1,000 records

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Point at any TileJSON 3.0 tileset metadata URL and get its structure as clean, structured rows — one row per vector layer, or a single tileset summary. Works with every conforming map-tile server: OpenFreeMap, VersaTiles, MapTiler, Stadia Maps, tileserver-gl, Tippecanoe output, PMTiles gateways, planetiler builds, and any custom tiles.json.

No per-host scraper, no map rendering — just the metadata document, parsed and normalized.

What it does

Every map-tile server publishes a TileJSON 3.0 document (a tiles.json / tileset-metadata endpoint) describing its tileset: the tiles[] URL templates, the vector_layers[] and their field schemas, geographic bounds, center, minzoom/maxzoom, attribution, scheme, and more. This Actor fetches that document and flattens it.

Input

FieldRequiredDescription
tilesetUrlAny TileJSON 3.0 metadata URL. Redirects are followed; relative tile-URL templates are resolved to absolute.
modelayers (default) — one row per vector layer; summary — one tileset-summary row.
userAgentOptional User-Agent override.
timeoutSecsPer-request timeout (default 60).

Example

{
"tilesetUrl": "https://tiles.openfreemap.org/planet",
"mode": "layers"
}

Modes

  • layers (default) — emits one row per vector_layers[] entry: its layerId, layerFields schema (+ layerFieldNames / layerFieldCount), and per-layer layerMinzoom/layerMaxzoom, with the tileset-level metadata joined onto every row.
  • summary — emits exactly one tileset-summary row (name, spec version, bounds, center, zoom envelope, tile URL template, layer count) with no per-layer fan-out.

Raster tilesets

A raster tileset (imagery, hillshade, a raster OpenMapTiles variant) is a valid TileJSON document that simply has no vector_layers. Running such a URL in layers mode automatically falls back to a single tileset summary row (recorded in the row's _note) rather than returning zero rows — so a raster tileset is a real, honest result, never a failure or an empty.

Output

One record per vector layer (or one summary row). Key fields:

  • Tileset: name, description, version, tilejsonVersion, attribution, scheme, format, minzoom, maxzoom, isVector, tilesetLayerCount
  • Extent: bounds (+ boundsWest/South/East/North), center (+ centerLon/Lat/Zoom)
  • Tiles: tileUrlTemplate (first template, resolved absolute), tileUrls
  • Layer (in layers mode): layerId, layerDescription, layerMinzoom, layerMaxzoom, layerFields, layerFieldNames, layerFieldCount
  • Provenance: _tilesetUrl, _mode, _rowIndex, _note, and the lossless _raw original document

A URL that cannot be fetched, is not JSON, or is not a TileJSON document fails loudly — this Actor never fabricates rows.

Pricing

Pay-per-event: $0.0005 per record (one vector layer or one tileset summary).