TileJSON Tileset Metadata Extractor
Pricing
from $0.35 / 1,000 records
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 days ago
Last modified
Categories
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
| Field | Required | Description |
|---|---|---|
tilesetUrl | ✅ | Any TileJSON 3.0 metadata URL. Redirects are followed; relative tile-URL templates are resolved to absolute. |
mode | layers (default) — one row per vector layer; summary — one tileset-summary row. | |
userAgent | Optional User-Agent override. | |
timeoutSecs | Per-request timeout (default 60). |
Example
{"tilesetUrl": "https://tiles.openfreemap.org/planet","mode": "layers"}
Modes
layers(default) — emits one row pervector_layers[]entry: itslayerId,layerFieldsschema (+layerFieldNames/layerFieldCount), and per-layerlayerMinzoom/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
layersmode):layerId,layerDescription,layerMinzoom,layerMaxzoom,layerFields,layerFieldNames,layerFieldCount - Provenance:
_tilesetUrl,_mode,_rowIndex,_note, and the lossless_raworiginal 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).
Maximum charge per run
Each record is billed in the same step that writes it, so the dataset and the charge always match. If your run's maximum total charge can't cover even one record, the Actor makes no request to the tile server and ends with 0 records. Otherwise it stops cleanly at the last affordable record. A restarted run resumes without writing or billing any record twice.