Common Metadata Repository (CMR) APIs

Common Metadata Repository APIs provide access to a spatial and temporal metadata registry that stores metadata from a variety of science disciplines and domain

CMR is a spatial and temporal metadata registry that stores metadata from a variety of science disciplines and domain. CMR is intended to enable broader use of NASA's EOS data by providing a more uniform view of NASA’s substantial and diverse data holdings. NASA's Earth Science Data and Information System (ESDIS) Project-built CMR is based on Extensible Markup Language (XML) and web service technologies. CMR interfaces with clients and users through various APIs. CMR is an open system.

Getting Started with the CMR

Modern Earth Science applications strive to provide end users with nearly immediate access and interactivity across massive stores of Earth Science data. That data is discovered, navigated, and often interrogated through science metadata. The Common Metadata Repository (CMR) is a high-performance, high-quality, continuously evolving metadata system that catalogs all of the metadata records describing NASA’s earth facing satellite data as well as data from select other US and international agencies. CMR maintains hundreds of millions of metadata records; striving to make them available in under 1 second. Clients can access this freely available metadata by leveraging REST protocols and APIs to perform keyword, spatial, temporal and faceted search. The simple to use APIs allow clients to perform powerful searches in order to find exactly the data they are looking for.

Since the CMR uses platform-independent web service definitions for its API, there are no requirements for a client programming language. All examples in this document use curl; however, the code samples provided could be translated to any web service capable language.

As a CMR Client, you need to be familiar with basic software development and Service Oriented Architecture (SOA) concepts such as:

  • XML and XML Schema (XSD)
  • Client/Server-based programming (client stubs, remote endpoints, etc.)
  • RESTful client and service communication programming
  • Service-based Application Programmer's Interface (API)


There are several ways to search the CMR system using the RESTful principles, which include employing:

  • The API calls and parameters with the GET method
  • The API calls and parameters with the POST method
  • A JSON query language with a POST method
  • The Alternative Query Language (AQL)

The most popular and preferred method is to use the API calls and parameters with the GET or POST methods.

Some examples showing the simplicity of the CMR interface can be seen below:

1) To view the first 3 CMR collections, simply hit the collection search endpoint and set the page size to 3:

The response received is shown below. It shows 32,290 hits to your collection query and that it took 7 milliseconds to run the query. It then shows the name, id (concept-id), location and revision-id of the first 3 results.



2) To see only collections where the platform is AQUA and the spatial extent is within a certain bounding box, simply add in the platform and bounding box parameters:,-5,10,5&page_size=3

The results are in the same format as above:



3) Then, to see the full collection metadata of one of those search results, simply access the record via the URL specified in the “location” field in the results:

By default, this will provide you with an .html view of the collection record. To specify a different format of the record, simply append the desired extension. For example, to retrieve the same record in the DIF10 xml, just append .dif10 and you can download the .xml in DIF10 format:

For full details on the parameters and different response types supported, please see the Client Partner User Guide and the full Search API Documentation.

Last Updated