FERC Open Data API

FERC's public open data API, serving the same data assets and datasets published in the data.ferc.gov Data Catalog. A Data-Assets endpoint returns the catalog and the dataset IDs; Details, Data, and Dictionary endpoints return per-dataset metadata, full row data, and column definitions. Free self-serve API key, 1,000 requests per hour, X-Api-Key header or api_key query parameter. Runs on the api.data.gov API Umbrella stack (x-api-umbrella-request-id) hosted on cloud.gov. Verified live 2026-07-27 — an unauthenticated GET returns HTTP 403 with API_KEY_MISSING and a bogus key returns HTTP 403 with API_KEY_INVALID.

OpenAPI Specification

ferc-data-api-openapi.json Raw ↑
{
  "openapi": "3.0.0",

  "info": {
    "title": "API Endpoints",
    "description": "Our API provides the necessary services to access data programmatically. You first need to utilize the **Data-Assets endpoint** to obtain the **dataset ID** before you can call the Details, Data, and Dictionary endpoints. The dataset ID is required to retrieve the respective dataset information.\n\n Please note that executing the endpoints directly on this page will only return the first 100 rows, whereas you can expect the full dataset when executing them from the browser or your application. You can get a  [better understanding of our APIs](/developer/gettingstarted/understanding-our-apis/) by reviewing our documentaiton.",
    "x-logo": {
      "url": "/public/logo512.png"
    }
  },
  "host": "https://api-staging.data.ferc.gov/v1",
  "components": {
    "securitySchemes": {
      "ApiKeyQueryAuth": {
        "type": "apiKey",
        "in": "query",
        "name": "api_key"
      }
    }
  },
  "security": [{ "ApiKeyQueryAuth": [] }],

  "schemes": ["https"],
  "paths": {
    "/data-assets/": {
      "get": {
        "tags": ["Data-Assets"],
        "summary": "Fetch metadata information on the data asset and its associated Datasets.",
        "description": "This endpoint displays the metadata, including descriptions and titles, which will help you determine which datasets are available. After identifying the dataset you want to explore further, record it’s ID number and enter it for the other endpoints to retrieve data.",
        "operationId": "data-asset-id",
        "responses": {
          "200": {
            "description": "Successfully returned list of data assets",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "example": {
                      "data assets": [
                        {
                          "id": 0,
                          "title": "string",
                          "description": "String",
                          "program_office": "String",
                          "url": "URL",
                          "point_of_contact_email": "string",
                          "point_of_contact_name": "String",
                          "source": "URL",
                          "data-sets": [
                            {
                              "id": 0,
                              "title": "string",
                              "url": "string",
                              "description": "string"
                            },
                            { "...": "..." }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },

          "401": {
            "description": "Unauthorized - Request unsuccessful due to lack of validation"
          },
          "405": {
            "description": "Method Not Allowed - Only GET requests are allowed"
          },
          "429": {
            "description": "Too Many Requests - Blocked due to multiple requests in a short period"
          },
          "500": {
            "description": "Internal Server Error - Database error or server failure"
          }
        }
      }
    },

    "/dataset/{id}/details/": {
      "get": {
        "tags": ["Details"],
        "summary": "Fetch metadata, data asset, row count, and column information.",
        "description": "The Detail endpoint provides metadata information about a specific dataset by providing its ***dataset ID number***. This endpoint returns the description of the dataset, the associated industry, the most recent update date and time, the source URL, and the designated point of contact information for further inquiries on the dataset.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Enter the dataset ID number you want to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "example": 1
            }
          }
        ],
        "operationId": "detail-id",
        "responses": {
          "200": {
            "description": "Successfully returned list of datasets",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "example": {
                      "metadata": {
                        "id": 0,
                        "title": "string",
                        "description": "String",
                        "program_office": "String",
                        "url": "URL",
                        "point_of_contact_email": "string",
                        "point_of_contact_name": "String",
                        "source": "URL",
                        "data-sets": [
                          {
                            "id": 0,
                            "title": "string",
                            "url": "string",
                            "description": "string"
                          },
                          { "...": "..." }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Request unsuccessful due to lack of validation"
          },
          "404": {
            "description": "Not Found - Dataset ID does not exist"
          },
          "405": {
            "description": "Method Not Allowed - Only GET requests are allowed"
          },
          "429": {
            "description": "Too Many Requests - Blocked due to multiple requests in a short period"
          },
          "500": {
            "description": "Internal Server Error - Database error or server failure"
          }
        }
      }
    },
    "/dataset/{id}/data/": {
      "get": {
        "tags": ["Data"],
        "summary": "Fetch the actual dataset rows",
        "description": "This endpoint returns all the data for the ID you provide. First, use Data-Assets endpoint to find a valid dataset ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Enter the dataset ID number you want to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "example": 1
            }
          }
        ],
        "operationId": "data-id",
        "responses": {
          "200": {
            "description": "Successfully returned list of datasets",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "example": {
                      "row_data": [
                        {
                          "...": "..."
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - Invalid query parameters"
          },
          "401": {
            "description": "Unauthorized - Request unsuccessful due to lack of validation"
          },
          "404": {
            "description": "Not Found - Dataset ID does not exist"
          },
          "405": {
            "description": "Method Not Allowed - Only GET requests are allowed"
          },
          "429": {
            "description": "Too Many Requests - Blocked due to multiple requests in a short period"
          },
          "500": {
            "description": "Internal Server Error - Database error or server failure"
          }
        }
      }
    },
    "/dataset/{id}/dictionary/": {
      "get": {
        "tags": ["Dictionary"],
        "summary": "Fetch column descriptions and definitions from available data.",
        "description": "Get column descriptions and definitions from available data dictionaries (404 error if not available).",

        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Enter the ID number you want to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "example": 1
            }
          }
        ],
        "operationId": "dictionary-id",
        "responses": {
          "200": {
            "description": "Successfully returned object containing dictionary",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "example": {
                      "dictionary": [
                        {
                          "column_id": 0,
                          "column_name": "string",
                          "data_type": "DOUBLE",
                          "description": "string",
                          "description_url": ""
                        },
                        { "...": "..." }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Request unsuccessful due to lack of validation"
          },
          "404": {
            "description": "Not Found - Dataset ID does not exist"
          },
          "405": {
            "description": "Method Not Allowed - Only GET requests are allowed"
          },
          "429": {
            "description": "Too Many Requests - Blocked due to multiple requests in a short period"
          },
          "500": {
            "description": "Internal Server Error - Database error or server failure"
          }
        }
      }
    }
  }
}