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.
Current status
100.0% operational in known checks
Checked Jun 16, 7:05 PM
Access
limited
Collection level
L2
Confidence
medium
Recommended next action
Use the official access path with a user-provided key or account; do not run unauthenticated data probes.
Exportable data
public_csv_and_free_key_api
Docker fit
worker_ok
Estimated size
large
Download location
https://fred.stlouisfed.org/graph/fredgraph.csv?id=GDPCost
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.
Data Formats
API Quickstart
— Python — fetch GDP seriesimport 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"]) How to Access
- ⚡ automation ready programmable
- 🌐 end user
Notable Datasets
5 total- ▸ 10-Year Treasury Constant Maturity
- ▸ 30-Year Fixed Rate Mortgage Average
- ▸ Unemployment Rate
- ▸ Consumer Price Index
- ▸ 100+ Data Sets
Index entry
Added: Apr 30, 2026
Last indexed: Jun 16, 2026
Unverified entry