QVeris
Fixed Income Data API Guide

Choose a Free Fixed Income Data API
for Bond Market Data

Compare free APIs for bond reference data, prices, yields, ratings, and history, then plan a verified JSON or Python integration.

Whiteboard workflow for selecting bond coverage, comparing fixed-income data fields, validating provenance and limits, and integrating through REST or JSON

TL;DR

What users need

A practical shortlist of free official or aggregated APIs, plus enough detail to make a first verified request.

Fields people compare

Identifiers, issuers, coupons, maturities, prices, yields, ratings, history, and update frequency.

What “free” means

Check registration, API keys, quotas, licensing, attribution, formats, and production restrictions.

Best next step

Choose one source, inspect metadata, make a small request, validate provenance, then add caching.

What people want from a free fixed income data API

Current results are dominated by API documentation, free-tier product pages, official market-data sources, and implementation guides. The primary intent is practical: find an accessible endpoint and retrieve current or historical fixed-income data programmatically. A secondary commercial-investigation intent appears when users compare authentication, quotas, asset coverage, identifiers, history, licensing, and normalized JSON.

Data and features repeated across ranking pages

Recurring entities and fields include FINRA, the U.S. Treasury, FRED, government and corporate bonds, ISIN and CUSIP identifiers, issuer, coupon, maturity, price, yield, rating, duration, historical observations, REST or XML access, JSON output, API keys, quotas, timestamps, licensing, and provenance.

Choose the fixed-income data layer before choosing an API

“Bond data” is not one dataset. A Treasury curve dashboard, a corporate-bond screener, a portfolio valuation engine, and a trade-surveillance workflow need different records. Start by naming the decision the application must support, then identify the data layer that can answer it. This prevents a common failure: selecting a convenient yield-series API and later discovering that the product actually needs instrument-level prices, call schedules, accrued interest, or transaction records.

Data layerTypical fieldsWhat it can answerFrequent mistake
Reference dataIssuer, currency, coupon, maturity, seniority, call schedule, ISIN/CUSIP/FIGI.What is the instrument and what cash flows are contractually due?Assuming an identifier-mapping API also supplies prices.
Curves and benchmarksMaturity tenor, par yield, spot rate, real yield, benchmark spread.What is the rate environment or discounting reference?Treating an interpolated curve point as a traded bond quote.
Prices and evaluated valuesBid, ask, mid, clean price, dirty price, evaluated price, timestamp.What might the bond be worth at a defined time and methodology?Comparing clean and dirty prices without accrued interest.
Trades and liquidityExecution price, size, side flags, venue/report time, corrections.Where did observable transactions occur and how liquid was the bond?Using one print as a continuous executable market price.
AnalyticsYTM, yield to call, duration, convexity, option-adjusted spread.How sensitive is value to rates, credit, and embedded options?Mixing vendor-calculated analytics with different assumptions.

Free fixed income data API sources to evaluate

SourceTypical coverageInterfaceCheck before use
U.S. Treasury data feedOfficial Treasury yields and related government rate datasets.Keyless GET requests returning XML.Dataset parameters, dates, XML parsing, update schedule, and attribution.
FRED APIIndividual Treasury constant-maturity series with long histories.REST XML or JSON; free API key required.Series IDs, frequency, units, revisions, and joining maturities by date.
FINRA fixed income dataU.S. fixed-income market activity and datasets published by FINRA.Public data pages and documented developer access where available.Dataset scope, delay, permitted use, identifiers, and access terms.
OpenFIGIMapping among FIGI and supported third-party security identifiers.REST JSON; keyless access is available at lower limits.It maps identity; it is not a bond-pricing or yield feed.
Other aggregatorsNormalized sovereign curves, sometimes across several countries.Usually REST JSON with provider-specific free terms.Original source, transformations, latency, licensing, and current status.

“Free” does not mean identical terms. Verify each provider’s documentation on the day you integrate it because authentication, quotas, acceptable use, and dataset availability can change.

How to use a free fixed income data API with Python

1. Define the bond universe and required fields

Specify government, corporate, municipal, or securitized debt; then list the identifiers, issuer fields, coupon, maturity, price, yield, rating, duration, currency, observation date, frequency, and history your application actually needs.

2. Inspect metadata, authentication, and limits

Confirm the series ID, dimensions, units, seasonal adjustment, revision policy, API-key requirement, rate limits, reuse license, and attribution before writing production code.

3. Make a small request and validate it

The example below requests one year of official Treasury par-yield observations without an API key. It deliberately stores the observation date, tenor and source instead of returning an unlabeled number. Treasury documents XML pagination separately for all-year downloads, so a production backfill should follow that contract rather than guessing page size.

Python · official U.S. Treasury XML feed
import requests
import xml.etree.ElementTree as ET

