Community data Governmental Free & Open

Federal Reserve Economic Data

FRED is maintained by the Federal Reserve Bank of St. Louis and provides access to over 800,000 US and international time series from nearly 100 sources. Data includes interest rates, exchange rates, GDP, and inflation metrics.

API Quickstart — Python — fetch GDP series
Official docs →
import requests

API_KEY = "your_fred_api_key"
url = "https://api.stlouisfed.org/fred/series/observations"
params = {
    "series_id": "GDP",
    "api_key": API_KEY,
    "file_type": "json",
    "limit": 10,
    "sort_order": "desc"
}
r = requests.get(url, params=params)
data = r.json()["observations"]
for obs in data:
    print(obs["date"], obs["value"])
💳 Access & Pricing
Visit source →

Cost

Free

Access type

open

Signup required

No

Update alerts

✓ Available

Coverage

north america

Update frequency

varies

Source Documentation

What You're Getting

FRED hosts 800,000+ economic time series from 100+ sources — GDP, CPI, interest rates, money supply, employment, and more. Data is organized by series ID (e.g. GDP, CPIAUCSL, UNRATE). Each series returns an observations array with date and value fields. Frequency varies per series (daily, weekly, monthly, quarterly, annual). Vintage data (historical release snapshots) is available via the ALFRED endpoint.

Ingestion Strategy

Use the REST API with a FRED API key (free, no rate-limit concerns at reasonable volumes). Preferred pattern: pull a list of series IDs you need, then request observations in bulk with limit=10000 and sort_order=asc. Store series_id, date, value, realtime_start, and realtime_end so you can reconstruct vintages. For initial backfills, request all observations; for incremental loads, use observation_start set to your last-loaded date.

import requests, pandas as pd

API_KEY = "your_key"
series = ["GDP", "CPIAUCSL", "UNRATE"]
rows = []
for sid in series:
    r = requests.get("https://api.stlouisfed.org/fred/series/observations",
        params={"series_id": sid, "api_key": API_KEY, "file_type": "json",
                "sort_order": "asc", "limit": 10000})
    for obs in r.json()["observations"]:
        rows.append({"series_id": sid, **obs})
df = pd.DataFrame(rows)

Rate Limits & API Details

  • 120 requests/minute per API key (generous for most pipelines)
  • Free API key at fred.stlouisfed.org/docs/api/api_key.html
  • Bulk download endpoint at api.stlouisfed.org/fred — JSON or XML
  • ALFRED (vintage data): same API, add realtime_start / realtime_end params

Schema Stability

Very stable. Series IDs are permanent. Occasional series are discontinued (marked discontinued=true) but historical data is preserved. Units and seasonal adjustment flags are metadata fields — pull them once and store alongside series definitions.

Data Quality Gotchas

  • Seasonal adjustment: many series exist in both SA and NSA variants — store the suffix (_SA, _NSA) in your series metadata
  • Revisions: economic data is revised; if you need point-in-time accuracy, pull ALFRED vintages
  • Missing values: coded as . in CSV downloads — handle nulls explicitly
  • Frequency mismatch: mixing monthly and quarterly series requires explicit resampling in your model layer

Tool Compatibility

  • Python: fredapi library wraps the REST API cleanly
  • R: fredr package (CRAN)
  • Airbyte: community FRED connector exists
  • dbt: no native source, but standard SQL after loading into warehouse
  • Direct API works from any language or ETL tool

Benchmarking Approach

Track row count per series per load. For GDP, expect ~300+ quarterly observations going back to 1947. For CPIAUCSL, expect ~800+ monthly points. Alert if new observations stop appearing within 30 days of expected release date (check FRED release calendar via API). Cross-check GDP value for a known quarter against BEA published figure to confirm no unit conversion errors.

Notable Datasets

1 total
  • 10-Year Treasury Constant Maturity\n30-Year Fixed Rate Mortgage Average\nUnemployment Rate\nConsumer Price Index\n100+ Data Sets
Visit Data Source

Access

Cost
Free
Access type
Open
Update alerts
✓ Available

Data Profile

Coverage
North America
Frequency
Varies
History from
1949
Source updated
Jan 2025

Data Formats

csv xlsx api other

How to Access

  • Automation Ready programmable
  • 🌐 Browser/UI

Index entry

Added: Apr 30, 2026

Last indexed: May 2, 2026

~ Community-sourced entry

Learn

Recent guides

View all →