Skip to content
Back to skills

Alterlab Usfiscaldata

ASecurity

Queries the U.S. Treasury Fiscal Data API across 50+ datasets and roughly 180 data tables (no API key required) for federal financial data on national debt, government spending, revenue, interest rates, exchange rates, and savings bonds. Use when working with U.S. federal fiscal data, national debt tracking (Debt to the Penny), Daily Treasury Statements, Monthly Treasury Statements, Treasury securities auctions, interest rates on Treasury securities, foreign exchange rates, savings bonds, or ...

  • 68 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 28, 2026
ai-agentspythongobashapi

Works with

  • api

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-usfiscaldata --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Alterlab Usfiscaldata?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Alterlab Usfiscaldata
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alterlab-ieu-alterlab-usfiscaldata/badge)](https://www.skillsdirectory.com/skills/alterlab-ieu-alterlab-usfiscaldata)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: alterlab-usfiscaldata
description: Queries the U.S. Treasury Fiscal Data API across 50+ datasets and roughly 180 data tables (no API key required) for federal financial data on national debt, government spending, revenue, interest rates, exchange rates, and savings bonds. Use when working with U.S. federal fiscal data, national debt tracking (Debt to the Penny), Daily Treasury Statements, Monthly Treasury Statements, Treasury securities auctions, interest rates on Treasury securities, foreign exchange rates, savings bonds, or any U.S. government financial statistics. Part of the AlterLab Academic Skills suite.
license: MIT
allowed-tools: Read WebFetch Bash(curl:*) Bash(python:*)
compatibility: No API key or registration required. Queries the open U.S. Treasury Fiscal Data REST API; needs network access.
metadata:
    skill-author: AlterLab
    version: "1.1.0"
    last_updated: "2026-09-23"
---

# U.S. Treasury Fiscal Data API

Free, open REST API from the U.S. Department of the Treasury for federal financial data. No API key or registration required.

**Base URL:** `https://api.fiscaldata.treasury.gov/services/api/fiscal_service`

The catalog held 56 datasets / 183 data tables when checked on 2026-09-23; browse https://fiscaldata.treasury.gov/datasets/ for the current list and each table's endpoint version (v1 or v2).

## When to Use This Skill

- Federal debt (Debt to the Penny, historical debt outstanding, schedules of federal debt)
- Daily and Monthly Treasury Statements: operating cash balance, deposits/withdrawals, receipts, outlays, deficit
- Treasury securities auctions (results and upcoming), average interest rates, interest expense
- Treasury Reporting Rates of Exchange, savings bonds, I bond rates

### Does NOT Trigger

| Scenario | Use Instead |
|----------|-------------|
| Market yields (DGS10), Fed funds, or macro series by FRED ID with transformations | `alterlab-fred` |
| Market quotes or daily FX/crypto prices from a commercial feed | `alterlab-alpha-vantage` |
| Hedge-fund leverage or repo-market aggregates (Form PF, FICC) | `alterlab-hedgefund-monitor` |
| Company filings and financial statements from SEC EDGAR | `alterlab-edgartools` |

## Quick Start

```python
import requests
import pandas as pd

BASE_URL = "https://api.fiscaldata.treasury.gov/services/api/fiscal_service"

# Get the current national debt (Debt to the Penny)
resp = requests.get(f"{BASE_URL}/v2/accounting/od/debt_to_penny", params={
    "sort": "-record_date",
    "page[size]": 1
})
data = resp.json()["data"][0]
print(f"Total public debt as of {data['record_date']}: ${float(data['tot_pub_debt_out_amt']):,.0f}")
```

```python
# Get Treasury exchange rates for recent quarters
resp = requests.get(f"{BASE_URL}/v1/accounting/od/rates_of_exchange", params={
    "fields": "country_currency_desc,exchange_rate,record_date",
    "filter": "record_date:gte:2024-01-01",
    "sort": "-record_date",
    "page[size]": 100
})
df = pd.DataFrame(resp.json()["data"])
```

## Authentication

None required. The API is fully open and free.

## Core Parameters

| Parameter | Example | Description |
|-----------|---------|-------------|
| `fields=` | `fields=record_date,tot_pub_debt_out_amt` | Select specific columns |
| `filter=` | `filter=record_date:gte:2024-01-01` | Filter records |
| `sort=` | `sort=-record_date` | Sort (prefix `-` for descending) |
| `format=` | `format=json` | Output format: `json`, `csv`, `xml` |
| `page[size]=` | `page[size]=100` | Records per page (default 100, max 10000) |
| `page[number]=` | `page[number]=2` | Page index (starts at 1) |

**Filter operators:** `lt`, `lte`, `gt`, `gte`, `eq`, `in`

```python
# Multiple filters separated by comma
"filter=country_currency_desc:in:(Canada-Dollar,Mexico-Peso),record_date:gte:2024-01-01"
```

## Key Datasets & Endpoints

### Debt

| Dataset | Endpoint | Frequency |
|---------|----------|-----------|
| Debt to the Penny | `/v2/accounting/od/debt_to_penny` | Daily |
| Historical Debt Outstanding | `/v2/accounting/od/debt_outstanding` | Annual |
| Schedules of Federal Debt | `/v1/accounting/od/schedules_fed_debt` | Monthly |

### Daily & Monthly Statements

| Dataset | Endpoint | Frequency |
|---------|----------|-----------|
| DTS Operating Cash Balance | `/v1/accounting/dts/operating_cash_balance` | Daily |
| DTS Deposits & Withdrawals | `/v1/accounting/dts/deposits_withdrawals_operating_cash` | Daily |
| Monthly Treasury Statement (MTS) | `/v1/accounting/mts/mts_table_1` (16 tables) | Monthly |

### Interest Rates & Exchange

| Dataset | Endpoint | Frequency |
|---------|----------|-----------|
| Average Interest Rates on Treasury Securities | `/v2/accounting/od/avg_interest_rates` | Monthly |
| Treasury Reporting Rates of Exchange | `/v1/accounting/od/rates_of_exchange` | Quarterly |
| Interest Expense on Public Debt | `/v2/accounting/od/interest_expense` | Monthly |

### Securities & Auctions

| Dataset | Endpoint | Frequency |
|---------|----------|-----------|
| Treasury Securities Auctions Data | `/v1/accounting/od/auctions_query` | As Needed |
| Treasury Securities Upcoming Auctions | `/v1/accounting/od/upcoming_auctions` | As Needed |
| Average Interest Rates | `/v2/accounting/od/avg_interest_rates` | Monthly |

### Savings Bonds

| Dataset | Endpoint | Frequency |
|---------|----------|-----------|
| I Bonds Interest Rates | `/v1/accounting/od/i_bonds_interest_rates` | Semi-Annual |
| U.S. Treasury Savings Bonds: Issues, Redemptions & Maturities | `/v1/accounting/od/savings_bonds_report` | Monthly |

## Response Structure

```json
{
  "data": [...],
  "meta": {
    "count": 100,
    "total-count": 3790,
    "total-pages": 38,
    "labels": {"field_name": "Human Readable Label"},
    "dataTypes": {"field_name": "STRING|NUMBER|DATE|CURRENCY"},
    "dataFormats": {"field_name": "String|10.2|YYYY-MM-DD"}
  },
  "links": {"self": "...", "first": "...", "prev": null, "next": "...", "last": "..."}
}
```

**Note:** All values are returned as strings. Convert as needed (e.g., `float()`, `pd.to_datetime()`). Null values appear as the string `"null"`.

## Common Patterns

### Load all pages into a DataFrame

```python
def fetch_all_pages(endpoint, params=None):
    params = dict(params or {})
    params["page[size]"] = 10000  # the API maximum; larger values return HTTP 400
    params["page[number]"] = 1
    rows = []
    while True:
        resp = requests.get(f"{BASE_URL}{endpoint}", params=params, timeout=60)
        resp.raise_for_status()
        result = resp.json()
        rows.extend(result["data"])
        if params["page[number]"] >= result["meta"]["total-pages"]:
            break
        params["page[number]"] += 1
    return pd.DataFrame(rows)
```

### Aggregation (automatic sum)

Omitting grouping fields triggers automatic aggregation:

```python
# Sum all deposits/withdrawals by record_date and transaction type
resp = requests.get(f"{BASE_URL}/v1/accounting/dts/deposits_withdrawals_operating_cash", params={
    "fields": "record_date,transaction_type,transaction_today_amt"
})
```

## Reference Files

- **[api-basics.md](references/api-basics.md)** — URL structure, HTTP methods, versioning, data types
- **[parameters.md](references/parameters.md)** — All parameters with detailed examples and edge cases
- **[datasets-debt.md](references/datasets-debt.md)** — Debt datasets: Debt to the Penny, Historical Debt, Schedules of Federal Debt, TROR
- **[datasets-fiscal.md](references/datasets-fiscal.md)** — Daily Treasury Statement, Monthly Treasury Statement, revenue, spending
- **[datasets-interest-rates.md](references/datasets-interest-rates.md)** — Average interest rates, exchange rates, TIPS/CPI, certified interest rates
- **[datasets-securities.md](references/datasets-securities.md)** — Treasury auctions, savings bonds, SLGS, buybacks
- **[response-format.md](references/response-format.md)** — Response objects, error handling, pagination, response codes
- **[examples.md](references/examples.md)** — Python, R, and pandas code examples for common use cases

Cite the dataset name, table, and retrieval date (Fiscal Data values are revised; keep the `record_date` you used).

Part of the AlterLab Academic Skills suite.

Files in this skill

  • SKILL.md6.4 KB
  • references/api-basics.md2.8 KB
  • references/datasets-debt.md5 KB
  • references/datasets-fiscal.md7 KB
  • references/datasets-interest-rates.md5.9 KB
  • references/datasets-securities.md6.6 KB
  • references/examples.md9.3 KB
  • references/parameters.md4.3 KB
  • references/response-format.md4.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.