OGC API Coverages Extractor avatar

OGC API Coverages Extractor

Pricing

from $0.35 / 1,000 records

Go to Apify Store
OGC API Coverages Extractor

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

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 - 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

ModeWhat 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 parameterparam, 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 /collections or /coverage.
  • modecollections (default), describe, or coverage.
  • collectionIds — restrict describe / coverage to 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 a coverage link 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.