# FRED API

> FRED returns economic indicators and observations as a workflow and API.

FRED returns observations, latest values, and source details for an indicator or series ID; dates and transformations are optional. Search indicators returns matching series and coverage metadata; it needs an economic topic to search.

- Page: https://fous.com/tools/fred
- Handle: `@fred`
- Category: [Finance](https://fous.com/tools/category/finance)
- Source website: https://fred.stlouisfed.org
- Last verified: Sep 28, 2026

## Methods

### Get economic indicator

Operation `get_economic_indicator`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a FRED economic series by name or series ID, with its observations, latest value, and source details. Public series only.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `change` | string | no | `"percent_change_from_year_ago"` | Value transformation, for example percent_change_from_year_ago; defaults to none. |
| `end_date` | string | no | `"2025-01-01"` | Last observation date, for example 2026-09-28. Defaults to today. |
| `indicator` | string | yes | `"UNRATE"` | Economic figure in plain words or a FRED series ID, for example US unemployment rate or UNRATE. |
| `start_date` | string | no | `"2024-01-01"` | First observation date, for example 2021-01-01. Defaults to five years ago. |

**Input schema**

```json
{
  "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.",
      "examples": [
        "percent_change_from_year_ago"
      ]
    },
    "end_date": {
      "type": "string",
      "format": "date",
      "description": "Last observation date, for example 2026-09-28. Defaults to today.",
      "examples": [
        "2025-01-01",
        "2025-04-01"
      ]
    },
    "indicator": {
      "type": "string",
      "description": "Economic figure in plain words or a FRED series ID, for example US unemployment rate or UNRATE.",
      "examples": [
        "UNRATE",
        "US unemployment rate",
        "30-year mortgage rate"
      ]
    },
    "start_date": {
      "type": "string",
      "format": "date",
      "description": "First observation date, for example 2021-01-01. Defaults to five years ago.",
      "examples": [
        "2024-01-01",
        "2025-01-01"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "change": "percent_change_from_year_ago",
      "end_date": "2025-01-01",
      "indicator": "UNRATE",
      "start_date": "2024-01-01"
    },
    {
      "indicator": "US unemployment rate"
    },
    {
      "end_date": "2025-04-01",
      "indicator": "30-year mortgage rate",
      "start_date": "2025-01-01"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `units` | string | `"Percent change from year ago"` | Units of the returned values, in words. |
| `values` | array |  | Observations in the requested period, oldest first. |
| `values[].date` | string | `"2024-01-01"` |  |
| `values[].value` | number or null | `5.71429` |  |
| `frequency` | string | `"Monthly"` | How often new observations occur. |
| `page_link` | string | `"https://fred.stlouisfed.org/series/UNRATE"` | FRED page for this indicator. |
| `series_id` | string | `"UNRATE"` | FRED series identifier. |
| `latest_date` | string or null | `"2025-01-01"` | Date of the latest available value in the requested period. |
| `latest_value` | number or null | `8.10811` | Most recent available value in the requested period. |
| `source_agency` | string or null | `"U.S. Bureau of Labor Statistics"` | Organization that supplies the series. |
| `indicator_title` | string | `"Unemployment Rate"` | Name of the economic indicator. |
| `seasonally_adjusted` | boolean | `true` | Whether the series is seasonally adjusted. |

**Example input**

```json
{
  "change": "percent_change_from_year_ago",
  "end_date": "2025-01-01",
  "indicator": "UNRATE",
  "start_date": "2024-01-01"
}
```

**Example output**

```json
{
  "units": "Percent change from year ago",
  "values": [
    {
      "date": "2024-01-01",
      "value": 5.71429
    },
    {
      "date": "2024-02-01",
      "value": 8.33333
    },
    {
      "date": "2024-03-01",
      "value": 11.42857
    }
  ],
  "frequency": "Monthly",
  "page_link": "https://fred.stlouisfed.org/series/UNRATE",
  "series_id": "UNRATE",
  "latest_date": "2025-01-01",
  "latest_value": 8.10811,
  "source_agency": "U.S. Bureau of Labor Statistics",
  "indicator_title": "Unemployment Rate",
  "seasonally_adjusted": true
}
```

### Search indicators

Operation `search_indicators`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Search FRED economic series by topic, ordered by popularity, with coverage dates and metadata. FRED does not publish a numeric popularity score on these public pages.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `query` | string | yes | `"home prices in Texas"` | Economic topic to search, for example home prices in Texas. |
| `max_results` | integer | no | `5` | Most popular matching series to return, for example 20 (up to 100). |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Economic topic to search, for example home prices in Texas.",
      "examples": [
        "home prices in Texas",
        "zxywqtransmogrificationzz99",
        "unemployment rate"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Most popular matching series to return, for example 20 (up to 100).",
      "x-fous-developer": true,
      "examples": [
        5,
        20,
        65
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "query": "home prices in Texas",
      "max_results": 5
    },
    {
      "query": "zxywqtransmogrificationzz99",
      "max_results": 20
    },
    {
      "query": "unemployment rate",
      "max_results": 65
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `series` | array |  | Matching FRED series, most popular first. |
| `series[].title` | string | `"All-Transactions House Price Index for Austin-Round Rock-Georgetown, TX (MSA)"` | Series title. |
| `series[].units` | string or null | `"Index 1995:Q1=100"` | Units in words. |
| `series[].frequency` | string or null | `"Quarterly"` | How often the series is reported. |
| `series[].last_date` | string or null | `"2026-04-01"` | Last date covered. |
| `series[].first_date` | string or null | `"1977-04-01"` | First date covered. |
| `series[].fred_page_link` | string | `"https://fred.stlouisfed.org/series/ATNHPIUS12420Q"` | FRED page for this series. |
| `series[].fred_series_id` | string | `"ATNHPIUS12420Q"` | FRED series identifier. |
| `series[].popularity_score` | integer or null |  | FRED popularity score when publicly available; null when the public pages do not expose it. |
| `series[].last_updated_date` | string or null | `"2026-08-25"` | Date the series was last updated. |
| `series[].seasonally_adjusted` | boolean or null | `false` | Whether the series is seasonally adjusted. |

**Example input**

```json
{
  "query": "home prices in Texas",
  "max_results": 5
}
```

**Example output**

```json
{
  "series": [
    {
      "title": "All-Transactions House Price Index for Austin-Round Rock-Georgetown, TX (MSA)",
      "units": "Index 1995:Q1=100",
      "frequency": "Quarterly",
      "last_date": "2026-04-01",
      "first_date": "1977-04-01",
      "fred_page_link": "https://fred.stlouisfed.org/series/ATNHPIUS12420Q",
      "fred_series_id": "ATNHPIUS12420Q",
      "popularity_score": null,
      "last_updated_date": "2026-08-25",
      "seasonally_adjusted": false
    },
    {
      "title": "All-Transactions House Price Index for Texas",
      "units": "Index 1980:Q1=100",
      "frequency": "Quarterly",
      "last_date": "2026-04-01",
      "first_date": "1975-01-01",
      "fred_page_link": "https://fred.stlouisfed.org/series/TXSTHPI",
      "fred_series_id": "TXSTHPI",
      "popularity_score": null,
      "last_updated_date": "2026-08-25",
      "seasonally_adjusted": false
    },
    {
      "title": "All-Transactions House Price Index for Houston-The Woodlands-Sugar Land, TX (MSA)",
      "units": "Index 1995:Q1=100",
      "frequency": "Quarterly",
      "last_date": "2026-04-01",
      "first_date": "1976-01-01",
      "fred_page_link": "https://fred.stlouisfed.org/series/ATNHPIUS26420Q",
      "fred_series_id": "ATNHPIUS26420Q",
      "popularity_score": null,
      "last_updated_date": "2026-08-25",
      "seasonally_adjusted": false
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@fred",
  "visibility": "public",
  "operation": "get_economic_indicator",
  "version": 1,
  "input": {
    "change": "percent_change_from_year_ago",
    "end_date": "2025-01-01",
    "indicator": "UNRATE",
    "start_date": "2024-01-01"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@fred\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_economic_indicator\",\n  \"version\": 1,\n  \"input\": {\n    \"change\": \"percent_change_from_year_ago\",\n    \"end_date\": \"2025-01-01\",\n    \"indicator\": \"UNRATE\",\n    \"start_date\": \"2024-01-01\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@fred",
  "visibility": "public",
  "operation": "get_economic_indicator",
  "version": 1,
  "input": {
    "change": "percent_change_from_year_ago",
    "end_date": "2025-01-01",
    "indicator": "UNRATE",
    "start_date": "2024-01-01"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/fred`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_economic_indicator`: Get economic indicator. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_indicators`: Search indicators. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-fred https://api.fous.com/mcp/tools/fred --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Track an indicator over a selected period
- Find economic series related to a business topic
- Check an indicator’s reporting frequency and source agency
- Review a series’ coverage dates and update date
- Compare observations across dates

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this FRED tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a FRED account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from fred.stlouisfed.org when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 28, 2026.

### What is the latest value for an economic indicator?

Get economic indicator returns the latest available value in the requested period.

### Which series cover a topic like home prices in Texas?

Search indicators finds matching series and returns their coverage dates and metadata.

### How often is an indicator reported?

Get economic indicator returns the series frequency.

## Related

- [Trading Economics API](https://fous.com/tools/trading-economics.md): Trading Economics provides economic indicators, market data and country statistics, including country overviews, latest reported country comparisons and current commodity prices reflecting reported trading days.
- [IMF API](https://fous.com/tools/imf.md): IMF economic data provides country and regional forecasts with actual or forecast labels, and country rankings by World Economic Outlook indicators, excluding groups and missing values.
- [Investing.com API](https://fous.com/tools/investing-com.md): Investing.com provides financial markets data and news, economic releases up to 31 days, and current commodity prices and government bond yields, which may be delayed or indicative.
- [Yahoo Finance API](https://fous.com/tools/yahoo-finance.md): Yahoo Finance provides quotes, movers, company financials, analyst ratings, earnings, news, and up to 5,000 price rows with adjusted returns; prices may be delayed.
- [SEC EDGAR API](https://fous.com/tools/sec-edgar.md): SEC EDGAR provides filings, annual and quarterly financials, exact-phrase matches, up to 200 insider trades, and quarterly 13F manager holdings; older filings appear when available.
- [Federal Register API](https://fous.com/tools/federal-register.md): Search United States federal rules, proposed rules, notices, and presidential documents.
- [Forex Factory API](https://fous.com/tools/forex-factory.md): Economic calendar and foreign exchange market news.
- [Freddie Mac API](https://fous.com/tools/freddie-mac.md): Weekly U.S. mortgage rate averages from Freddie Mac’s Primary Mortgage Market Survey.
- [All Finance tools](https://fous.com/tools/category/finance)
