NOAA ERDDAP Data Access API

Download subsets of tabular or gridded data.

Operations 2

GET /tabledap/{datasetID}.{fileType} Download a subset of a tabular dataset #
GET /griddap/{datasetID}.{fileType} Download a subset of a gridded dataset #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/noaa-erddap-data-access-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

noaa-erddap-data-access-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ERDDAP REST Data Access API
  version: '2.23'
  description: 'OpenAPI specification for ERDDAP (Environmental Research Division''s Data

    Access Program), a scientific data server providing simple, consistent

    access to gridded and tabular scientific datasets.'
  contact:
    name: ERDDAP Project
    url: https://github.com/ERDDAP/erddap
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://coastwatch.pfeg.noaa.gov/erddap
  description: NOAA CoastWatch West Coast Node (reference server)
- url: https://erddap.ioos.us/erddap
  description: US IOOS ERDDAP
- url: '{baseUrl}'
  description: Any ERDDAP server — replace with the instance base URL
  variables:
    baseUrl:
      default: https://coastwatch.pfeg.noaa.gov/erddap
      description: 'Base URL of any ERDDAP server, including the /erddap path segment

        if present (e.g. https://example.org/erddap).

        '
tags:
- name: Data Access
  description: Download subsets of tabular or gridded data.
paths:
  /tabledap/{datasetID}.{fileType}:
    get:
      summary: Download a subset of a tabular dataset
      operationId: getTabledapData
      tags:
      - Data Access
      description: 'Retrieves in-situ, station, trajectory, or profile data (CDM types

        other than Grid).


        **Query string structure:** `?variables&constraints`


        - `variables` — comma-separated variable names; omit for all variables.

        - `constraints` — `&varName>=value` pairs appended after the variable list.


        **Special result modifiers (append to query):**

        - `&distinct()` — return only unique rows.

        - `&orderBy("var1,var2")` — sort results.

        - `&orderByMax("var1")` — keep only the row with the max value per group.

        - `&units("UDUNITS")` — convert units.


        Always call `/info/{datasetID}/index.json` first to discover valid

        variable names and coordinate ranges.'
      parameters:
      - name: datasetID
        in: path
        required: true
        schema:
          type: string
        example: cwwcNDBCMet
      - name: fileType
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/DataFileType'
      - name: variables
        in: query
        description: 'Comma-separated variable names to include in the response.

          Omit to return all variables.

          '
        schema:
          type: string
        example: time,latitude,longitude,wtmp
      - name: time>=
        in: query
        description: Lower time bound (ISO 8601 or `now-Nunit` expression).
        schema:
          type: string
        example: '2020-01-01T00:00:00Z'
      - name: time<=
        in: query
        description: Upper time bound.
        schema:
          type: string
      - name: latitude>=
        in: query
        schema:
          type: number
      - name: latitude<=
        in: query
        schema:
          type: number
      - name: longitude>=
        in: query
        schema:
          type: number
      - name: longitude<=
        in: query
        schema:
          type: number
      responses:
        '200':
          description: Tabular data subset in the requested format.
          content:
            text/csv:
              schema:
                type: string
            application/json:
              schema:
                $ref: '#/components/schemas/TabledapJsonResponse'
            application/x-netcdf:
              schema:
                type: string
                format: binary
        '400':
          description: 'Bad request. Common causes: unknown variable name, constraint value

            out of range, malformed constraint syntax.

            '
        '404':
          description: Dataset not found.
  /griddap/{datasetID}.{fileType}:
    get:
      summary: Download a subset of a gridded dataset
      operationId: getGriddapData
      tags:
      - Data Access
      description: 'Retrieves satellite, model, or reanalysis data (CDM Grid type).


        **Query string structure:**

        `?var1[(d1_start):(d1_stop)][(d2_start):(d2_stop)],...`


        Dimension subscripts use parentheses for value-based indexing:

        `?sst[(2020-01-01T12:00:00Z)][(0.0)][(20.0):(50.0)][(-80.0):(-60.0)]`


        Stride syntax: `[(start):(stride):(stop)]`

        Select all values in a dimension: `[]`


        Dimensions are always in the order shown by `/info/{datasetID}/index.json`

        (typically time, altitude/depth, latitude, longitude for 4-D datasets).


        Always call `/info/{datasetID}/index.json` first to discover dimension

        names, their order, and valid ranges.'
      parameters:
      - name: datasetID
        in: path
        required: true
        schema:
          type: string
        example: erdMBsstd1day
      - name: fileType
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/DataFileType'
      responses:
        '200':
          description: Gridded data subset in the requested format.
          content:
            application/x-netcdf:
              schema:
                type: string
                format: binary
            text/csv:
              schema:
                type: string
            application/json:
              schema:
                type: object
        '400':
          description: Bad request — unknown variable or out-of-range dimension subscript.
        '404':
          description: Dataset not found.
components:
  schemas:
    DataFileType:
      type: string
      description: Response format for tabledap and griddap data requests.
      enum:
      - csv
      - csvp
      - csv0
      - json
      - jsonlCSV1
      - jsonlCSV
      - jsonlKVP
      - tsv
      - tsvp
      - tsv0
      - nc
      - ncHeader
      - ncCF
      - ncCFHeader
      - ncCFMA
      - ncCFMAHeader
      - nccsv
      - nccsvMetadata
      - ncoJson
      - mat
      - asc
      - das
      - dds
      - dods
      - esriCsv
      - fgdc
      - geoJson
      - iso19115
      - itx
      - kml
      - odvTxt
      - smallPdf
      - pdf
      - largePdf
      - smallPng
      - png
      - largePng
      - transparentPng
      - wav
      - xhtml
      - html
      - dataTable
      - subset
      - graph
    TabledapJsonResponse:
      type: object
      description: JSON response from a tabledap data request (same envelope as DatasetList).
      properties:
        table:
          type: object
          required:
          - columnNames
          - columnTypes
          - columnUnits
          - rows
          properties:
            columnNames:
              type: array
              items:
                type: string
            columnTypes:
              type: array
              items:
                type: string
            columnUnits:
              type: array
              items:
                type: string
                nullable: true
            rows:
              type: array
              items:
                type: array
                items: {}