STAC API
The STAC API provides access to ODP's public catalog following the SpatioTemporal Asset Catalog (STAC) standard. Use it when your tooling already works with STAC, or when you want to search ODP catalog metadata through a standard interface.
STAC vs. ODP terminology
In STAC, a collection maps to an ODP data collection — a group of related datasets. Individual datasets are returned as STAC items from the search endpoint. STAC has no direct equivalent of the ODP "dataset" term.
Base URL
https://api.hubocean.earth/api/stac
Capabilities
The API is STAC-compliant and supports the following:
- Catalog root — the main STAC catalog with links to collections and search
- Collections — lists available ODP data collections with metadata
- Item search — search queries using spatial, temporal, and other filters, returning ODP datasets as items
Endpoints
| Endpoint | Description | Method |
|---|---|---|
/stac |
Root catalog | GET |
/stac/collections |
List available data collections | GET |
/stac/search |
Search for datasets (GeoJSON items) | POST |
List collections
GET https://api.hubocean.earth/api/stac/collections
curl -X GET "https://api.hubocean.earth/api/stac/collections"
Example response:
{
"collections": [
{
"id": "d0d0b53a-f598-46a3-a4c3-7c539f626956",
"description": "Example data collection",
"extent": {
"spatial": { "bbox": [[-180, -90, 180, 90]] },
"temporal": { "interval": [["2020-01-01T00:00:00Z", null]] }
},
"links": [
{
"rel": "self",
"href": "https://api.hubocean.earth/api/stac/collections/d0d0b53a-f598-46a3-a4c3-7c539f626956"
}
]
}
],
"links": []
}
You can also fetch a single collection by UUID:
curl -X GET "https://api.hubocean.earth/api/stac/collections/d0d0b53a-f598-46a3-a4c3-7c539f626956"
Pagination
All collection, item, and search endpoints support pagination via offset and limit query parameters. Paginated responses include next and prev links you can follow to traverse results.
curl -X GET "https://api.hubocean.earth/api/stac/collections?offset=10&limit=10"
Search items (datasets)
Use the POST /stac/search endpoint to filter datasets by collection, bounding box, time range, or geometry. Results are returned as STAC items.
Search parameters
| Parameter | Description |
|---|---|
collections |
List of data collection UUIDs to search within. Example: ["d0d0b53a-f598-46a3-a4c3-7c539f626956"] |
ids |
List of dataset UUIDs to filter by. Example: ["eac0399f-82e3-4536-915f-7e1dca90d032"] |
bbox |
Bounding box [minX, minY, maxX, maxY]. Example: [-180, -90, 180, 90] |
intersects |
GeoJSON geometry to search within |
datetime |
Time range in ISO 8601 format. Example: "2020-01-01T00:00:00Z/2024-01-02T00:00:00Z" |
limit |
Maximum number of results to return |
Tip
For collections and ids, use the "id" field from a /collections or /search response.
Example request
curl -X POST "https://api.hubocean.earth/api/stac/search" \
-H "Content-Type: application/json" \
-d '{
"collections": ["d0d0b53a-f598-46a3-a4c3-7c539f626956"],
"bbox": [-180, -90, 180, 90],
"datetime": "2020-01-01T00:00:00Z/2024-01-02T00:00:00Z",
"limit": 10
}'
Example response:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "eac0399f-82e3-4536-915f-7e1dca90d032",
"geometry": { "type": "Point", "coordinates": [5, 55] },
"properties": { "datetime": "2023-06-15T12:00:00Z" },
"links": [
{
"rel": "self",
"href": "https://api.hubocean.earth/api/stac/items/eac0399f-82e3-4536-915f-7e1dca90d032"
}
]
}
]
}