European Space Agency (ESA) Search API
The Search API from European Space Agency (ESA) — 1 operation(s) for search.
The Search API from European Space Agency (ESA) — 1 operation(s) for search.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/esa-search-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Copernicus Data Space Ecosystem (CDSE) asset-level STAC catalogue Bulk Transaction Extension Search API
description: 'A comprehensive and searchable catalog of Earth observation and scientific datasets that is actively maintained and updated by the Copernicus Data Space Ecosystem. The integrated STAC (SpatioTemporal Asset Catalog) API, which follows the open STAC specification, enables users to access detailed asset-level metadata, including spatial information, temporal coverage, and data specifications. This standardized interface facilitates efficient data discovery and retrieval across the extensive collection of environmental and scientific resources. More information: https://documentation.dataspace.copernicus.eu/'
version: 1.1.0
servers:
- url: /v1
tags:
- name: Search
paths:
/search:
post:
summary: Search
description: Endpoint.
operationId: Search_search_post
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPostRequest'
responses:
'200':
description: Successful Response
content:
application/geo+json:
schema:
$ref: '#/components/schemas/ItemCollection-Output'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Search
get:
summary: Search
description: Endpoint.
operationId: Search_search_get
parameters:
- name: collections
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Array of collection Ids to search for items.
example: collection1,collection2
title: Collections
description: Array of collection Ids to search for items.
- name: ids
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Array of Item ids to return.
example: item1,item2
title: Ids
description: Array of Item ids to return.
- name: bbox
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Only return items intersecting this bounding box. Mutually exclusive with **intersects**.
example: -175.05,-85.05,175.05,85.05
title: Bbox
description: Only return items intersecting this bounding box. Mutually exclusive with **intersects**.
- name: intersects
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: "Only return items intersecting this GeoJSON Geometry. Mutually exclusive with **bbox**. \n\n*Remember to URL encode the GeoJSON geometry when using GET request*."
title: Intersects
description: "Only return items intersecting this GeoJSON Geometry. Mutually exclusive with **bbox**. \n\n*Remember to URL encode the GeoJSON geometry when using GET request*."
examples:
madrid:
value:
type: Feature
properties: {}
geometry:
coordinates:
- - - -3.8549260500072933
- 40.54923557897152
- - -3.8549260500072933
- 40.29428000041938
- - -3.516597069715033
- 40.29428000041938
- - -3.516597069715033
- 40.54923557897152
- - -3.8549260500072933
- 40.54923557897152
type: Polygon
new-york:
value:
type: Feature
properties: {}
geometry:
coordinates:
- - - -74.50117532354284
- 41.128266394414055
- - -74.50117532354284
- 40.35633909727355
- - -73.46713183168603
- 40.35633909727355
- - -73.46713183168603
- 41.128266394414055
- - -74.50117532354284
- 41.128266394414055
type: Polygon
- name: datetime
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Only return items that have a temporal property that intersects this value.
Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots.'
title: Datetime
description: 'Only return items that have a temporal property that intersects this value.
Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots.'
examples:
datetime:
value: '2018-02-12T23:20:50Z'
closed-interval:
value: 2018-02-12T00:00:00Z/2018-03-18T12:31:12Z
open-interval-from:
value: 2018-02-12T00:00:00Z/..
open-interval-to:
value: ../2018-03-18T12:31:12Z
- name: limit
in: query
required: false
schema:
anyOf:
- type: integer
exclusiveMinimum: 0
- type: 'null'
description: Limits the number of results that are included in each page of the response (capped to 10_000).
default: 10
title: Limit
description: Limits the number of results that are included in each page of the response (capped to 10_000).
- name: query
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Allows additional filtering based on the properties of Item objects
example: '{"eo:cloud_cover": {"gte": 95}}'
title: Query
description: Allows additional filtering based on the properties of Item objects
- name: sortby
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: An array of property names, prefixed by either '+' for ascending or '-' for descending. If no prefix is provided, '+' is assumed.
example: -gsd,-datetime
title: Sortby
description: An array of property names, prefixed by either '+' for ascending or '-' for descending. If no prefix is provided, '+' is assumed.
- name: fields
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Include or exclude fields from items body.
example: properties.datetime
title: Fields
description: Include or exclude fields from items body.
- name: filter
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'A CQL filter expression for filtering items.
Supports `CQL-JSON` as defined in https://portal.ogc.org/files/96288
Remember to URL encode the CQL-JSON if using GET'
example: id='LC08_L1TP_060247_20180905_20180912_01_T1_L1TP' AND collection='landsat8_l1tp'
title: Filter
description: 'A CQL filter expression for filtering items.
Supports `CQL-JSON` as defined in https://portal.ogc.org/files/96288
Remember to URL encode the CQL-JSON if using GET'
- name: filter-crs
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The coordinate reference system (CRS) used by spatial literals in the 'filter' value. Default is `http://www.opengis.net/def/crs/OGC/1.3/CRS84`
title: Filter-Crs
description: The coordinate reference system (CRS) used by spatial literals in the 'filter' value. Default is `http://www.opengis.net/def/crs/OGC/1.3/CRS84`
- name: filter-lang
in: query
required: false
schema:
anyOf:
- enum:
- cql-json
- cql2-json
- cql2-text
type: string
- type: 'null'
description: The CQL filter encoding that the 'filter' value uses.
default: cql2-text
title: Filter-Lang
description: The CQL filter encoding that the 'filter' value uses.
- name: token
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Token
responses:
'200':
description: Successful Response
content:
application/geo+json:
schema:
$ref: '#/components/schemas/ItemCollection-Output'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Search
components:
schemas:
Operator:
type: string
enum:
- eq
- ne
- lt
- lte
- gt
- gte
title: Operator
description: Defines the set of operators supported by the API.
SortDirections:
type: string
enum:
- asc
- desc
title: SortDirections
GeometryCollection-Input:
properties:
bbox:
anyOf:
- prefixItems:
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 4
minItems: 4
- prefixItems:
- type: number
- type: number
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
type:
type: string
const: GeometryCollection
title: Type
geometries:
items:
oneOf:
- $ref: '#/components/schemas/Point'
- $ref: '#/components/schemas/MultiPoint'
- $ref: '#/components/schemas/LineString'
- $ref: '#/components/schemas/MultiLineString'
- $ref: '#/components/schemas/Polygon'
- $ref: '#/components/schemas/MultiPolygon'
- $ref: '#/components/schemas/GeometryCollection-Input'
discriminator:
propertyName: type
mapping:
GeometryCollection: '#/components/schemas/GeometryCollection-Input'
LineString: '#/components/schemas/LineString'
MultiLineString: '#/components/schemas/MultiLineString'
MultiPoint: '#/components/schemas/MultiPoint'
MultiPolygon: '#/components/schemas/MultiPolygon'
Point: '#/components/schemas/Point'
Polygon: '#/components/schemas/Polygon'
type: array
title: Geometries
type: object
required:
- type
- geometries
title: GeometryCollection
description: GeometryCollection Model
MultiLineString:
properties:
bbox:
anyOf:
- prefixItems:
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 4
minItems: 4
- prefixItems:
- type: number
- type: number
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
type:
type: string
const: MultiLineString
title: Type
coordinates:
items:
items:
anyOf:
- $ref: '#/components/schemas/Position2D'
- $ref: '#/components/schemas/Position3D'
type: array
minItems: 2
type: array
title: Coordinates
type: object
required:
- type
- coordinates
title: MultiLineString
description: MultiLineString Model
LineString:
properties:
bbox:
anyOf:
- prefixItems:
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 4
minItems: 4
- prefixItems:
- type: number
- type: number
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
type:
type: string
const: LineString
title: Type
coordinates:
items:
anyOf:
- $ref: '#/components/schemas/Position2D'
- $ref: '#/components/schemas/Position3D'
type: array
minItems: 2
title: Coordinates
type: object
required:
- type
- coordinates
title: LineString
description: LineString Model
SortExtension:
properties:
field:
type: string
minLength: 1
title: Field
direction:
$ref: '#/components/schemas/SortDirections'
type: object
required:
- field
- direction
title: SortExtension
description: https://github.com/radiantearth/stac-api-spec/tree/master/extensions/sort#sort-api-extension
ItemProperties:
properties:
title:
anyOf:
- type: string
- type: 'null'
title: Title
description:
anyOf:
- type: string
- type: 'null'
title: Description
datetime:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Datetime
created:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Created
updated:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Updated
start_datetime:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Start Datetime
end_datetime:
anyOf:
- type: string
format: date-time
- type: 'null'
title: End Datetime
license:
anyOf:
- type: string
- type: 'null'
title: License
providers:
anyOf:
- items:
$ref: '#/components/schemas/Provider'
type: array
- type: 'null'
title: Providers
platform:
anyOf:
- type: string
- type: 'null'
title: Platform
instruments:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Instruments
constellation:
anyOf:
- type: string
- type: 'null'
title: Constellation
mission:
anyOf:
- type: string
- type: 'null'
title: Mission
gsd:
anyOf:
- type: number
exclusiveMinimum: 0.0
- type: 'null'
title: Gsd
additionalProperties: true
type: object
required:
- datetime
title: ItemProperties
description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/item-spec/item-spec.md#properties-object
Asset:
properties:
href:
type: string
minLength: 1
title: Href
type:
anyOf:
- type: string
- type: 'null'
title: Type
title:
anyOf:
- type: string
- type: 'null'
title: Title
description:
anyOf:
- type: string
- type: 'null'
title: Description
roles:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Roles
additionalProperties: true
type: object
required:
- href
title: Asset
description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/item-spec/item-spec.md#asset-object
PostFieldsExtension:
properties:
include:
anyOf:
- items:
type: string
type: array
uniqueItems: true
- type: 'null'
title: Include
default: []
exclude:
anyOf:
- items:
type: string
type: array
uniqueItems: true
- type: 'null'
title: Exclude
default: []
type: object
title: PostFieldsExtension
description: "FieldsExtension.\n\nAttributes:\n include: set of fields to include.\n exclude: set of fields to exclude."
stac_pydantic__api__item__Item:
properties:
bbox:
anyOf:
- prefixItems:
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 4
minItems: 4
- prefixItems:
- type: number
- type: number
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
type:
type: string
const: Feature
title: Type
geometry:
anyOf:
- oneOf:
- $ref: '#/components/schemas/Point'
- $ref: '#/components/schemas/MultiPoint'
- $ref: '#/components/schemas/LineString'
- $ref: '#/components/schemas/MultiLineString'
- $ref: '#/components/schemas/Polygon'
- $ref: '#/components/schemas/MultiPolygon'
- $ref: '#/components/schemas/GeometryCollection-Output'
discriminator:
propertyName: type
mapping:
GeometryCollection: '#/components/schemas/GeometryCollection-Output'
LineString: '#/components/schemas/LineString'
MultiLineString: '#/components/schemas/MultiLineString'
MultiPoint: '#/components/schemas/MultiPoint'
MultiPolygon: '#/components/schemas/MultiPolygon'
Point: '#/components/schemas/Point'
Polygon: '#/components/schemas/Polygon'
- type: 'null'
title: Geometry
properties:
$ref: '#/components/schemas/ItemProperties'
id:
type: string
minLength: 1
title: Id
stac_version:
type: string
pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
title: Stac Version
default: 1.0.0
assets:
additionalProperties:
$ref: '#/components/schemas/Asset'
type: object
title: Assets
links:
$ref: '#/components/schemas/stac_pydantic__links__Links-Output'
stac_extensions:
anyOf:
- items:
type: string
minLength: 1
format: uri
type: array
- type: 'null'
title: Stac Extensions
default: []
collection:
anyOf:
- type: string
- type: 'null'
title: Collection
type: object
required:
- type
- geometry
- properties
- id
- assets
- links
title: Item
stac_pydantic__links__Links-Output:
items:
$ref: '#/components/schemas/Link'
type: array
title: Links
Position2D:
prefixItems:
- type: number
title: Longitude
- type: number
title: Latitude
type: array
maxItems: 2
minItems: 2
stac_pydantic__api__links__Links:
items:
anyOf:
- $ref: '#/components/schemas/SearchLink'
- $ref: '#/components/schemas/PaginationLink'
- $ref: '#/components/schemas/ItemsLink'
- $ref: '#/components/schemas/Link'
type: array
title: Links
ItemsLink:
properties:
href:
type: string
pattern: .*\/items(\?.*)?\b
title: Href
rel:
type: string
enum:
- self
- items
title: Rel
type:
type: string
const: application/geo+json
title: Type
default: application/geo+json
title:
anyOf:
- type: string
- type: 'null'
title: Title
label:assets:
anyOf:
- type: string
- type: 'null'
title: Label:Assets
method:
type: string
enum:
- GET
- POST
title: Method
default: GET
headers:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Headers
body:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Body
merge:
type: boolean
title: Merge
default: false
additionalProperties: true
type: object
required:
- href
- rel
title: ItemsLink
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
SearchPostRequest:
properties:
collections:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Collections
ids:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Ids
bbox:
anyOf:
- prefixItems:
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
type: array
maxItems: 4
minItems: 4
- prefixItems:
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
- anyOf:
- type: number
- type: integer
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
intersects:
anyOf:
- $ref: '#/components/schemas/Point'
- $ref: '#/components/schemas/MultiPoint'
- $ref: '#/components/schemas/LineString'
- $ref: '#/components/schemas/MultiLineString'
- $ref: '#/components/schemas/Polygon'
- $ref: '#/components/schemas/MultiPolygon'
- $ref: '#/components/schemas/GeometryCollection-Input'
- type: 'null'
title: Intersects
datetime:
anyOf:
- type: string
- type: 'null'
title: Datetime
limit:
anyOf:
- type: integer
exclusiveMinimum: 0.0
- type: 'null'
title: Limit
description: Limits the number of results that are included in each page of the response (capped to 10_000).
default: 10
conf:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Conf
query:
anyOf:
- additionalProperties:
additionalProperties: true
propertyNames:
$ref: '#/components/schemas/Operator'
type: object
type: object
- type: 'null'
title: Query
sortby:
anyOf:
- items:
$ref: '#/components/schemas/SortExtension'
type: array
- type: 'null'
title: Sortby
description: 'An array of property (field) names, and direction in form of ''{''field'': ''<property_name>'', ''direction'':''<direction>''}'''
example:
- direction: asc
field: properties.created
fields:
anyOf:
- $ref: '#/components/schemas/PostFieldsExtension'
- type: 'null'
description: Include or exclude fields from items body.
default:
include: []
exclude: []
filter:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Filter
description: A CQL filter expression for filtering items.
example:
args:
- args:
- property: id
- LC08_L1TP_060247_20180905_20180912_01_T1_L1TP
op: '='
- args:
- property: collection
- landsat8_l1tp
op: '='
op: and
filter-crs:
anyOf:
- type: string
- type: 'null'
title: Filter-Crs
description: The coordinate reference system (CRS) used by spatial literals in the 'filter' value. Default is `http://www.opengis.net/def/crs/OGC/1.3/CRS84`
filter-lang:
anyOf:
- type: string
enum:
- cql-json
- cql2-json
- type: 'null'
title: Filter-Lang
description: The CQL filter encoding that the 'filter' value uses.
default: cql2-json
token:
anyOf:
- type: string
- type: 'null'
title: Token
type: object
title: SearchPostRequest
MultiPolygon:
properties:
bbox:
anyOf:
- prefixItems:
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 4
minItems: 4
- prefixItems:
- type: number
- type: number
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
type:
type: string
const: MultiPolygon
title: Type
coordinates:
items:
items:
items:
anyOf:
- $ref: '#/components/schemas/Position2D'
- $ref: '#/components/schemas/Position3D'
type: array
minItems: 4
type: array
type: array
title: Coordinates
type: object
required:
- type
- coordinates
title: MultiPolygon
description: MultiPolygon Model
ItemCollection-Output:
properties:
bbox:
anyOf:
- prefixItems:
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 4
minItems: 4
- prefixItems:
- type: number
- type: number
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
type:
type: string
const: FeatureCollection
title: Type
features:
items:
$ref: '#/components/schemas/stac_pydantic__api__item__Item'
type: array
title: Features
links:
anyOf:
- $ref: '#/components/schemas/stac_pydantic__api__links__Links'
- type: 'null'
numberMatched:
anyOf:
- type: integer
- type: 'null'
title: Numbermatched
numberReturned:
anyOf:
- type: integer
- type: 'null'
title: Numberreturned
type: object
required:
- type
- features
title: ItemCollection
description: 'https://github.com/radiantearth/stac-api-spec/blob/v1.0.0/fragments/itemcollection/README.md
https://github.com/radiantearth/stac-api-spec/blob/v1.0.0/item-search/README.md#link-relations'
MultiPoint:
properties:
bbox:
anyOf:
- prefixItems:
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 4
minItems: 4
- prefixItems:
- type: number
- type: number
- type: number
- type: number
- type: number
- type: number
type: array
maxItems: 6
minItems: 6
- type: 'null'
title: Bbox
type:
type: string
const: MultiPoint
title: Type
coordinates:
items:
anyOf:
- $ref: '#/components/schemas/Position2D'
- $ref: '#/components/schemas/Position3D'
type: array
title: Coordinates
type: object
required:
- type
- coordinates
title: MultiPoint
description: MultiPoint Model
Position3D:
prefixItems:
- type: number
title: Longitude
- type: number
title: Latitude
- type: number
title: Altitude
type: array
maxItems: 3
minItems: 3
Link:
properties:
href:
type: string
minLength: 1
title: Href
rel:
type: string
minLength: 1
title: Rel
type:
anyOf:
- $ref: '#/components/schemas/MimeTypes'
- type: 'null'
title:
anyOf:
- type: string
- type: 'null'
title: Title
label:assets:
anyOf:
- type: string
- type: 'null'
title: Label:Assets
additionalProperties: true
type: object
required:
- href
- rel
title: Link
description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/collection-spec/collection-spec.md#link-object
Provider:
properties:
name:
type: string
minLength: 1
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
roles:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Roles
url:
anyOf:
- type: string
- type: 'null'
title: Url
type: object
required:
- name
title: Provider
description: https://github.c
# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/esa/refs/heads/main/openapi/esa-search-api-openapi.yml