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.
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"]) 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_endparams
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:
fredapilibrary wraps the REST API cleanly - R:
fredrpackage (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
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
How to Access
- ⚡ Automation Ready programmable
- 🌐 Browser/UI
Index entry
Added: Apr 30, 2026
Last indexed: May 2, 2026
~ Community-sourced entry