Skip to content

List collections

GET
/v1/collections
curl --request GET \
--url https://api.satellitedata.net/v1/collections

Lists every collection live in the current phase, each with its band table, units, harmonization levels, mask source, extents and exact attribution string from schema v1. Collections that arrive in a later phase are absent until they launch. Free, anonymous and cached for 10 minutes.

Collections; the example is shortened to two.

Media typeapplication/json

Collection list.

object
collections
required

Collections live in this phase.

Array<object>

STAC collection with the schema v1 band table, units and attribution.

object
type
required

Always Collection.

string
Allowed value: Collection
stac_version
required

STAC version.

string
stac_extensions

STAC extension schema URIs.

Array<string>
id
required

Canonical collection id.

string
Allowed values: sentinel-2-l2a dem landsat-ot-l2 landsat-etm-l2 landsat-tm-l2 hls optical-sr sentinel-1-rtc sentinel-2-l1c landsat-ot-l1 landsat-etm-l1 landsat-tm-l1 landsat-mss-l1
title

Collection title.

string
description
required

Collection description.

string
keywords

Keywords.

Array<string>
license
required

SPDX id, or “other” with a license link.

string
providers

Data providers.

Array<object>

Provider.

object
name
required

Provider name.

string
roles

Roles.

Array<string>
Allowed values: licensor producer processor host
url

Provider URL.

string format: uri
extent
required

Extents measured from the index.

object
spatial
required

Spatial extent.

object
bbox
required

Overall bbox first, then optional sub-boxes.

Array<Array<number>>
temporal
required

Temporal extent.

object
interval
required

Intervals; an open end is null.

Array<Array<string | null>>
summaries

STAC summaries, such as platform and eo:cloud_cover ranges.

object
key
additional properties
any
bands

Band table from schema v1 (STAC 1.1 bands field). Empty on optical-sr, which lists common names in sdn:bands_common.

Array<object>

One band, from the schema v1 crosswalk.

object
name
required

Native band name, unique within the collection, for example B8A or SR_B5.

string
common_name

STAC eo common name, the cross-sensor key, for example nir08.

string
description

Band description.

string | null
aliases

Other names that resolve to this band within the collection.

Array<string>
center_wavelength

Centre wavelength in micrometres.

number | null
full_width_half_max

Full width at half maximum in micrometres.

number | null
gsd

Native ground sample distance in metres.

number
data_type

Stored data type.

string
Allowed values: uint8 uint16 int16 float32
scale

Raster:scale; value = scale x DN + offset.

number
offset

Raster:offset for the newest product; see offset_rule when it depends on the item.

number
offset_rule

How the offset is chosen per item, when it is not constant.

string
nodata

Stored nodata value.

number | null
unit

Default unit id from schema v1.

string
cross_sensor

True when the band resolves on optical-sr.

boolean
notes

Notes on the band, such as naming conflicts between catalogs.

string
sdn:aliases

Aliases from schema v1.

Array<object>

Collection alias.

object
id
required

Alias id accepted wherever a collection id is accepted.

string
source
required

Where the alias comes from, such as Sentinel Hub or Earth Search.

string
group

Alias group when one upstream id spans several collections.

string
filter

CQL2 text filter that the alias implies.

string
sdn:attribution

Exact credit line to show with any output; responses replace {years} with acquisition years.

string
sdn:units

Units the collection can return.

Array<string>
Allowed values: REFLECTANCE DN KELVIN CELSIUS LINEAR_POWER DB METERS DEGREES FRACTION
sdn:default_units

Unit used when the request does not choose one.

string
Allowed values: REFLECTANCE DN KELVIN CELSIUS LINEAR_POWER DB METERS DEGREES FRACTION
sdn:harmonize_levels

Harmonization levels the collection supports.

Array<string>
Allowed values: none offset_removed bandpass_adjusted nbar
sdn:default_harmonize

Harmonization level used when the request does not choose one.

string
Allowed values: none offset_removed bandpass_adjusted nbar
sdn:pseudo_bands

Derived bands such as mask, mask_class and dataMask.

Array<string>
sdn:mask_source

Cloud-mask source.

string
Allowed values: scl qa_pixel fmask s2cloudless none
sdn:mask_capabilities

Mask classes the source can detect. A class missing here is not detectable, not absent.

Array<string>
sdn:virtual

True for optical-sr, which searches its member collections.

boolean
sdn:members

