Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Query FRED (Federal Reserve Economic Data) API for 800,000+ economic time series from 100+ sources. Access GDP, unemployment, inflation, interest rates, exchange rates, housing, and regional data. Use for macroeconomic analysis, financial research, policy studies, economic forecasting, and academic research requiring U.S. and international economic indicators.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 52% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 169% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 106% | 0% |
Access comprehensive economic data through FRED (Federal Reserve Economic Data), a database maintained by the Federal Reserve Bank of St. Louis containing over 800,000 economic time series from over 100 sources.
Key capabilities:
Required: All FRED API requests require an API key.
bashexport FRED_API_KEY="your_32_character_key_here"
Or in Python:
pythonimport os os.environ["FRED_API_KEY"] = "your_key_here"
pythonfrom scripts.fred_query import FREDQuery # Initialize with API key fred = FREDQuery(api_key="YOUR_KEY") # or uses FRED_API_KEY env var # Get GDP data gdp = fred.get_series("GDP") print(f"Latest GDP: {gdp['observations'][-1]}") # Get unemployment rate observations unemployment = fred.get_observations("UNRATE", limit=12) for obs in unemployment["observations"]: print(f"{obs['date']}: {obs['value']}%") # Search for inflation series inflation_series = fred.search_series("consumer price index") for s in inflation_series["seriess"][:5]: print(f"{s['id']}: {s['title']}")
pythonimport requests import os API_KEY = os.environ.get("FRED_API_KEY") BASE_URL = "https://api.stlouisfed.org/fred" # Get series observations response = requests.get( f"{BASE_URL}/series/observations", params={ "api_key": API_KEY, "series_id": "GDP", "file_type": "json" } ) data = response.json()
| Series ID | Description | Frequency | |-----------|-------------|-----------| | GDP | Gross Domestic Product | Quarterly | | GDPC1 | Real Gross Domestic Product | Quarterly | | UNRATE | Unemployment Rate | Monthly | | CPIAUCSL | Consumer Price Index (All Urban) | Monthly | | FEDFUNDS | Federal Funds Effective Rate | Monthly | | DGS10 | 10-Year Treasury Constant Maturity | Daily | | HOUST | Housing Starts | Monthly | | PAYEMS | Total Nonfarm Payrolls | Monthly | | INDPRO | Industrial Production Index | Monthly | | M2SL | M2 Money Stock | Monthly | | UMCSENT | Consumer Sentiment | Monthly | | SP500 | S&P 500 | Daily |
Get economic data series metadata and observations.
Key endpoints:
fred/series - Get series metadatafred/series/observations - Get data values (most commonly used)fred/series/search - Search for series by keywordsfred/series/updates - Get recently updated seriespython# Get observations with transformations obs = fred.get_observations( series_id="GDP", units="pch", # percent change frequency="q", # quarterly observation_start="2020-01-01" ) # Search with filters results = fred.search_series( "unemployment", filter_variable="frequency", filter_value="Monthly" )
Reference: See references/series.md for all 10 series endpoints
Navigate the hierarchical organization of economic data.
Key endpoints:
fred/category - Get a categoryfred/category/children - Get subcategoriesfred/category/series - Get series in a categorypython# Get root categories (category_id=0) root = fred.get_category() # Get Money Banking & Finance category and its series category = fred.get_category(32991) series = fred.get_category_series(32991)
Reference: See references/categories.md for all 6 category endpoints
Access data release schedules and publication information.
Key endpoints:
fred/releases - Get all releasesfred/releases/dates - Get upcoming release datesfred/release/series - Get series in a releasepython# Get upcoming release dates upcoming = fred.get_release_dates() # Get GDP release info gdp_release = fred.get_release(53)
Reference: See references/releases.md for all 9 release endpoints
Discover and filter series using FRED tags.
python# Find series with multiple tags series = fred.get_series_by_tags(["gdp", "quarterly", "usa"]) # Get related tags related = fred.get_related_tags("inflation")
Reference: See references/tags.md for all 3 tag endpoints
Get information about data sources (BLS, BEA, Census, etc.).
python# Get all sources sources = fred.get_sources() # Get Federal Reserve releases fed_releases = fred.get_source_releases(source_id=1)
Reference: See references/sources.md for all 3 source endpoints
Access geographic/regional economic data for mapping.
python# Get state unemployment data regional = fred.get_regional_data( series_group="1220", # Unemployment rate region_type="state", date="2023-01-01", units="Percent", season="NSA" ) # Get GeoJSON shapes shapes = fred.get_shapes("state")
Reference: See references/geofred.md for all 4 GeoFRED endpoints
Apply transformations when fetching observations:
| Value | Description | |-------|-------------| | lin | Levels (no transformation) | | chg | Change from previous period | | ch1 | Change from year ago | | pch | Percent change from previous period | | pc1 | Percent change from year ago | | pca | Compounded annual rate of change | | cch | Continuously compounded rate of change | | cca | Continuously compounded annual rate of change | | log | Natural log |
python# Get GDP percent change from year ago gdp_growth = fred.get_observations("GDP", units="pc1")
Aggregate data to different frequencies:
| Code | Frequency | |------|-----------| | d | Daily | | w | Weekly | | m | Monthly | | q | Quarterly | | a | Annual |
Aggregation methods: avg (average), sum, eop (end of period)
python# Convert daily to monthly average monthly = fred.get_observations( "DGS10", frequency="m", aggregation_method="avg" )
Access historical vintages of data via ALFRED:
python# Get GDP as it was reported on a specific date vintage_gdp = fred.get_observations( "GDP", realtime_start="2020-01-01", realtime_end="2020-01-01" ) # Get all vintage dates for a series vintages = fred.get_vintage_dates("GDP")
pythondef get_economic_snapshot(fred): """Get current values of key indicators.""" indicators = ["GDP", "UNRATE", "CPIAUCSL", "FEDFUNDS", "DGS10"] snapshot = {} for series_id in indicators: obs = fred.get_observations(series_id, limit=1, sort_order="desc") if obs.get("observations"): latest = obs["observations"][0] snapshot[series_id] = { "value": latest["value"], "date": latest["date"] } return snapshot
pythondef compare_series(fred, series_ids, start_date): """Compare multiple series over time.""" import pandas as pd data = {} for sid in series_ids: obs = fred.get_observations( sid, observation_start=start_date, units="pc1" # Normalize as percent change ) data[sid] = { o["date"]: float(o["value"]) for o in obs["observations"] if o["value"] != "." } return pd.DataFrame(data)
pythondef get_upcoming_releases(fred, days=7): """Get data releases in next N days.""" from datetime import datetime, timedelta end_date = datetime.now() + timedelta(days=days) releases = fred.get_release_dates( realtime_start=datetime.now().strftime("%Y-%m-%d"), realtime_end=end_date.strftime("%Y-%m-%d"), include_release_dates_with_no_data="true" ) return releases
pythondef map_state_unemployment(fred, date): """Get unemployment by state for mapping.""" data = fred.get_regional_data( series_group="1220", region_type="state", date=date, units="Percent", frequency="a", season="NSA" ) # Get GeoJSON for mapping shapes = fred.get_shapes("state") return data, shapes
pythonresult = fred.get_observations("INVALID_SERIES") if "error" in result: print(f"Error {result['error']['code']}: {result['error']['message']}") elif not result.get("observations"): print("No data available") else: # Process data for obs in result["observations"]: if obs["value"] != ".": # Handle missing values print(f"{obs['date']}: {obs['value']}")
For detailed endpoint documentation:
references/series.mdreferences/categories.mdreferences/releases.mdreferences/tags.mdreferences/sources.mdreferences/geofred.mdreferences/api_basics.mdscripts/fred_query.pyMain query module with FREDQuery class providing:
scripts/fred_examples.pyComprehensive examples demonstrating:
Run examples:
bashuv run python scripts/fred_examples.py
Other measured skills in the registry, with their headline benchmark lift.