OGC API Tiles Extractor avatar

OGC API Tiles Extractor

Pricing

from $0.35 / 1,000 records

Go to Apify Store
OGC API Tiles Extractor

OGC API Tiles Extractor

Point at ANY OGC API - Tiles endpoint (the JSON-native successor to WMTS) — ldproxy, GNOSIS, GeoServer, pygeoapi. Inventory vector/map tileset offerings, list tile matrix sets (CRS, zoom levels, axes), or discovery-scan a server's tiles capabilities as flat rows. Pay per record.

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

2 days ago

Last modified

Share

A generic "point at any OGC API - Tiles endpoint" scraper. OGC API - Tiles is the modern JSON-native standard for publishing tiled vector and map/raster data — the successor to the older XML Web Map Tile Service (WMTS). Basemaps, vector tilesets, land-cover, imagery and thematic layers are all published as tileset offerings over standard tile matrix sets by national mapping agencies, spatial data infrastructures and modern map servers.

One actor spans them all. Point it at any OGC API landing/root URL and it inventories every tileset offering, lists the tile matrix sets, or discovery-scans the server — with the same normalized row shape regardless of the server software (ldproxy, Ecere GNOSIS, GeoServer, pygeoapi, …). No per-server scraper needed.

Three modes

ModeWhat you get (one flat row per…)
tilesets (default)…tileset offering — tileset_title, data_type (vector/map), tileMatrixSet_id, tileMatrixSet_uri, crs, tile_url_templates, tileset_url, zoom_levels, bbox
tilematrixsets…tile matrix set the server publishes — tms_id, tms_title, tms_crs, tileMatrix_count, tileMatrix_ids, ordered_axes, well_known_scale_set
discovery…source — api_title, tileset_endpoints, tileMatrixSet_ids, tileMatrixSet_count, collection_count (one reconnaissance row per endpoint)

Every row also carries provenance (_sourceService, _ogcApi, _serverSoftware, _mode) and a lossless, size-capped _raw.

Why it's a genuine generic runner

OGC API - Tiles servers advertise tilesets two different ways, and this actor normalizes both to one row:

  • Tile matrix set id — some servers (ldproxy) give an explicit tileMatrixSetId; others (GNOSIS) give only a tileMatrixSetURI. The actor reads the explicit id when present and otherwise derives it from the URI's last path segment.
  • Where tiles are advertised — some servers advertise a per-collection tileset listing (tilesets-vector link relation on a collection); others advertise a server-level global listing (/tiles, /map/tiles). The actor follows the advertised link relations and probes the spec's standard entry points, so both conventions resolve.

Input

{
"sources": ["https://demo.ldproxy.net/vineyards", "https://maps.gnosis.earth/ogcapi"],
"mode": "tilesets",
"collections": [],
"maxRecords": 1000
}
  • sources (required) — one or more OGC API landing/root URLs. Point at the root, not /tiles or /tileMatrixSets.
  • modetilesets (default), tilematrixsets, or discovery.
  • collections — in tilesets mode, restrict to specific collection ids and drill into each collection's tiles; leave empty to read the fast server-level global tileset listing. Ignored in the other modes.
  • maxRecords — total row cap (each row is one billable event). Default 1000.
  • bearerToken / extraHeaders — optional, for auth-gated deployments. Not required for public OGC API endpoints. Never logged.

Output (tilesets mode, example row)

{
"_mode": "tilesets",
"collectionId": "vineyards",
"tileset_title": "Vineyards",
"data_type": "vector",
"tileMatrixSet_id": "WebMercatorQuad",
"tileMatrixSet_uri": "http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad",
"crs": null,
"tile_url_templates": ["https://demo.ldproxy.net/vineyards/tiles/WebMercatorQuad/{tileMatrix}/{tileRow}/{tileCol}?f=mvt"],
"tileset_url": "https://demo.ldproxy.net/vineyards/tiles/WebMercatorQuad",
"zoom_levels": 12,
"bbox": [6.3021348, 49.0087017, 8.4179034, 50.6138935],
"_sourceService": "https://demo.ldproxy.net/vineyards",
"_ogcApi": "tiles",
"_serverSoftware": "ldproxy"
}

Behaviour & honesty

  • Content negotiation handled. Every request asks for f=json; if a server returns HTML (a content-negotiation miss) the resource is skipped with a warning — HTML is never parsed as tiles.
  • Link-relation driven. Tileset availability is discovered from the server's own links[] relations (tilesets-vector, tilesets-map, tiling-schemes), not hard-coded paths beyond the standard entry points.
  • Zero tilesets is a real state. A reachable endpoint that exposes no tilesets / tile matrix sets returns 0 rows and exits cleanly — no fabricated data.
  • Bad sources are skipped with a warning and the run continues; if every source fails, the run fails fast so nothing broken ships.

Pricing

Pay-per-event: one record charge per row returned.

Verified

Tested live against two independent server families: interactive-instruments ldproxy (vineyard vector tilesets) and Ecere GNOSIS (NaturalEarth vector + map tilesets across nine tile matrix sets), confirming identical normalized output across vendors.