url = (
    "https://home.treasury.gov/resource-center/data-chart-center/"
    "interest-rates/pages/xml"
)
params = {
    "data": "daily_treasury_yield_curve",
    "field_tdr_date_value": "2025",
}

response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
root = ET.fromstring(response.content)

ns = {
    "atom": "http://www.w3.org/2005/Atom",
    "m": "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata",
    "d": "http://schemas.microsoft.com/ado/2007/08/dataservices",
}

records = []
for entry in root.findall("atom:entry", ns):
    props = entry.find("atom:content/m:properties", ns)
    if props is None:
        continue
    date = props.findtext("d:NEW_DATE", default="", namespaces=ns)
    ten_year = props.findtext("d:BC_10YEAR", default="", namespaces=ns)
    if date and ten_year:
        records.append({
            "observation_date": date,
            "tenor": "10Y",
            "par_yield_percent": float(ten_year),
            "source": "U.S. Department of the Treasury",
        })

assert records, "No Treasury observations returned"
print(records[-1])

4. Add caching, retries, and provenance

Cache to match the release schedule, respect retry guidance, record retrieval time and series metadata, preserve the source URL, and monitor schema changes.

Validate a fixed income data API response before publishing it

HTTP 200 only proves that the server answered. First confirm the instrument identity: issuer, currency, coupon, maturity, security type and at least one stable identifier must agree. Then validate price semantics. A value of 98.40 could be a clean price per 100 of par, a dirty price including accrued interest, an evaluated price, a bid, or a historical trade. A yield of 4.6 could be percent or decimal, yield to maturity or yield to worst. Store the provider’s field definition instead of inferring it from the column name.

Minimum validation record

For every published observation retain: provider, dataset, request URL or operation, security identifier, identifier type, currency, value, unit, price or yield basis, observation time, retrieval time, timezone, delay status, and correction status. For callable or putable bonds also keep the cash-flow schedule and option assumptions used by the analytic. Reject impossible dates, duplicated primary keys, negative accrued interest outside a documented ex-coupon rule, prices with unknown scale, and yields with missing compounding conventions.

Official feeds vs aggregated fixed income data APIs

The U.S. official feed is the strongest starting point when authority and direct provenance matter most. It publishes the curve observations and supporting definitions, but its XML format requires parsing and may be less convenient than a normalized JSON endpoint. Aggregators can simplify curve snapshots, spreads, cross-country coverage, and agent integrations, but their transformations and free-tier terms must be inspected.

When an aggregator is the better engineering choice

An aggregator is useful when the application needs one query model across several providers or countries. A normalized catalog can reduce discovery time, standardize common fields, and simplify prototypes, dashboards, comparative research, or agent tools. That convenience does not transfer authority to the aggregator. Always retain the original provider code, dataset code, series identifier, unit, frequency, retrieval timestamp, and source URL. Review whether the aggregator transforms values, renames dimensions, changes missing-value markers, delays updates, or applies a separate license. For high-impact outputs, compare representative observations with the original portal and define a fallback path to the producer’s service.

Validate metadata, revisions, and data quality before use

Do not treat a series label as a complete definition

Two fields can share a familiar label while measuring different concepts. “Price” may mean bid, ask, mid, last trade, composite, evaluated clean price, or evaluated dirty price. “Yield” may mean current yield, yield to maturity, yield to call, yield to worst, par yield, spot rate, or an index yield. Before storing observations, capture the method, day-count convention, compounding frequency, settlement date, accrued-interest treatment, redemption assumption, currency, minimum denomination, and timestamp. If the provider exposes code lists, keep the codes and human-readable labels together.

Treat evaluated prices, quotes, and trades as different evidence

Many bonds trade infrequently. An evaluated price may combine observed trades, comparable securities, curves and models; a quote may indicate interest but not execution; a TRACE transaction is an observable report but may be delayed, corrected, capped or subject to dissemination rules. Keep a price-source category and methodology version so downstream users can judge fitness. Do not fill a gap with the previous value without marking it stale, and do not average unlike evidence merely to produce a smooth chart.

Calculate bond analytics only after conventions align

Build the cash-flow schedule before solving for yield

Yield to maturity is not a field that can be reconstructed safely from price, coupon and maturity alone. The calculation also needs settlement date, coupon frequency, day-count basis, business-day rules, accrued interest, redemption value and the exact future payment schedule. Zero-coupon, floating-rate, amortizing, inflation-linked and irregular first- or last-coupon bonds require different treatment. Callable bonds add another decision: whether the output is yield to maturity, yield to the next call, or yield to worst. If an API provides a yield but does not expose these assumptions, treat it as provider-calculated analytics and do not silently recompute or compare it with a different convention.

Duration, convexity, and spread require a documented curve

