443 lines
10 KiB
Markdown
443 lines
10 KiB
Markdown
# FRED Categories Endpoints
|
|
|
|
Categories endpoints provide access to the hierarchical organization of economic data series.
|
|
|
|
## Table of Contents
|
|
|
|
1. [fred/category](#fredcategory) - Get a category
|
|
2. [fred/category/children](#fredcategorychildren) - Get child categories
|
|
3. [fred/category/related](#fredcategoryrelated) - Get related categories
|
|
4. [fred/category/series](#fredcategoryseries) - Get series in category
|
|
5. [fred/category/tags](#fredcategorytags) - Get category tags
|
|
6. [fred/category/related_tags](#fredcategoryrelated_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
|
|
|
|
```python
|
|
# 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
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```python
|
|
# 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
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```python
|
|
response = requests.get(
|
|
"https://api.stlouisfed.org/fred/category/related",
|
|
params={
|
|
"api_key": API_KEY,
|
|
"category_id": 32073,
|
|
"file_type": "json"
|
|
}
|
|
)
|
|
```
|
|
|
|
### Response
|
|
|
|
```json
|
|
{
|
|
"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_id`
|
|
- `title`
|
|
- `units`
|
|
- `frequency`
|
|
- `seasonal_adjustment`
|
|
- `realtime_start`
|
|
- `realtime_end`
|
|
- `last_updated`
|
|
- `observation_start`
|
|
- `observation_end`
|
|
- `popularity`
|
|
- `group_popularity`
|
|
|
|
### Example
|
|
|
|
```python
|
|
# 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
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```python
|
|
# 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
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```python
|
|
# 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
|
|
|
|
```python
|
|
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)
|
|
```
|