All APIs

Yield curve API for government bonds

Get government yield curves across nine countries and areas through REST and MCP. Read one source date or a paginated history, with decimal percent strings.

Online100.00% uptime, last 30 days344 ms typical response

First request

Get the United Kingdom yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/GBR/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the United States yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/USA/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the Germany yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/DEU/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the Japan yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/JPN/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the Canada yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/CAN/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the Sweden yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/SWE/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the Norway yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/NOR/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the Australia yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/AUS/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the Euro area yield curve

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/EMU/yield-curve?date=2026-09-10&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Get the history

curl --request GET \
  --url "https://api.narwhalapi.com/v1/economics/GBR/yield-curve/history?start=2026-09-09&end=2026-09-10&limit=100&maturity=2y%2C10y" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

Endpoints

GETGovernment bond yield curves/v1/economics/{country}/yield-curve

One observation for a country: the latest, or the exact source date you ask for.

Parameters

  • countryrequired

    Three-letter code: USA, GBR, DEU, JPN, CAN, SWE, NOR, AUS, EMU.

  • dateoptional

    Omit for the latest admitted observation. A supplied value selects that exact period; unavailable periods return 404.

  • version_idoptional

    Optional immutable publication version. Omit to read the current admitted curve.

  • curve_typeoptional

    Optional curve_type names a curve on both routes, only for NOR, AUS and EMU, which each serve two curves. Omit it for the first curve, which the response names in curve_type. A curve the country does not serve gives a 400 error.

  • maturityoptional

    Optional on both routes. Omit for the whole available curve. USA: 1m, 1.5m, 2m, 3m, 4m, 6m, 1y, 2y, 3y, 5y, 7y, 10y, 20y, 30y. GBR: 0.5y, 1y, 1.5y, 2y, 2.5y, 3y, 3.5y, 4y, 4.5y, 5y, 5.5y, 6y, 6.5y, 7y, 7.5y, 8y, 8.5y, 9y, 9.5y, 10y, 10.5y, 11y, 11.5y, 12y, 12.5y, 13y, 13.5y, 14y, 14.5y, 15y, 15.5y, 16y, 16.5y, 17y, 17.5y, 18y, 18.5y, 19y, 19.5y, 20y, 20.5y, 21y, 21.5y, 22y, 22.5y, 23y, 23.5y, 24y, 24.5y, 25y, 25.5y, 26y, 26.5y, 27y, 27.5y, 28y, 28.5y, 29y, 29.5y, 30y, 30.5y, 31y, 31.5y, 32y, 32.5y, 33y, 33.5y, 34y, 34.5y, 35y, 35.5y, 36y, 36.5y, 37y, 37.5y, 38y, 38.5y, 39y, 39.5y, 40y. DEU: 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y, 11y, 12y, 13y, 14y, 15y, 16y, 17y, 18y, 19y, 20y, 21y, 22y, 23y, 24y, 25y, 26y, 27y, 28y, 29y, 30y. JPN: 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y, 15y, 20y, 25y, 30y, 40y. CAN: 0.25y, 0.5y, 0.75y, 1y, 1.25y, 1.5y, 1.75y, 2y, 2.25y, 2.5y, 2.75y, 3y, 3.25y, 3.5y, 3.75y, 4y, 4.25y, 4.5y, 4.75y, 5y, 5.25y, 5.5y, 5.75y, 6y, 6.25y, 6.5y, 6.75y, 7y, 7.25y, 7.5y, 7.75y, 8y, 8.25y, 8.5y, 8.75y, 9y, 9.25y, 9.5y, 9.75y, 10y, 10.25y, 10.5y, 10.75y, 11y, 11.25y, 11.5y, 11.75y, 12y, 12.25y, 12.5y, 12.75y, 13y, 13.25y, 13.5y, 13.75y, 14y, 14.25y, 14.5y, 14.75y, 15y, 15.25y, 15.5y, 15.75y, 16y, 16.25y, 16.5y, 16.75y, 17y, 17.25y, 17.5y, 17.75y, 18y, 18.25y, 18.5y, 18.75y, 19y, 19.25y, 19.5y, 19.75y, 20y, 20.25y, 20.5y, 20.75y, 21y, 21.25y, 21.5y, 21.75y, 22y, 22.25y, 22.5y, 22.75y, 23y, 23.25y, 23.5y, 23.75y, 24y, 24.25y, 24.5y, 24.75y, 25y, 25.25y, 25.5y, 25.75y, 26y, 26.25y, 26.5y, 26.75y, 27y, 27.25y, 27.5y, 27.75y, 28y, 28.25y, 28.5y, 28.75y, 29y, 29.25y, 29.5y, 29.75y, 30y. SWE: 1m, 3m, 6m, 2y, 5y, 7y, 10y. NOR: 6m, 9m, 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y. AUS: 2y, 3y, 5y, 10y. EMU: 3m, 6m, 9m, 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y, 11y, 12y, 13y, 14y, 15y, 16y, 17y, 18y, 19y, 20y, 21y, 22y, 23y, 24y, 25y, 26y, 27y, 28y, 29y, 30y. Duplicates are removed and terms sorted. Unsupported labels return 400.

