scientific-skills/usfiscaldata/references/parameters.md
All parameters are optional. Combine them with & in the URL query string.
fields= — Select ColumnsReturns only the specified fields. Accepts a comma-separated list of field names.
?fields=record_date,tot_pub_debt_out_amt
?fields=country_currency_desc,exchange_rate,record_date
When the fields= parameter excludes some non-numeric fields, the API automatically groups by the remaining fields and sums numeric values.
# Returns sum of transaction amounts grouped by record_date and transaction_type
params = {
"fields": "record_date,transaction_type,transaction_today_amt"
}
filter= — Filter RecordsNarrow results by field values. Multiple field filters are comma-separated in a single filter= parameter.
filter=<field>:<operator>:<value>
filter=<field>:<operator>:<value>,<field>:<operator>:<value>
| Operator | Meaning | Example |
|---|---|---|
eq | Equal to | filter=record_date:eq:2024-03-31 |
lt | Less than | filter=exchange_rate:lt:1.5 |
lte | Less than or equal | filter=record_date:lte:2024-12-31 |
gt | Greater than | filter=record_fiscal_year:gt:2010 |
gte | Greater than or equal | filter=record_date:gte:2024-01-01 |
in | Contained in set | filter=country_currency_desc:in:(Canada-Dollar,Mexico-Peso) |
Use YYYY-MM-DD format for dates:
filter=record_date:gte:2024-01-01
filter=record_date:gte:2023-01-01,record_date:lte:2023-12-31
filter=country_currency_desc:in:(Canada-Dollar,Mexico-Peso),record_date:gte:2024-01-01
Most endpoints have these standard date fields:
record_date — The date of the record (YYYY-MM-DD)record_fiscal_year — Fiscal year (e.g., 2024)record_fiscal_quarter — Fiscal quarter (1-4)record_calendar_year — Calendar yearrecord_calendar_month — Calendar month (01-12)sort= — Sort ResultsSort by one or more fields. Prefix - for descending order.
?sort=-record_date # Most recent first
?sort=record_date # Oldest first
?sort=-record_fiscal_year,-record_fiscal_quarter # Nested sort
Default: Sorted by the first column (usually record_date ascending).
format= — Output Format?format=json # Default
?format=csv # Comma-separated values
?format=xml # XML
When using CSV or XML format, the response is the raw file content rather than JSON.
page[size]= and page[number]= — PaginationControls how many records per page and which page to return.
?page[size]=100&page[number]=1 # Default (100 records, page 1)
?page[size]=10000 # Large page to reduce requests
?page[number]=5&page[size]=50 # 50 records starting at page 5
meta.total-pages in the response to know how many pages existmeta.total-count for total record countimport requests
import pandas as pd
def fetch_all(endpoint, params=None):
"""Fetch all pages and return as DataFrame."""
params = dict(params or {})
params["page[size]"] = 10000
params["page[number]"] = 1
base = "https://api.fiscaldata.treasury.gov/services/api/fiscal_service"
all_data = []
while True:
resp = requests.get(f"{base}{endpoint}", params=params)
result = resp.json()
all_data.extend(result["data"])
meta = result["meta"]
if params["page[number]"] >= meta["total-pages"]:
break
params["page[number]"] += 1
return pd.DataFrame(all_data)
params = {
"fields": "country_currency_desc,exchange_rate,record_date",
"filter": "country_currency_desc:in:(Canada-Dollar,Euro),record_date:gte:2020-01-01",
"sort": "-record_date",
"format": "json",
"page[size]": 100,
"page[number]": 1
}
resp = requests.get(
"https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v1/accounting/od/rates_of_exchange",
params=params
)