OGC API Features Extractor avatar

OGC API Features Extractor

Pricing

from $0.35 / 1,000 features

Go to Apify Store
OGC API Features Extractor

OGC API Features Extractor

Point at ANY OGC API Features service (the modern WFS successor) — pygeoapi, ldproxy, GeoServer, national mapping & city GIS. List collections or page /items by bbox/datetime/CQL to flat rows (geometry, lon/lat, computed bbox, properties) + raw GeoJSON. Pay per feature.

Pricing

from $0.35 / 1,000 features

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Categories

Share

A generic "point at any OGC API Features service" scraper. OGC API Features is the modern, JSON/GeoJSON, OGC-blessed successor to WFS (Web Feature Service) — one open specification spoken by national mapping agencies, city / regional GIS portals, and the pygeoapi, ldproxy and GeoServer server families. Give this actor a service root URL, optionally pick collections + an area + a time window + a free-form query passthrough, and it pages the whole /items FeatureCollection into clean, flat dataset rows plus a lossless raw GeoJSON Feature.

One actor, every OGC API Features service — no per-instance scraper needed. (STAC — the satellite/EO catalog standard — is itself a profile of OGC API Features; for STAC catalogs use the companion STAC Catalog Extractor.)

What it does

  • Fetch features — set the service root + one or more collection ids and any of a bounding box, date/time window, or an arbitrary query parameters passthrough (CQL filter / properties / provider-specific keys), and it pulls every matching feature, auto-following the rel="next" pagination link (relative or absolute) up to your Max features.
  • Discover collections — leave the collection id(s) empty (or turn on List collections only) and it reads {serviceRoot}/collections and returns one row per collection: id, title, description, item type, spatial + temporal extent, CRS, and a ready-to-use items URL.
  • Normalized + raw — each feature's geometry is distilled to stable columns (geometryType, a computed bbox, and longitude/latitude for point features) while the full properties, geometry and the untouched Feature (raw) are all preserved, so nothing is lost even though every service exposes different attributes.

Quick start (3 features, about $0.0015)

The Input form and the ready-to-run example open with exactly this job, so you can just click Start. It pulls 3 lakes from the public pygeoapi reference server and needs no key:

{ "serviceRoot": "https://demo.pygeoapi.io/master", "collectionId": ["lakes"], "maxItems": 3 }

Real output from a local run of this exact input on 2026-09-25 (3 rows, exit 0). Heavy fields (geometry, raw) are shortened here:

{
"_serviceRoot": "https://demo.pygeoapi.io/master",
"_mode": "feature",
"featureId": "0",
"collectionId": "lakes",
"geometryType": "Polygon",
"longitude": null,
"latitude": null,
"propertyCount": 6,
"properties": { "id": 0, "scalerank": 0, "name": "Lake Baikal", "name_alt": "https://en.wikipedia.org/wiki/Lake_Baikal", "admin": null, "featureclass": "Lake" },
"geometry": { "type": "Polygon", "coordinates": ["…"] },
"raw": { "type": "Feature", "…": "…" }
}

The other two rows were Lake Winnipeg and Great Slave Lake. longitude/latitude are filled only for point features; polygons get a computed bbox.

Example inputs

All large lakes from the pygeoapi reference server (no auth). The collection holds 25 features, so this costs at most about $0.0125:

{ "serviceRoot": "https://demo.pygeoapi.io/master", "collectionId": ["lakes"], "maxItems": 25 }

Airports over Great Britain from ldproxy (no auth), point features → lon/lat:

{ "serviceRoot": "https://demo.ldproxy.net/zoomstack", "collectionId": ["airports"], "maxItems": 200 }

Features inside a bounding box:

{ "serviceRoot": "https://demo.pygeoapi.io/master", "collectionId": ["obs"], "bbox": [-180, -90, 180, 90], "maxItems": 50 }

Discover what a service exposes:

{ "serviceRoot": "https://demo.pygeoapi.io/master", "listCollectionsOnly": true }

A key-gated national service (e.g. UK Ordnance Survey) — supply your own key, never hardcoded:

{ "serviceRoot": "https://api.os.uk/features/ngd/ofa/v1", "collectionId": ["bld-fts-buildingpart-1"], "extraHeaders": { "key": "YOUR_OS_API_KEY" }, "maxItems": 100 }

Input reference

  • serviceRoot (required) — the OGC API root (not /collections or /items).
  • collectionId — collection id(s) to fetch; empty ⇒ discovery mode.
  • listCollectionsOnly — force discovery mode (list collections, fetch nothing).
  • bbox — [west, south, east, north] in WGS84 degrees (a 6-number 3D box is also accepted).
  • datetime — RFC 3339 instant or range; open ranges with ...
  • queryParams — arbitrary extra /items query params (CQL, properties, …).
  • limit — server-side page size (the actor paginates regardless).
  • maxItems — total feature cap across all pages/collections (the form opens at 3; 25 if you clear it). Raise it deliberately: every returned feature is one charge.
  • bearerToken / extraHeaders — optional auth for key-gated services.

Authentication

None required for the public services (pygeoapi, ldproxy demos). For key-gated services (e.g. national mapping agencies) supply a Bearer token and/or Extra request headers — both optional, never required, and the token is never logged.

Output

One dataset item per feature, with normalized columns plus:

  • _serviceRoot / _mode — the source service and whether the row is a feature or a collection.
  • geometry — the feature geometry (GeoJSON), properties — the full attribute bag, bbox — computed from the geometry when the feature omits one, longitude/latitude — set for point features.
  • raw — the complete, untouched GeoJSON Feature.

A query that matches nothing returns 0 features, not an error.

Pricing

Pay per feature — one feature event per record returned (one per collection in discovery mode). FREE-tier price is $0.0005 per feature, lower on paid tiers. A query that matches nothing costs nothing.

RunFeaturesEvent cost (FREE tier)
Quick start above3$0.0015
Default cap25$0.0125
Discovery on demo.pygeoapi.io (17 collections)17$0.0085
Large pull1,000$0.50

Apify platform usage is billed separately from these event charges.

Notes

  • Speaks OGC API — Features Part 1 (Core) item access; handles GeoJSON /items and the standard rel="next" offset pagination (relative and absolute hrefs).
  • Not affiliated with or endorsed by the OGC or any target service. Respect each provider's terms and any per-dataset licensing.