Member collections of a virtual collection.

Array<string>
Allowed values: sentinel-2-l2a dem landsat-ot-l2 landsat-etm-l2 landsat-tm-l2 hls optical-sr sentinel-1-rtc sentinel-2-l1c landsat-ot-l1 landsat-etm-l1 landsat-tm-l1 landsat-mss-l1
sdn:bands_common

Common band names that resolve on a virtual collection.

Array<string>
sdn:zoom

Tile zoom range.

object
min
required

Lowest zoom served from the full archive.

integer
max
required

Highest zoom served.

integer
links
required

Links, including items, queryables, license and the schema.

Array<object>

A STAC and OGC API link object.

object
href
required

Link target.

string format: uri
rel
required

Relation type, such as self, root, parent, next, prev, items, queryables, tiles or license.

string
type

Media type of the target.

string
title

Human-readable title.

string
method

HTTP method for the link, GET unless stated. Paging POST /v1/search uses POST.

string
Allowed values: GET POST
body

Request body to send with a POST link, used for the next page of POST /v1/search.

object
key
additional properties
any
merge

When true the client merges body into the previous request body.

boolean
links
required

Links.

Array<object>

A STAC and OGC API link object.

object
href
required

Link target.

string format: uri
rel
required

Relation type, such as self, root, parent, next, prev, items, queryables, tiles or license.

string
type

Media type of the target.

string
title

Human-readable title.

string
method

HTTP method for the link, GET unless stated. Paging POST /v1/search uses POST.

string
Allowed values: GET POST
body

Request body to send with a POST link, used for the next page of POST /v1/search.

object
key
additional properties
any
merge

When true the client merges body into the previous request body.

boolean
numberMatched

Number of collections.

integer
numberReturned

Number returned.

integer

Example

