OGC API Coverages Extractor
Pricing
from $0.35 / 1,000 records
OGC API Coverages Extractor
Point at ANY OGC API - Coverages endpoint (the JSON/CoverageJSON successor to WCS) — pygeoapi, GNOSIS, ldproxy, GeoServer. List coverage collections, describe their schema (axes, params, CRS), or summarize CoverageJSON (axis shape + value count) as flat rows. Pay per record.
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
2 days ago
Last modified
Categories
Share
A generic "point at any OGC API - Coverages endpoint" scraper. OGC API - Coverages is the modern JSON / CoverageJSON REST standard for gridded and raster coverage data — the successor to the older XML Web Coverage Service (WCS). Earth observation, climate reanalysis, elevation / DEM, land-cover, weather grids and satellite imagery are all published as coverage collections by national mapping agencies, space agencies, research data centres and spatial data infrastructures.
One actor spans them all. Point it at any OGC API landing/root URL and it lists every coverage collection, describes their schema, or summarizes the CoverageJSON — with the same normalized row shape regardless of the server software (pygeoapi, Ecere GNOSIS, ldproxy, GeoServer, …). No per-server scraper needed.
Three modes
| Mode | What you get (one flat row per…) |
|---|---|
| collections (default) | …coverage collection — collectionId, title, coverage_available, WGS84 wgs84_bbox, temporal_interval, crs, coverageUrl |
| describe | …collection's schema — domainType, axisLabels, axisSizes, referenceSystems, rangeParameters, parameterCount |
| coverage | …range parameter — param, axis_shape, value_count, dataType, axisNames, unit, observedProperty |
Every row also carries provenance (_sourceService, _ogcApi,
_serverSoftware, _mode) and a lossless, size-capped _raw.
Why the coverage summary is safe (and fast)
A single CoverageJSON grid can be 100 MB+ — the raw pixel/cell array is
enormous. This actor never downloads it. The CoverageJSON domain, parameters
and range headers all precede the giant ranges.values array, so the fetch is
byte-capped and streamed: it reads just enough to summarize the axes, the
range parameters and their shape (and computes value_count as the product of
the grid axes), then stops. You get the full structure of a multi-million-cell
coverage as one compact row — never one row per cell.
Input
{"sources": ["https://demo.pygeoapi.io/master", "https://maps.gnosis.earth/ogcapi"],"mode": "collections","collectionIds": ["gdps-temperature"],"maxRecords": 1000}
- sources (required) — one or more OGC API landing/root URLs. Point at the
root, not
/collectionsor/coverage. - mode —
collections(default),describe, orcoverage. - collectionIds — restrict
describe/coverageto specific collection ids; leave empty to process every coverage collection the endpoint exposes. - 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 (collections mode, example row)
{"_mode": "collection","collectionId": "gdps-temperature","title": "Global Deterministic Prediction System sample","coverage_available": true,"wgs84_bbox": [-180.0, -90.0, 180.0, 90.0],"temporal_interval": null,"crs": ["http://www.opengis.net/def/crs/OGC/1.3/CRS84"],"coverageUrl": "https://demo.pygeoapi.io/master/collections/gdps-temperature/coverage","_sourceService": "https://demo.pygeoapi.io/master","_ogcApi": "coverages","_serverSoftware": "pygeoapi"}
Behaviour & honesty
- Coverage-only. Feature and record collections are filtered out — a coverage
collection is detected by an
itemType: "coverage"or acoveragelink relation, so feature endpoints are never mis-scraped. - Zero coverages is a real state. A reachable endpoint that exposes no coverage collections 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: pygeoapi (ECCC weather grids) and Ecere GNOSIS (NaturalEarth rasters + CMIP/ERA5 climate coverages), confirming identical normalized output across vendors.