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.

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/ferc-open-data-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 email required.

A second provider on the same verified email joins the account you already have.

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"
          }
        }
      }
    }
  }
}