Response fields

  • countryISO alpha-3 string

    The requested country or territory.

  • curve_type"nominal_par" | "nominal_zero_coupon" | "spot_svensson" | "constant_maturity_ytm" | "zero_coupon" | "constant_maturity_benchmark" | "spot_svensson_aaa"

    United States: Nominal par yield (US Department of the Treasury). United Kingdom: Continuously compounded nominal zero-coupon yield (Bank of England). Germany: Svensson spot yield (Deutsche Bundesbank). Japan: Constant-maturity JGB yield to maturity (Ministry of Finance, Japan). Canada: Zero-coupon (discount) yield (Bank of Canada). Sweden: Government bill and bond benchmark yields (Sveriges Riksbank). Norway: Government security zero-coupon yields (Norges Bank). Australia: Government bond yield to maturity (Reserve Bank of Australia). Euro area: AAA-rated government bond spot rates (European Central Bank).

  • dateYYYY-MM-DD string

    The source date shared by all points in this curve.

  • yieldsarray

    Available maturities, ordered shortest to longest. Even one maturity remains an array.

  • yields[].maturitystring

    One of the supported maturity labels.

  • yields[].yield_percentdecimal string

    Yield in percent, preserving source decimal precision.


Full reference →
GETGovernment bond yield curves history/v1/economics/{country}/yield-curve/history

Every observation in a range, oldest first, up to 1,000 per page. Follow next_cursor until it is null.

