OGC WCS Coverage Extractor avatar

OGC WCS Coverage Extractor

Pricing

from $0.35 / 1,000 coverage offerings

Go to Apify Store
OGC WCS Coverage Extractor

OGC WCS Coverage Extractor

Point at ANY OGC Web Coverage Service (WCS 2.0.1/2.0.0/1.1/1.0) — rasdaman, MapServer, GeoServer, deegree, EOxServer, THREDDS. Reads GetCapabilities + DescribeCoverage; returns flat rows per coverage (id, subtype, WGS84 bbox, grid type, axis labels, corners, range fields). Pay per coverage.

Pricing

from $0.35 / 1,000 coverage offerings

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

23 days ago

Last modified

Share

What does WCS Coverage Extractor do?

It reads the coverage catalog of an OGC Web Coverage Service (WCS) and returns it as clean table rows. Give it one or more WCS endpoint URLs. It returns one row per coverage: the coverage ID, its subtype and the service title. If the server publishes more, capabilities rows also get the WGS84 bounding box and title; describe/discovery rows add grid axes, corners, grid size and band (range field) names.

Use it to see which raster layers a WCS server offers before you download anything, to put several servers' catalogs into one spreadsheet, or to feed coverage IDs into your own GIS pipeline.

It returns metadata only. It does not download raster or pixel data (it never sends GetCoverage requests).

Quick start: the exact sample run

This is the published example input. Press Start to run it:

{
"mode": "capabilities",
"wcsVersion": "2.0.1",
"maxRecords": 5,
"sources": [
"https://demo.mapserver.org/cgi-bin/wcs"
],
"coverageIds": []
}

When this was run, the MapServer demo listed three coverages, so the run returned 3 rows: 3 coverage events, US$0.0015 on the FREE tier.

Real output from that sample

Actor run p9teUwshQLbzYXWke (build 0.1.2, 2026-09-26) ran this exact input and returned these rows:

coverageIdcoverageSubtype_wcsVersion_serverSoftware_serviceTitle
ndviRectifiedGridCoverage2.0.1MapServerWCS Demo Server for MapServer, setup by GatewayGeo
fparRectifiedGridCoverage2.0.1MapServerWCS Demo Server for MapServer, setup by GatewayGeo
modisRectifiedGridCoverage2.0.1MapServerWCS Demo Server for MapServer, setup by GatewayGeo

Here is one of those rows as JSON. _raw.xml holds the server's own XML fragment; it is shortened here, and the other null fields are left out:

{
"_sourceService": "https://demo.mapserver.org/cgi-bin/wcs",
"_wcsVersion": "2.0.1",
"_mode": "capabilities",
"_serverSoftware": "MapServer",
"_serviceTitle": "WCS Demo Server for MapServer, setup by GatewayGeo",
"coverageId": "ndvi",
"coverageSubtype": "RectifiedGridCoverage",
"title": null,
"wgs84_bbox": null,
"_raw": { "xml": "<ns0:CoverageSummary ...><ns0:CoverageId>ndvi</ns0:CoverageId>..." }
}

This demo server's capabilities document gives only the ID and subtype. That is why title, wgs84_bbox and the other optional fields are null. The Actor never fills in values the server did not send. Use describe mode to get grid details. You can export the dataset as JSON, CSV, Excel or HTML.

Modes

  • capabilities (default): sends one GetCapabilities request per source and returns one row per advertised coverage. Rows include coverageId, coverageSubtype, title, abstract, wgs84_bbox ([minLon, minLat, maxLon, maxLat], when the server sends one), boundingBoxCrs, native corners and additionalParameters. This is the cheapest way to list a server.
  • describe: sends one DescribeCoverage request per ID in coverageIds (every advertised coverage if the list is empty). Each coverage row includes gridType, gridDimension, axisLabels, envelopeSrs and srsDimension. It also has lowerCorner/upperCorner as text, in the envelope's own CRS and axis order. The grid index bounds are in gridLow/gridHigh, plus rangeFieldNames (bands) and nativeFormat.
  • discovery: runs GetCapabilities, then DescribeCoverage for every advertised coverage, up to maxRecords. It returns describe-style rows (their _mode is describe).

Every row also carries:

  • _sourceService
  • _wcsVersion: the version the server actually served
  • _serverSoftware: a best-effort guess
  • _raw.xml: the original XML for that coverage

Use it on your own WCS server

  1. Endpoint: put your service's base URL in sources. That is the URL that answers SERVICE=WCS&REQUEST=GetCapabilities. Extra query parameters such as ?map=... are kept. You can list several endpoints; one that fails is skipped with a warning.
  2. Coverage IDs: run capabilities first. Then copy the IDs you want (for example ndvi or fpar) into coverageIds and switch mode to describe.
  3. maxRecords: the total row cap across all sources. The sample uses 5. The form prefill and the default are 1000, so lower it for a small first run.
  4. Version: wcsVersion is your preferred version. If the server does not support it, the Actor falls back through 2.0.1 → 2.0.0 → 1.1.1 → 1.1.0 → 1.0.0 automatically.
  5. Auth (optional): use bearerToken and extraHeaders for protected deployments. They are never logged.

Pricing and your budget

  • Priced unit: one coverage event per output row. That is one advertised coverage in capabilities mode, or one described coverage in describe/discovery mode.
  • Price per row, by Apify plan: FREE US$0.0005, BRONZE US$0.00045, SILVER US$0.0004, GOLD US$0.00035, PLATINUM US$0.0003, DIAMOND US$0.00025. That works out to US$0.25–0.50 per 1,000 rows.
  • Max run charge: your max run charge is a hard ceiling. The Actor stops before any row it cannot pay for. Once not even one more row fits, it makes no further WCS request. It never writes unpaid rows. maxRecords also caps the number of rows.
  • Platform usage (compute) is billed separately by Apify. For the 3-row sample run above it was about US$0.0014.

Supported servers and limits

  • It reads WCS 2.0.x, 1.1.x and 1.0.0 capabilities documents. The DescribeCoverage parser targets the WCS 2.0 GML/GMLCOV core.
  • It was checked live in July 2026 against MapServer (the demo above) and rasdaman (https://ows.rasdaman.org/rasdaman/ows). Other standard WCS servers (GeoServer, deegree, THREDDS and so on) may work, but they are not tested or guaranteed. Some servers list only IDs in their capabilities, like the demo.
  • It sends KVP GET requests only: no SOAP or XML POST, and no coverage downloads.
  • If a server returns an error inside an HTTP 200 response (an OWS ExceptionReport), the Actor treats it as an error and skips it. It never reports that as an empty success. If every source fails, the run exits with code 91.
  • The raw XML stored for each row is capped at 200,000 characters.

Support

Found a WCS server that returns wrong or empty rows? Open an issue on the Issues tab and include the endpoint URL and the mode you used.