boz APIboz.zm ↗
Access structured treasury bill auction data from the Bank of Zambia. Covers 91, 182, 273, and 364-day tenors with ISINs, discount rates, yield rates, and PDF URLs from 2014.
What is the boz API?
The boz.zm API exposes treasury bill auction results from the Bank of Zambia across two endpoints, returning structured data including tender numbers, ISINs, discount rates, yield rates, auction dates, and PDF document URLs. The get_tbill_auction_data endpoint covers all four standard tenors — 91, 182, 273, and 364 days — with records spanning from 2014 to the present, queryable by year or tenor.
curl -X GET 'https://api.parse.bot/scraper/82d5a744-254f-4636-a255-bcae0d6624e5/get_tbill_auction_data?year=2026&tenor=91' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace boz-zm-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Bank of Zambia Treasury Bills — fetch auction results and tender PDFs."""
from parse_apis.bank_of_zambia_treasury_bills_api import (
BozTreasuryBills,
Tenor,
InvalidTenor,
)
client = BozTreasuryBills()
# List 91-day auction results for 2026, capped at 5 items.
for result in client.auctionresults.list(year="2026", tenor=Tenor.DAYS_91, limit=5):
print(result.tender_number, result.auction_date, result.yield_rate)
# Drill into 182-day results to inspect one auction.
auction = client.auctionresults.list(year="2026", tenor=Tenor.DAYS_182, limit=1).first()
if auction:
print(auction.tender_number, auction.isin, auction.discount_rate)
# Retrieve PDF collection for the current year.
try:
pdfs = client.tenderpdfcollections.get(year="2026")
print(pdfs.total_pdfs, list(pdfs.pdfs_by_year.keys()))
except InvalidTenor as exc:
print(f"Invalid tenor: {exc.tenor}")
print("exercised: auctionresults.list / tenderpdfcollections.get")
Retrieve treasury bill auction results for a specified tenor (91, 182, 273, or 364 days). Returns auction dates, tender numbers, ISINs, discount rates, yield rates, and PDF URLs. Data availability: 2026 records include full rate data (ISIN, discount rate, yield rate); older migrated records (2014-2025) include auction date, tender number, and PDF URL but may lack rate fields. Results sorted by auction date descending. Paginates through all matching records automatically.
| Param | Type | Description |
|---|---|---|
| year | string | Year(s) to retrieve data for. Single year (e.g. '2026'), comma-separated years (e.g. '2025,2026'), or 'all' for all available years (2014-present). |
| tenor | string | Treasury bill tenor in days. |
{
"type": "object",
"fields": {
"tenor": "string indicating the tenor queried (e.g. '91_days')",
"results": "array of auction result objects with year, tender_number, auction_date, pdf_url, and optionally isin, discount_rate, yield_rate",
"total_records": "integer count of auction records returned",
"years_queried": "array of year strings included in the query"
},
"sample": {
"data": {
"tenor": "91_days",
"results": [
{
"isin": "ZM3000013919",
"year": "2026",
"pdf_url": "https://www.boz.zm/sites/default/files/2026-05/Treasury-Bills-Results-Tender-No-11-2026-28-05-2026.pdf",
"yield_rate": "10.5000",
"auction_date": "2026-05-28",
"discount_rate": "10.2320",
"tender_number": "11/2026"
},
{
"isin": "ZM3000013877",
"year": "2026",
"pdf_url": "https://www.boz.zm/sites/default/files/2026-05/Treasury-Bills-Results-Tender-No-10-2026-14-05-2026.pdf",
"yield_rate": "10.5000",
"auction_date": "2026-05-14",
"discount_rate": "10.2320",
"tender_number": "10/2026 TBills Auction Results"
}
],
"total_records": 11,
"years_queried": [
"2026"
]
},
"status": "success"
}
}About the boz API
Endpoints and Coverage
The API provides two endpoints. get_tbill_auction_data returns structured auction result records for a specified tenor (91, 182, 273, or 364 days). Each record includes the auction_date, tender_number, isin, discount_rate, yield_rate, and a pdf_url pointing to the official tender result document. Results are sorted by auction date descending and can be filtered using the year parameter, which accepts a single year string (e.g. '2025'), a comma-separated list (e.g. '2024,2025'), or 'all' for the full historical dataset.
PDF Access
The list_tender_pdfs endpoint returns all tender result PDF URLs organized by year. The response shape is an object (pdfs_by_year) that maps each year to a count and an array of direct PDF URLs, plus a total_pdfs integer for the full query scope. This endpoint accepts the same year parameter, making it straightforward to pull document references for a specific period without fetching full auction metadata.
Data Fields and Scope
Across both endpoints, the year filter controls scope without requiring pagination logic — requesting 'all' returns the complete dataset from 2014 onward. The total_records field in get_tbill_auction_data gives an immediate count of matched rows. Note that data availability for specific years and tenors reflects what the Bank of Zambia has published; early years may have fewer records for certain tenors.
The boz API is a managed, monitored endpoint for boz.zm — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when boz.zm changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official boz.zm API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Plot yield rate trends for 364-day Zambian treasury bills from 2014 to present using
yield_ratefields. - Build a bond research tool that maps ISINs to historical discount rates across all four tenors.
- Automate a weekly digest of new auction results by querying
get_tbill_auction_datafor the current year. - Download official tender result PDFs in bulk using URLs returned by
list_tender_pdfs. - Compare discount rates across 91-day and 182-day tenors for a given year to analyze the yield curve.
- Populate a fixed-income database with structured tender numbers and auction dates for Zambian T-bills.
- Monitor newly listed ISINs from recent auctions to support secondary market analysis.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the Bank of Zambia provide an official developer API?+
What does `get_tbill_auction_data` return for a given tenor, and how do I narrow the year range?+
results, each containing tender_number, auction_date, isin, discount_rate, yield_rate, and pdf_url. Use the year parameter to scope the query: a single year string, a comma-separated list, or 'all' for the full 2014-to-present dataset. The total_records field in the response reflects the count of matched records.Are bid amounts, accepted amounts, or oversubscription ratios included in the auction data?+
discount_rate, yield_rate, tender_number, auction_date, isin, and pdf_url per auction. Bid volume, accepted amounts, and subscription ratios are not exposed as structured fields. You can fork this API on Parse and revise it to extract those fields from the linked tender result PDFs.