{
"collections": [
{
"type": "Collection",
"stac_version": "1.1.0",
"stac_extensions": [
"https://stac-extensions.github.io/eo/v2.0.0/schema.json",
"https://stac-extensions.github.io/raster/v2.0.0/schema.json",
"https://stac-extensions.github.io/classification/v2.0.0/schema.json"
],
"id": "sentinel-2-l2a",
"title": "Sentinel-2 L2A",
"description": "Sentinel-2 MSI bottom-of-atmosphere reflectance from Sen2Cor, Collection-1 COGs indexed from Earth Search v1.",
"keywords": [
"sentinel-2",
"reflectance",
"copernicus"
],
"license": "other",
"providers": [
{
"name": "European Space Agency",
"roles": [
"licensor",
"producer"
],
"url": "https://sentinels.copernicus.eu/"
},
{
"name": "Element 84",
"roles": [
"host"
],
"url": "https://element84.com/"
},
{
"name": "satellitedata.net",
"roles": [
"processor"
],
"url": "https://satellitedata.net/"
}
],
"extent": {
"spatial": {
"bbox": [
[
-180,
-56,
180,
84
]
]
},
"temporal": {
"interval": [
[
"2015-07-04T00:00:00Z",
null
]
]
}
},
"summaries": {
"platform": [
"sentinel-2a",
"sentinel-2b",
"sentinel-2c"
],
"eo:cloud_cover": {
"minimum": 0,
"maximum": 100
}
},
"bands": [
{
"name": "B04",
"common_name": "red",
"description": null,
"center_wavelength": 0.6646,
"full_width_half_max": 0.031,
"gsd": 10,
"data_type": "uint16",
"scale": 0.0001,
"offset": -0.1,
"nodata": 0,
"unit": "REFLECTANCE",
"aliases": [
"red",
"B4"
],
"cross_sensor": true,
"offset_rule": "offset = BOA_ADD_OFFSET / QUANTIFICATION_VALUE (-1000 / 10000 = -0.1) when s2:processing_baseline >= 04.00, including Collection-1 reprocessed 2015-2021 scenes; 0 before 04.00. Chosen per item from s2:processing_baseline, never from acquisition date."
},
{
"name": "B08",
"common_name": "nir",
"description": null,
"center_wavelength": 0.8328,
"full_width_half_max": 0.118,
"gsd": 10,
"data_type": "uint16",
"scale": 0.0001,
"offset": -0.1,
"nodata": 0,
"unit": "REFLECTANCE",
"aliases": [
"nir",
"NIR_Broad",
"B8"
],
"cross_sensor": false,
"offset_rule": "offset = BOA_ADD_OFFSET / QUANTIFICATION_VALUE (-1000 / 10000 = -0.1) when s2:processing_baseline >= 04.00, including Collection-1 reprocessed 2015-2021 scenes; 0 before 04.00. Chosen per item from s2:processing_baseline, never from acquisition date.",
"notes": "Broad NIR, the only 10 m NIR band. No Landsat equivalent and no HLS bandpass coefficient. Cross-sensor NIR is nir08 (B8A)."
},
{
"name": "B8A",
"common_name": "nir08",
"description": null,
"center_wavelength": 0.8647,
"full_width_half_max": 0.02,
"gsd": 20,
"data_type": "uint16",
"scale": 0.0001,
"offset": -0.1,
"nodata": 0,
"unit": "REFLECTANCE",
"aliases": [
"nir08",
"NIR_Narrow"
],
"cross_sensor": true,
"offset_rule": "offset = BOA_ADD_OFFSET / QUANTIFICATION_VALUE (-1000 / 10000 = -0.1) when s2:processing_baseline >= 04.00, including Collection-1 reprocessed 2015-2021 scenes; 0 before 04.00. Chosen per item from s2:processing_baseline, never from acquisition date.",
"notes": "Matches Landsat OLI B5. Planetary Computer labels this band rededge; satellitedata.net follows Earth Search."
}
],
"sdn:aliases": [
{
"id": "S2L2A",
"source": "Sentinel Hub legacy id"
},
{
"id": "sentinel-2-c1-l2a",
"source": "Earth Search v1"
},
{
"id": "SENTINEL2_L2A",
"source": "CDSE openEO"
},
{
"id": "COPERNICUS/S2_SR_HARMONIZED",
"source": "Google Earth Engine"
}
],
"sdn:attribution": "Contains modified Copernicus Sentinel data {years}",
"sdn:units": [
"REFLECTANCE",
"DN"
],
"sdn:default_units": "REFLECTANCE",
"sdn:harmonize_levels": [
"none",
"offset_removed",
"bandpass_adjusted"
],
"sdn:default_harmonize": "offset_removed",
"sdn:pseudo_bands": [
"mask",
"mask_class",
"dataMask",
"cloud_probability"
],
"sdn:mask_source": "scl",
"sdn:mask_capabilities": [
"nodata",
"saturated_defective",
"cloud",
"cloud_shadow",
"cirrus",
"snow_ice",
"water",
"dark_terrain_shadow",
"unclassified",
"clear",
"cloud_adjacent"
],
"sdn:virtual": false,
"sdn:zoom": {
"min": 8,
"max": 15
},
"links": [
{
"href": "https://api.satellitedata.net/v1/collections/sentinel-2-l2a",
"rel": "self",
"type": "application/json"
},
{
"href": "https://api.satellitedata.net/v1",
"rel": "root",
"type": "application/json"
},
{
"href": "https://api.satellitedata.net/v1/collections/sentinel-2-l2a/items",
"rel": "items",
"type": "application/geo+json"
},
{
"href": "https://api.satellitedata.net/v1/collections/sentinel-2-l2a/queryables",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/queryables",
"type": "application/schema+json"
},
{
"href": "https://sentinels.copernicus.eu/documents/247904/690755/Sentinel_Data_Legal_Notice",
"rel": "license",
"title": "Legal notice on the use of Copernicus Sentinel data"
},
{
"href": "https://api.satellitedata.net/v1/schema",
"rel": "describedby",
"type": "application/json",
"title": "Schema v1"
}
]
},
{
"type": "Collection",
"stac_version": "1.1.0",
"id": "optical-sr",
"title": "Virtual optical surface reflectance",
"description": "Searches and mosaics Sentinel-2 L2A, Landsat 4-9 Level-2 and HLS together, resolves common band names per item, removes duplicate observations and reports the harmonization applied to each scene.",
"license": "other",
"extent": {
"spatial": {
"bbox": [
[
-180,
-90,
180,
90
]
]
},
"temporal": {
"interval": [
[
"1982-08-22T00:00:00Z",
null
]
]
}
},
"bands": [],
"sdn:aliases": [],
"sdn:attribution": "Composed per response from the members used.",
"sdn:units": [
"REFLECTANCE",
"DN"
],
"sdn:default_units": "REFLECTANCE",
"sdn:harmonize_levels": [
"none",
"offset_removed",
"bandpass_adjusted",
"nbar"
],
"sdn:default_harmonize": "bandpass_adjusted",
"sdn:pseudo_bands": [
"mask",
"mask_class",
"dataMask"
],
"sdn:virtual": true,
"sdn:members": [
"sentinel-2-l2a",
"landsat-ot-l2",
"landsat-etm-l2",
"landsat-tm-l2",
"hls"
],
"sdn:bands_common": [
"blue",
"green",
"red",
"nir08",
"swir16",
"swir22"
],
"sdn:zoom": {
"min": 8,
"max": 14
},
"links": [
{
"href": "https://api.satellitedata.net/v1/collections/optical-sr",
"rel": "self",
"type": "application/json"
},
{
"href": "https://api.satellitedata.net/v1/collections/optical-sr/items",
"rel": "items",
"type": "application/geo+json"
}
]
}
],
"links": [
{
"href": "https://api.satellitedata.net/v1/collections",
"rel": "self",
"type": "application/json"
},
{
"href": "https://api.satellitedata.net/v1",
"rel": "root",
"type": "application/json"
}
],
"numberMatched": 2,
"numberReturned": 2
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D
ETag
string

Entity tag; includes the render version.

Example
"r3-9f2c1a"
Cache-Control
string

Caching policy for CloudFront and browsers.

Example
public, max-age=3600, s-maxage=2592000, stale-if-error=604800

A per-minute, concurrency, monthly or per-IP limit was hit. Retry-After says when to retry.

Media typeapplication/problem+json

RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.

object
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

Example

{
"type": "https://docs.satellitedata.net/problems/rate-limited",
"title": "Rate limit exceeded",
"status": 429,
"detail": "This key spent 300 of its 300 units in the current minute.",
"instance": "/v1/process",
"code": "rate-limited",
"requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D",
"retryAfter": 17,
"limits": {
"unitsPerMinute": 300,
"unitsSpentThisMinute": 300
}
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D
Retry-After
integer

Seconds to wait before retrying.

Example
17
RateLimit
string

Remaining units and seconds to reset in the current window (IETF RateLimit header draft).

Example
"units";r=287;t=41
RateLimit-Policy
string

Quota policy of the caller (IETF RateLimit header draft).

Example
"units";q=300;w=60

An unexpected server error. No units are charged.

Media typeapplication/problem+json

RFC 9457 problem details. Every 4xx and 5xx response uses this shape with media type application/problem+json. The type URL opens a documentation page that explains the cause and the fix.

object
type
required

URL of the documentation page for this problem type, stable for the life of /v1.

string format: uri
title
required

Short summary of the problem type. It does not change between occurrences.

string
status
required

HTTP status code, repeated for clients that lose the status line.

integer
>= 400 <= 599
detail
required

Explanation specific to this occurrence, written for a developer.

string
instance

Path of the request that failed.

string
code

Machine-readable problem code; equals the last path segment of type.

string
/^[a-z0-9-]+$/
requestId

Request id, also sent in X-Request-Id. Quote it in support requests.

string
errors

Field-level validation failures, present on 400 and 422.

Array<object>

One field-level failure.

object
pointer
required

JSON Pointer (RFC 6901) into the request body, or the query parameter name.

string
detail
required

What is wrong with that member.

string
retryAfter

Seconds until the request can succeed; equals the Retry-After header.

integer
limits

The limit that was hit and the value requested, for example maxWidth and requestedWidth.

object
key
additional properties
number
unitsEstimated

Units the request would have cost, computed before execution.

number
error

OAuth 2.0 error code (RFC 6749 section 5.2). Present only on /oauth/token responses.

string
Allowed values: invalid_request invalid_client invalid_grant unauthorized_client unsupported_grant_type invalid_scope
error_description

OAuth 2.0 error description. Present only on /oauth/token responses.

string
message

Copy of detail for openEO clients, which read message. Present only on /v1/openeo routes.

string
key
additional properties
any

Example

{
"type": "https://docs.satellitedata.net/problems/internal",
"title": "Internal error",
"status": 500,
"detail": "The request failed on our side and was logged. No units were charged.",
"instance": "/v1/process",
"code": "internal",
"requestId": "01JQ7Z3M8R5V2W6X9Y0A1B2C3D"
}
X-Request-Id
string

Request id for support and logs.

Example
01JQ7Z3M8R5V2W6X9Y0A1B2C3D