Skip to content


What is ERDDAP?

ERDDAP is a data server that provides a simple, consistent way to download subsets of scientific datasets in common file formats. Originally created by Environmental Research Division (ERD), ERDDAP is now globally used across the CIOOS, IOOS and more global communities to share data in a standardized way.


  • Data Access: ERDDAP provides a variety of data access methods including via a web browser, OPeNDAP, SOS, WMS, WCS, HTTP, and more.
  • Data Formats: ERDDAP can convert data to various formats such as .csv, .json, .nc, .xls, .mat, .dods, and others (more info here).
  • Data Subsetting: ERDDAP allows users to request a subset of a dataset. It converts the subset to the desired file format available for download.
  • ERDDAP API: All the information, data and figures made available via ERDDAP is also available via an API. See table datasets API docs here, and gridded datasets API documentation here.

Hakai's ERDDAPs

Hakai Institute uses an ERDDAP server to provide access to their oceanographic data. Two ERDDAP instances are maintained by Hakai:

ERDDAP Tabledap Datasets API

You can programmatically retrieve data from an ERDDAP dataset. You first need to define the data query you'd like to retrieve. For this:

  • (easy) Use the Data Access Form or Subset form. They make the URL for you.
  • (easy) Use the Make A Graph form. It makes the URL for you.
  • (not hard) generate the URL by hand or with a computer program or script.

For a more complete explanation see ERDDAP documentation here.

As an example here's how to programmatically retrieve an ERDDAP dataset query via the csv format:

import pandas as pd

# Define the URL of the ERDDAP dataset. 
url = "{dataset}.csv?..."

# Load the data into a pandas DataFrame. Skip second row which gives each variables units
df = pd.read_csv(url, skiprows=[1])

# Convert time variable to a pandas datetime object.
df['time'] = pd.to_datetime(df['time'])

# Show the first few lines
# Define the URL of the ERDDAP dataset
url <- "<{dataset}.csv>?..."

# Load the data into a data frame
data <- read.csv(full_url)

# Print the data frame
url = "<{dataset}.csv>?..."

options = weboptions;
options.Timeout = 120;

data = webread(url,options);

% Convert time to datetime object
data.time_UTC_ = datetime(data.time_UTC_,"Format","yyyy-MM-dd'T'HH:mm:ssZ",timezone="UTC");

  1. Contact for access if needed.