Modified duration depends on yield convention and payment schedule. Effective duration additionally depends on a pricing model and a defined curve shock. Z-spread requires a spot curve; option-adjusted spread requires an interest-rate model and assumptions about embedded options. Therefore a normalized schema should not store one generic duration or spread column. Store the analytic type, curve identifier, curve date, model or method, shock size, compounding basis, calculated-at timestamp and provider. When comparing two APIs, use a small set of plain-vanilla bonds first, verify cash flows and accrued interest, and only then compare derived analytics within a tolerance justified by their conventions.

Practical rule: normalize facts such as identifiers, dates and contractual cash flows aggressively; normalize model outputs conservatively. Two analytics with the same label are not interchangeable until their assumptions match.

Build a reliable production integration

Separate discovery, retrieval, normalization, and delivery

A maintainable pipeline gives each stage one responsibility. Discovery resolves a human request to a provider, dataset, and series. Retrieval calls the documented endpoint and stores the raw response with HTTP status, headers, request parameters, and retrieval time. Normalization converts dates, units, codes, and missing-value conventions into an internal schema without destroying the source representation. Delivery exposes the verified records to a dashboard, research notebook, database, API, or agent capability. Keeping the raw payload makes later debugging and reprocessing possible when a provider changes its schema or a transformation rule is corrected.

Match polling, caching, and retries to the release schedule

Reference terms, daily curves, intraday quotes, trades, and ratings change at different speeds. Poll each feed according to its documented lifecycle rather than one global timer. Cache successful responses, use conditional requests when supported, and process corrections idempotently. A bond can be called, matured, exchanged, defaulted, partially redeemed, or assigned a new identifier; the security master must preserve those events rather than deleting the old record. Apply bounded retries to temporary failures, never retry invalid identifiers forever, and alert on stale timestamps, unexplained coverage drops, schema changes, and sudden shifts in null rates.

Common applications for fixed-income data

Research, dashboards, alerts, and AI agents

Developers use fixed-income data for curve dashboards, maturity and spread comparisons, credit screening, portfolio cash-flow ladders, duration and convexity reports, liquidity monitoring, valuation controls, backtests, and data-aware agents. A research notebook may tolerate end-of-day observations, while a pre-trade workflow may require executable quotes and entitlement controls. Portfolio valuation needs complete holdings, accrued interest and consistent pricing time; risk reporting also needs analytics calculated with one documented convention.

For an AI agent, expose narrow, documented operations such as “get the latest policy rate,” “retrieve a series for a date range,” or “search series metadata.” Define required parameters, supported geographies, output fields, units, error states, and provenance. Limit the amount of data returned by default and require explicit date ranges for large downloads. The agent should cite the producer and series, state the observation date, and distinguish retrieved facts from its own interpretation. QVeris can help discover, inspect, call, and audit such capabilities, while the central bank or original statistical producer remains the authority for values and methodology.

How QVeris helps with fixed income data APIs

QVeris can help an agent discover, inspect, call, and audit real-world capabilities. For fixed-income data, each API should remain an inspectable capability with documented inputs, outputs, and provenance. QVeris does not own or change the underlying official data.

  • Use the QVeris Tool Finder to explore capabilities relevant to economic or financial data.
  • Inspect an operation’s parameters and response shape before an agent calls it.
  • Keep the provider URL, timestamp, series ID, and license context in downstream records.

FAQ

Is there a free fixed income data API?

There are free official datasets and limited free tiers, but no single free source necessarily covers reference data, prices, yields, ratings, and every bond type. Verify scope and licensing before integration.

Where can I get bond market fixed-income data?

Use the U.S. Treasury or FRED for government rates and FINRA for relevant U.S. market datasets. Broader corporate-bond reference and pricing coverage often requires an aggregator or commercial provider.

Does FRED have a fixed income data API?

FRED provides individual Treasury constant-maturity series through its API. To build a curve, request the required maturities and align observations by date.

How do I get fixed-income data in Python?

Use requests or a maintained client, send a small date-bounded query, check HTTP status and JSON fields, then store the series ID, units, date, and source.

Are bond price and bond yield the same thing?

No. Price is an amount per unit of par or currency; yield is a return measure calculated from price, cash flows, dates, and conventions. You need the calculation basis to compare yields safely.

What is the difference between clean and dirty bond price?

Clean price excludes accrued interest. Dirty price includes it and is generally closer to the cash settlement amount. Always check which convention an API returns.

Can OpenFIGI provide free bond prices?

OpenFIGI maps supported identifiers to FIGIs. It is useful for security identity, but it is not a bond pricing, trade, or yield feed.

Can QVeris replace the official provider?

No. QVeris helps agents discover and call capabilities; the provider remains authoritative for data, methods, licensing, and releases.

External references