Parameters

  • countryrequired

    Three-letter code: USA, GBR, DEU, JPN, CAN, SWE, NOR, AUS, EMU.

  • startoptional

    Inclusive lower bound. Omit for the first available period.

  • endoptional

    Inclusive upper bound; cannot precede start. Omit for the last available period.

  • limitoptional

    Default 100. Counts dates or years, not individual yield points.

  • cursoroptional

    Pass next_cursor unchanged with the same country, filters and limit. Cursors expire after 24 hours.

  • as_ofoptional

    Return the curves as published up to the end of this UTC day. Pro plan only.

  • curve_typeoptional

    Optional curve_type names a curve on both routes, only for NOR, AUS and EMU, which each serve two curves. Omit it for the first curve, which the response names in curve_type. A curve the country does not serve gives a 400 error.

  • maturityoptional

    Optional on both routes. Omit for the whole available curve. USA: 1m, 1.5m, 2m, 3m, 4m, 6m, 1y, 2y, 3y, 5y, 7y, 10y, 20y, 30y. GBR: 0.5y, 1y, 1.5y, 2y, 2.5y, 3y, 3.5y, 4y, 4.5y, 5y, 5.5y, 6y, 6.5y, 7y, 7.5y, 8y, 8.5y, 9y, 9.5y, 10y, 10.5y, 11y, 11.5y, 12y, 12.5y, 13y, 13.5y, 14y, 14.5y, 15y, 15.5y, 16y, 16.5y, 17y, 17.5y, 18y, 18.5y, 19y, 19.5y, 20y, 20.5y, 21y, 21.5y, 22y, 22.5y, 23y, 23.5y, 24y, 24.5y, 25y, 25.5y, 26y, 26.5y, 27y, 27.5y, 28y, 28.5y, 29y, 29.5y, 30y, 30.5y, 31y, 31.5y, 32y, 32.5y, 33y, 33.5y, 34y, 34.5y, 35y, 35.5y, 36y, 36.5y, 37y, 37.5y, 38y, 38.5y, 39y, 39.5y, 40y. DEU: 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y, 11y, 12y, 13y, 14y, 15y, 16y, 17y, 18y, 19y, 20y, 21y, 22y, 23y, 24y, 25y, 26y, 27y, 28y, 29y, 30y. JPN: 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y, 15y, 20y, 25y, 30y, 40y. CAN: 0.25y, 0.5y, 0.75y, 1y, 1.25y, 1.5y, 1.75y, 2y, 2.25y, 2.5y, 2.75y, 3y, 3.25y, 3.5y, 3.75y, 4y, 4.25y, 4.5y, 4.75y, 5y, 5.25y, 5.5y, 5.75y, 6y, 6.25y, 6.5y, 6.75y, 7y, 7.25y, 7.5y, 7.75y, 8y, 8.25y, 8.5y, 8.75y, 9y, 9.25y, 9.5y, 9.75y, 10y, 10.25y, 10.5y, 10.75y, 11y, 11.25y, 11.5y, 11.75y, 12y, 12.25y, 12.5y, 12.75y, 13y, 13.25y, 13.5y, 13.75y, 14y, 14.25y, 14.5y, 14.75y, 15y, 15.25y, 15.5y, 15.75y, 16y, 16.25y, 16.5y, 16.75y, 17y, 17.25y, 17.5y, 17.75y, 18y, 18.25y, 18.5y, 18.75y, 19y, 19.25y, 19.5y, 19.75y, 20y, 20.25y, 20.5y, 20.75y, 21y, 21.25y, 21.5y, 21.75y, 22y, 22.25y, 22.5y, 22.75y, 23y, 23.25y, 23.5y, 23.75y, 24y, 24.25y, 24.5y, 24.75y, 25y, 25.25y, 25.5y, 25.75y, 26y, 26.25y, 26.5y, 26.75y, 27y, 27.25y, 27.5y, 27.75y, 28y, 28.25y, 28.5y, 28.75y, 29y, 29.25y, 29.5y, 29.75y, 30y. SWE: 1m, 3m, 6m, 2y, 5y, 7y, 10y. NOR: 6m, 9m, 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y. AUS: 2y, 3y, 5y, 10y. EMU: 3m, 6m, 9m, 1y, 2y, 3y, 4y, 5y, 6y, 7y, 8y, 9y, 10y, 11y, 12y, 13y, 14y, 15y, 16y, 17y, 18y, 19y, 20y, 21y, 22y, 23y, 24y, 25y, 26y, 27y, 28y, 29y, 30y. Duplicates are removed and terms sorted. Unsupported labels return 400.

Response fields

  • countryISO alpha-3 string

    The requested country or territory.

  • curve_type"nominal_par" | "nominal_zero_coupon" | "spot_svensson" | "constant_maturity_ytm" | "zero_coupon" | "constant_maturity_benchmark" | "spot_svensson_aaa"

    United States: Nominal par yield (US Department of the Treasury). United Kingdom: Continuously compounded nominal zero-coupon yield (Bank of England). Germany: Svensson spot yield (Deutsche Bundesbank). Japan: Constant-maturity JGB yield to maturity (Ministry of Finance, Japan). Canada: Zero-coupon (discount) yield (Bank of Canada). Sweden: Government bill and bond benchmark yields (Sveriges Riksbank). Norway: Government security zero-coupon yields (Norges Bank). Australia: Government bond yield to maturity (Reserve Bank of Australia). Euro area: AAA-rated government bond spot rates (European Central Bank).

  • observationsarray

    Oldest first. Missing periods are omitted; an empty valid range returns an empty array.

  • observations[].dateYYYY-MM-DD string

    The source date shared by all points in this curve.

  • observations[].yieldsarray

    Available maturities, ordered shortest to longest. Even one maturity remains an array.

  • observations[].yields[].maturitystring

    One of the supported maturity labels.

  • observations[].yields[].yield_percentdecimal string

    Yield in percent, preserving source decimal precision.

  • next_cursorstring or null

    Opaque continuation token; null means there is no next page.


