FRED API: Get economic indicator
Gets a public FRED economic series by plain name or series ID, with its observations, latest value and source details.
Unofficial. Not affiliated with or endorsed by FRED.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Change optional
change Value transformation, for example percent_change_from_year_ago; defaults to none.
none (default)
One of
none,percent_change_from_year_ago.- End Date optional
end_date Last observation date in YYYY-MM-DD, for example 2026-09-28. Defaults to today.
Not set
- Indicator, required
indicator Economic figure in plain words or a FRED series ID, for example US unemployment rate or UNRATE.
US unemployment rate
- Start Date optional
start_date First observation date in YYYY-MM-DD, for example 2021-01-01. Defaults to five years ago.
Not set
Input as JSON
{ "indicator": "US unemployment rate"}Output
{ "units": "Percent", "values": [ { "date": "2021-11-01", "value": 4.1 }, { "date": "2021-12-01", "value": 3.9 }, { "date": "2022-01-01", "value": 4 } ], "frequency": "Monthly", "page_link": "https://fred.stlouisfed.org/series/UNRATE" , "series_id": "UNRATE", "latest_date": "2026-09-01", "latest_value": 4.2, "source_agency": "U.S. Bureau of Labor Statistics", "indicator_title": "Unemployment Rate", "seasonally_adjusted": true}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"fred.stlouisfed.org/get_economic_indicator","input":{"indicator":"US unemployment rate"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "fred.stlouisfed.org/get_economic_indicator" , "input": { "indicator": "US unemployment rate" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "fred.stlouisfed.org/get_economic_indicator" , "input": { "indicator": "US unemployment rate" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run fred.stlouisfed.org/get_economic_indicator# with {"indicator":"US unemployment rate"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "indicator" ], "properties": { "change": { "enum": [ "none", "percent_change_from_year_ago" ], "type": "string", "default": "none", "description": "Value transformation, for example percent_change_from_year_ago; defaults to none." }, "end_date": { "type": "string", "description": "Last observation date in YYYY-MM-DD, for example 2026-09-28. Defaults to today." }, "indicator": { "type": "string", "description": "Economic figure in plain words or a FRED series ID, for example US unemployment rate or UNRATE." }, "start_date": { "type": "string", "description": "First observation date in YYYY-MM-DD, for example 2021-01-01. Defaults to five years ago." } }}Output schema
{ "type": "object", "required": [ "indicator_title", "units", "frequency", "seasonally_adjusted", "source_agency", "latest_value", "latest_date", "page_link", "values", "series_id" ], "properties": { "units": { "type": "string", "description": "Units of the returned values, in words." }, "values": { "type": "array", "items": { "type": "object", "required": [ "date", "value" ], "properties": { "date": { "type": "string", "format": "date" }, "value": { "type": [ "number", "null" ] } }, "additionalProperties": false }, "description": "Observations in the requested period, oldest first." }, "frequency": { "type": "string", "description": "How often new observations occur." }, "page_link": { "type": "string", "description": "FRED page for this indicator." }, "series_id": { "type": "string", "description": "FRED series identifier.", "x-fous-developer": true }, "latest_date": { "type": [ "string", "null" ], "format": "date", "description": "Date of the latest available value in the requested period." }, "latest_value": { "type": [ "number", "null" ], "description": "Most recent available value in the requested period." }, "source_agency": { "type": [ "string", "null" ], "description": "Organization that supplies the series." }, "indicator_title": { "type": "string", "description": "Name of the economic indicator." }, "seasonally_adjusted": { "type": "boolean", "description": "Whether the series is seasonally adjusted." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
fred.stlouisfed.org/get_economic_indicator- Returns
- indicator title, units, frequency, seasonal adjustment, source agency, latest value and date, observations
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method fred.stlouisfed.org/get_economic_indicator with the inputs above.
Ask your agent
- What is the latest US unemployment rate and how has it trended since 2021?
- Show me CPI inflation year over year percent change from 2019 to today
- Get the monthly federal funds effective rate observations for the last three years
- I need GDP quarterly values with source agency and seasonal adjustment details for 2022 onward
- Pull the 10-year Treasury yield series from FRED with units and frequency for 2020-01-01 through 2024-12-31
See more
All FRED methodsSearches FRED economic series by topic, ordered by popularity, and returns each series' coverage dates, units, frequency and last update. FRED does not publish a popularity score on these pages, so it is null.
fred.stlouisfed.org/search_indicatorsReturns seven key economic indicators for a country from its public Trading Economics overview: GDP growth rate, inflation rate, interest rate, unemployment rate, government debt to GDP, currency and stock market. Indicators absent from the overview are null; the US dollar index is not reported as a USD exchange rate.
tradingeconomics.com/get_country_overviewGets World Economic Outlook figures for a country or region by year, labelled as actual or forecast. Measures the IMF does not publish for a year are null.
imf.org/get_economic_forecastCompares the latest reported value of an economic indicator across countries in a region, highest first. World includes all listed countries; Australia uses the Oceania region.
tradingeconomics.com/list_countries_by_indicatorReturns Freddie Mac's U.S. 30-year and 15-year fixed mortgage rates for the latest survey or a chosen date, with weekly and year-ago changes, and optionally a weekly history for a date range.
freddiemac.com/get_mortgage_ratesRanks countries by a World Economic Outlook indicator for a chosen year, excluding regional and group totals and countries without a value.
imf.org/list_country_rankingsGets decades of yearly commodity or stock-index price history from Macrotrends: yearly average, open, high, low, close, annual change and inflation-adjusted value for gold, silver, crude oil, natural gas, copper, Dow Jones, S&P 500 and Nasdaq. The current year may be incomplete.
macrotrends.net/get_long_term_price_historyFinds the Our World in Data chart that best matches a statistic and returns its country-by-year numeric values, definition and source.
ourworldindata.org/get_statistic