10 KiB
FRED Categories Endpoints
Categories endpoints provide access to the hierarchical organization of economic data series.
Table of Contents
- fred/category - Get a category
- fred/category/children - Get child categories
- fred/category/related - Get related categories
- fred/category/series - Get series in category
- fred/category/tags - Get category tags
- fred/category/related_tags - Get related tags
Category Hierarchy
FRED organizes data in a hierarchical category structure. The root category has category_id=0.
Top-level categories (children of root):
- Money, Banking, & Finance (32991)
- Population, Employment, & Labor Markets (10)
- National Accounts (32992)
- Production & Business Activity (32455)
- Prices (32455)
- International Data (32263)
- U.S. Regional Data (3008)
- Academic Data (33060)
fred/category
Get a category.
URL: https://api.stlouisfed.org/fred/category
Required Parameters
| Parameter | Type | Description |
|---|---|---|
api_key |
string | 32-character API key |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
category_id |
integer | 0 | Category ID; 0 = root |
file_type |
string | xml | xml or json |
Example
# Get root category
response = requests.get(
"https://api.stlouisfed.org/fred/category",
params={
"api_key": API_KEY,
"category_id": 0,
"file_type": "json"
}
)
# Get Trade Balance category
response = requests.get(
"https://api.stlouisfed.org/fred/category",
params={
"api_key": API_KEY,
"category_id": 125,
"file_type": "json"
}
)
Response
{
"categories": [
{
"id": 125,
"name": "Trade Balance",
"parent_id": 13
}
]
}
fred/category/children
Get child categories for a category.
URL: https://api.stlouisfed.org/fred/category/children
Required Parameters
| Parameter | Type | Description |
|---|---|---|
api_key |
string | 32-character API key |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
category_id |
integer | 0 | Parent category ID |
file_type |
string | xml | xml or json |
realtime_start |
date | today | YYYY-MM-DD |
realtime_end |
date | today | YYYY-MM-DD |
Example
# Get children of International Trade category (13)
response = requests.get(
"https://api.stlouisfed.org/fred/category/children",
params={
"api_key": API_KEY,
"category_id": 13,
"file_type": "json"
}
)
Response
{
"categories": [
{"id": 16, "name": "Exports", "parent_id": 13},
{"id": 17, "name": "Imports", "parent_id": 13},
{"id": 3000, "name": "Income Payments & Receipts", "parent_id": 13},
{"id": 125, "name": "Trade Balance", "parent_id": 13},
{"id": 127, "name": "U.S. International Finance", "parent_id": 13}
]
}
fred/category/related
Get related categories for a category.
URL: https://api.stlouisfed.org/fred/category/related
Required Parameters
| Parameter | Type | Description |
|---|---|---|
api_key |
string | 32-character API key |
category_id |
integer | Category ID |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
file_type |
string | xml | xml or json |
realtime_start |
date | today | YYYY-MM-DD |
realtime_end |
date | today | YYYY-MM-DD |
Note: Related categories represent one-way relationships that exist outside the standard parent-child hierarchy. Most categories do not have related categories.
Example
response = requests.get(
"https://api.stlouisfed.org/fred/category/related",
params={
"api_key": API_KEY,
"category_id": 32073,
"file_type": "json"
}
)
Response
{
"categories": [
{"id": 149, "name": "Arkansas", "parent_id": 27281},
{"id": 150, "name": "Illinois", "parent_id": 27281}
]
}
fred/category/series
Get the series in a category.
URL: https://api.stlouisfed.org/fred/category/series
Required Parameters
| Parameter | Type | Description |
|---|---|---|
api_key |
string | 32-character API key |
category_id |
integer | Category ID |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
file_type |
string | xml | xml or json |
realtime_start |
date | today | YYYY-MM-DD |
realtime_end |
date | today | YYYY-MM-DD |
limit |
integer | 1000 | 1-1000 |
offset |
integer | 0 | Pagination offset |
order_by |
string | series_id | Sort field |
sort_order |
string | asc | asc or desc |
filter_variable |
string | - | frequency, units, seasonal_adjustment |
filter_value |
string | - | Filter value |
tag_names |
string | - | Semicolon-delimited tags |
exclude_tag_names |
string | - | Tags to exclude |
Order By Options
series_idtitleunitsfrequencyseasonal_adjustmentrealtime_startrealtime_endlast_updatedobservation_startobservation_endpopularitygroup_popularity
Example
# Get series in Trade Balance category with monthly frequency
response = requests.get(
"https://api.stlouisfed.org/fred/category/series",
params={
"api_key": API_KEY,
"category_id": 125,
"file_type": "json",
"filter_variable": "frequency",
"filter_value": "Monthly",
"order_by": "popularity",
"sort_order": "desc",
"limit": 10
}
)
Response
{
"count": 156,
"offset": 0,
"limit": 10,
"seriess": [
{
"id": "BOPGSTB",
"title": "Trade Balance: Goods and Services, Balance of Payments Basis",
"observation_start": "1992-01-01",
"observation_end": "2023-06-01",
"frequency": "Monthly",
"units": "Millions of Dollars",
"seasonal_adjustment": "Seasonally Adjusted",
"popularity": 78
}
]
}
fred/category/tags
Get the tags for a category.
URL: https://api.stlouisfed.org/fred/category/tags
Required Parameters
| Parameter | Type | Description |
|---|---|---|
api_key |
string | 32-character API key |
category_id |
integer | Category ID |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
file_type |
string | xml | xml or json |
realtime_start |
date | today | YYYY-MM-DD |
realtime_end |
date | today | YYYY-MM-DD |
tag_names |
string | - | Semicolon-delimited tags |
tag_group_id |
string | - | freq, gen, geo, geot, rls, seas, src |
search_text |
string | - | Search tag names |
limit |
integer | 1000 | 1-1000 |
offset |
integer | 0 | Pagination offset |
order_by |
string | series_count | series_count, popularity, created, name, group_id |
sort_order |
string | asc | asc or desc |
Tag Group IDs
| ID | Description |
|---|---|
| freq | Frequency |
| gen | General |
| geo | Geography |
| geot | Geography Type |
| rls | Release |
| seas | Seasonal Adjustment |
| src | Source |
Example
# Get frequency tags for Trade Balance category
response = requests.get(
"https://api.stlouisfed.org/fred/category/tags",
params={
"api_key": API_KEY,
"category_id": 125,
"file_type": "json",
"tag_group_id": "freq"
}
)
Response
{
"tags": [
{"name": "monthly", "group_id": "freq", "series_count": 100},
{"name": "quarterly", "group_id": "freq", "series_count": 45},
{"name": "annual", "group_id": "freq", "series_count": 30}
]
}
fred/category/related_tags
Get related tags for a category.
URL: https://api.stlouisfed.org/fred/category/related_tags
Required Parameters
| Parameter | Type | Description |
|---|---|---|
api_key |
string | 32-character API key |
category_id |
integer | Category ID |
tag_names |
string | Semicolon-delimited tag names |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
file_type |
string | xml | xml or json |
realtime_start |
date | today | YYYY-MM-DD |
realtime_end |
date | today | YYYY-MM-DD |
exclude_tag_names |
string | - | Tags to exclude |
tag_group_id |
string | - | freq, gen, geo, geot, rls, seas, src |
search_text |
string | - | Search tag names |
limit |
integer | 1000 | 1-1000 |
offset |
integer | 0 | Pagination offset |
order_by |
string | series_count | Ordering field |
sort_order |
string | asc | asc or desc |
Example
# Get tags related to 'services' and 'quarterly' in Trade Balance category
response = requests.get(
"https://api.stlouisfed.org/fred/category/related_tags",
params={
"api_key": API_KEY,
"category_id": 125,
"tag_names": "services;quarterly",
"file_type": "json"
}
)
Common Category IDs
| ID | Name |
|---|---|
| 0 | Root (all categories) |
| 32991 | Money, Banking, & Finance |
| 10 | Population, Employment, & Labor Markets |
| 32992 | National Accounts |
| 1 | Production & Business Activity |
| 32455 | Prices |
| 32263 | International Data |
| 3008 | U.S. Regional Data |
| 33060 | Academic Data |
| 53 | Gross Domestic Product |
| 33490 | Interest Rates |
| 32145 | Exchange Rates |
| 12 | Consumer Price Indexes (CPI) |
| 2 | Unemployment |
Navigating Categories
def get_category_tree(api_key, category_id=0, depth=0, max_depth=2):
"""Recursively get category tree."""
if depth > max_depth:
return None
# Get children
response = requests.get(
"https://api.stlouisfed.org/fred/category/children",
params={
"api_key": api_key,
"category_id": category_id,
"file_type": "json"
}
)
data = response.json()
tree = []
for cat in data.get("categories", []):
node = {
"id": cat["id"],
"name": cat["name"],
"children": get_category_tree(api_key, cat["id"], depth + 1, max_depth)
}
tree.append(node)
return tree
# Get first 2 levels of category tree
tree = get_category_tree(API_KEY, depth=0, max_depth=1)