Full reference →

Use cases

Check if the yield curve is inverted

Compare two yields and read the spread in basis points.

Read the guide →

Calculate the real interest rate

Take inflation off a nominal yield with the Fisher formula.

Read the guide →

Backfill history

Download a full series page by page and resume if it stops.

Read the guide →

Coverage

  • United StatesNominal par yield. Daily from 2 January 1990.
  • United KingdomContinuously compounded nominal zero-coupon yield. Daily from 2 January 1979.
  • GermanySvensson spot yield. Daily from 7 August 1997.
  • JapanConstant-maturity JGB yield to maturity. Daily from 1974.
  • CanadaZero-coupon (discount) yield. Daily from 2 January 1986.
  • SwedenGovernment bill and bond benchmark yields. Daily from 3 January 1983.
  • NorwayGovernment security zero-coupon yields. Daily from 2 January 2015.
  • AustraliaGovernment bond yield to maturity. Daily from 20 May 2013.
  • Euro areaAAA-rated government bond spot rates. Daily from 6 September 2004.

Sources

Japan's yield data is reused under Public Data License 1.0. Narwhal formats the source data for the API. This version was not created by the Ministry of Finance, Japan. Source licence

Source: Sveriges Riksbank. The data date is shown alongside the data. Narwhal has no official collaboration or partnership with the Riksbank.

Source: Norges Bank. Values are shown as published.

Source Reserve Bank of Australia 2026. The RBA publishes this data free of charge at rba.gov.au and does not endorse Narwhal.

Source: ECB. The ECB publishes this data free of charge at ecb.europa.eu, and values are shown as published.

Related APIs

Economic data API

Official indicators for prices, labour, output, trade, and rates.

Explore the API →

Economic release calendar

Release schedules, status, and publication versions.

Explore the API →

FAQ

How often is the data updated?

US Treasury curves follow its daily publication. The Bank of England aims to publish by noon Europe/London on the next business day. Deutsche Bundesbank publishes daily curves. The Ministry of Finance, Japan publishes at 09:30 Japan time on the next business day. The Bank of Canada publishes the curve roughly once a week, about 2 to 3 weeks after the observation date. The latest curve is usually 2 to 3 weeks old. Sveriges Riksbank publishes each business day. Norges Bank publishes each business day. The RBA publishes table F2 on business days, usually within two days. The ECB publishes the curve on the next business day. Weekends and holidays may have no new curve. Source values can be revised. A source check does not guarantee a new observation.

What happens when a value is missing?

Missing maturities are omitted. Narwhal never fills a missing source point, substitutes an older curve, or invents a value.

Why do yield curves differ between countries?

Curve measures differ by country. Keep the source, curve type and maturity with each value.

Does a country offer a second curve?

Norway: Use curve_type=constant_maturity_benchmark for Norges Bank generic rates: Treasury bills at 3, 6 and 12 months and government bonds at 3, 5, 7 and 10 years. History starts on 2 January 2019. Australia: Use curve_type=zero_coupon for RBA table F17 zero-coupon yields, from 0.25 to 10 years in quarter-year steps. History starts on 3 January 2017, and the RBA adds rows about a month after their date. Euro area: Use curve_type=spot_svensson_all_issuers for the ECB curve covering all euro area central government issuers: 3, 6 and 9 months, then 1 to 30 years in yearly steps, with daily history from 6 September 2004.

How do I page through the history?

Choose an inclusive start and end. Responses are oldest first, with up to 1,000 source dates per page. Follow next_cursor with the same filters and limit until it is null. A cursor keeps its publication snapshot for up to 24 hours; an expired or withdrawn snapshot returns 409, so restart without the cursor.

Get a free API key