Your team needs a reliable way to programmatically detect and react to changes in Danmarks Nationalbank’s policy rate inside your lending, treasury, or analytics software. By the end of this article, you will know how to query the DNB_RATE symbol (Danmarks Nationalbank Rate) from the Interest Rates API, track its latest and historical values, compute fluctuations and OHLC summaries, and safely integrate those responses into dashboards, risk models, and loan calculators.
What DNB_RATE Represents and Why It Matters
DNB_RATE is the Danmarks Nationalbank Rate — a central bank policy rate for Denmark, expressed in percent per annum and denominated in DKK. In the Interest Rates API catalogue, DNB_RATE is a central_bank symbol with a monthly frequency. In practice, this means:
- The rate is an annualized percentage (for example, 2.1 means 2.10% per year).
- Effective dates are monthly. When you request a specific date within a month, the API maps to the last available day with data in that month for monthly-frequency symbols.
- For business-day aligned endpoints (timeseries, OHLC), you may see per-day entries that reflect the prevailing value on those days (unchanged within a month unless a policy action lands).
Developers and analysts care about DNB_RATE because it ripples through Danish krone funding costs, mortgage repricing, yield curve levels, and macro models. Integrating a single, consistent DKK policy-rate source simplifies spread calculations against interbank benchmarks (e.g., CIBOR_3M) and rate-sensitive product pricing.
Request Patterns, Authentication, and Caching
All endpoints are GET requests under the same base URL: https://interestratesapi.com/api/v1/. Authentication uses a query parameter api_key, not a header. For example: ?api_key=YOUR_API_KEY.
Because DNB_RATE is monthly, you should plan for less frequent data changes than daily interbank benchmarks. Good practices include:
- Cache stable monthly values in your application and set a refresh cadence aligned to your business needs (e.g., once daily, on start-up, or near Danish central bank decision windows).
- Use the dates and currencies objects to interpret effective dates and currency denomination precisely per symbol.
- Handle non-business days: even though DNB_RATE is monthly, timeseries requests can return business-day keys; values typically remain constant until a policy change.
- Monitor 429 status and X-RateLimit headers for graceful backoff if you parallelize requests.
Explore the broader data model and symbol catalogue at interestratesapi.com. When you are ready to integrate, you can Register for Interest Rates API and Get started with Interest Rates API. For developers who want machine-consumable capabilities, see the Interest Rates API MCP.
Catalogue: Finding DNB_RATE in the Symbols List
Use the symbols endpoint to discover available rate codes and metadata or to filter central bank instruments in DKK.
cURL
curl -s "https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=DNB_RATE"
Python (requests)
import requests
resp = requests.get(
"https://interestratesapi.com/api/v1/symbols",
params=dict(category="central_bank", base="DKK", api_key="YOUR_API_KEY"),
timeout=30
)
symbols = resp.json()
print(symbols)
JavaScript (fetch)
const url = "https://interestratesapi.com/api/v1/symbols?category=central_bank&base=DKK&api_key=YOUR_API_KEY";
const res = await fetch(url);
const data = await res.json();
console.log(data);
PHP
<?php
$qs = http_build_query([
'category' => 'central_bank',
'base' => 'DKK',
'api_key' => 'YOUR_API_KEY'
]);
$url = "https://interestratesapi.com/api/v1/symbols?$qs";
$json = file_get_contents($url);
echo $json;
?>
The response contains a list of symbols with fields such as symbol, name, category, country_code, currency_code, frequency, and description. Filtered by base=DKK and category=central_bank, you can confirm the presence and metadata of DNB_RATE before integrating.
Latest: Fetch the Current DNB_RATE
The latest endpoint returns the most recent available value for one or more symbols. Below is the official, live sample for DNB_RATE. Copy it verbatim to validate your connectivity and authentication.
cURL (official sample)
Official JSON (copy as-is)
{
"success": true,
"date": "2026-09-30",
"base": "DKK",
"rates": {
"DNB_RATE": 2.1
},
"dates": {
"DNB_RATE": "2026-09-30"
},
"currencies": {
"DNB_RATE": "DKK"
},
"base_filter_note": null
}
How to read this:
- rates.DNB_RATE is the latest annualized percentage (2.1 means 2.10% per annum).
- dates.DNB_RATE indicates the effective date of that latest value. For monthly symbols, it is typically the month-end or the last day with data in that month.
- currencies.DNB_RATE confirms the denomination (DKK for this symbol).
- date at the top-level is the API-wide date for the response context, which for monthly rates often aligns with the effective date.
Python (requests)
import requests
response = requests.get(
"https://interestratesapi.com/api/v1/latest",
params=dict(symbols="DNB_RATE", api_key="YOUR_API_KEY"),
timeout=30
)
data = response.json()
rate = data["rates"]["DNB_RATE"]
effective_date = data["dates"]["DNB_RATE"]
ccy = data["currencies"]["DNB_RATE"]
print("DNB_RATE:", rate, "Effective:", effective_date, "Currency:", ccy)
JavaScript (fetch)
const response = await fetch(
"https://interestratesapi.com/api/v1/latest?symbols=DNB_RATE&api_key=YOUR_API_KEY"
);
const json = await response.json();
const rate = json.rates.DNB_RATE;
const effDate = json.dates.DNB_RATE;
const ccy = json.currencies.DNB_RATE;
console.log({ rate, effDate, ccy });
PHP
<?php
$url = "https://interestratesapi.com/api/v1/latest?symbols=DNB_RATE&api_key=YOUR_API_KEY";
$json = file_get_contents($url);
$data = json_decode($json, true);
$rate = $data['rates']['DNB_RATE'];
$eff = $data['dates']['DNB_RATE'];
$ccy = $data['currencies']['DNB_RATE'];
echo "DNB_RATE=$rate Effective=$eff Currency=$ccy\n";
?>
Tip: For production dashboards, store both the numeric value and the effective date so you can present unambiguous “as-of” labels to users.
Historical: Value on a Specific Date
Use historical to retrieve the DNB_RATE applicable to a date. For monthly symbols, the API returns the value for the last day with data within that month.
cURL
JSON (sample)
Python (requests)
import requests
params = dict(date="2025-06-15", symbols="DNB_RATE", api_key="YOUR_API_KEY")
res = requests.get("https://interestratesapi.com/api/v1/historical", params=params, timeout=30)
print(res.json())
JavaScript (fetch)
const res = await fetch(
"https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=DNB_RATE&api_key=YOUR_API_KEY"
);
console.log(await res.json());
PHP
<?php
$qs = http_build_query([
'date' => '2025-06-15',
'symbols' => 'DNB_RATE',
'api_key' => 'YOUR_API_KEY'
]);
echo file_get_contents("https://interestratesapi.com/api/v1/historical?$qs");
?>
Note: The values in JSON samples can be illustrative; your live responses will reflect actual historical policy settings. Always consult the currencies map for the denomination and rely on the date you requested to understand the monthly mapping behavior.
Timeseries: Range Queries for DNB_RATE
Use timeseries to fetch all values between two dates. For monthly symbols, the series typically reflects a constant value across business days within a month until a new monthly or decision-date update occurs.
cURL
JSON (sample)
Python (requests)
import requests
payload = dict(
start="2025-10-15",
end="2026-10-15",
symbols="DNB_RATE",
api_key="YOUR_API_KEY"
)
r = requests.get("https://interestratesapi.com/api/v1/timeseries", params=payload, timeout=30)
series = r.json()
print(series)
JavaScript (fetch)
const tsUrl =
"https://interestratesapi.com/api/v1/timeseries?start=2025-10-15&end=2026-10-15&symbols=DNB_RATE&api_key=YOUR_API_KEY";
const tsRes = await fetch(tsUrl);
const tsData = await tsRes.json();
console.log(tsData);
PHP
<?php
$params = [
'start' => '2025-10-15',
'end' => '2026-10-15',
'symbols' => 'DNB_RATE',
'api_key' => 'YOUR_API_KEY'
];
$url = "https://interestratesapi.com/api/v1/timeseries?" . http_build_query($params);
echo file_get_contents($url);
?>
Field notes:
- rates.DNB_RATE is a date-to-value map; keys are ISO dates.
- frequencies.DNB_RATE indicates the data cadence as returned by the endpoint (you may see daily-indexed keys even for monthly symbols, reflecting business days within months).
- Use start_date and end_date to confirm the resolved range boundaries.
Fluctuation: Change Statistics Over a Range
The fluctuation endpoint summarizes the change in DNB_RATE between two dates, providing absolute and percentage changes plus observed high/low values in the window.
cURL
JSON (sample)
Python (requests)
import requests
params = dict(
start="2025-10-15",
end="2026-10-15",
symbols="DNB_RATE",
api_key="YOUR_API_KEY"
)
res = requests.get("https://interestratesapi.com/api/v1/fluctuation", params=params, timeout=30)
print(res.json())
JavaScript (fetch)
const flUrl =
"https://interestratesapi.com/api/v1/fluctuation?start=2025-10-15&end=2026-10-15&symbols=DNB_RATE&api_key=YOUR_API_KEY";
const flRes = await fetch(flUrl);
console.log(await flRes.json());
PHP
<?php
$qs = http_build_query([
'start' => '2025-10-15',
'end' => '2026-10-15',
'symbols' => 'DNB_RATE',
'api_key' => 'YOUR_API_KEY'
]);
echo file_get_contents("https://interestratesapi.com/api/v1/fluctuation?$qs");
?>
Field notes:
- start_value and end_value are the values at the boundaries as resolved by the API for the symbol.
- change is end_value − start_value; change_pct is percentage change relative to start_value (or null if start_value is 0).
- high and low represent the extremes observed within the period for that symbol.
OHLC: Candlestick Aggregations for DNB_RATE
OHLC provides periodized open, high, low, and close values for the requested symbols. For DNB_RATE (monthly symbol), using period=monthly gives a clean month-by-month view. The OHLC data is computed from daily series, not a separate static store.
cURL
JSON (sample)
Python (requests)
import requests
params = dict(
symbols="DNB_RATE",
period="monthly",
start="2025-10-15",
end="2026-10-15",
api_key="YOUR_API_KEY"
)
resp = requests.get("https://interestratesapi.com/api/v1/ohlc", params=params, timeout=30)
print(resp.json())
JavaScript (fetch)
const ohlcUrl =
"https://interestratesapi.com/api/v1/ohlc?symbols=DNB_RATE&period=monthly&start=2025-10-15&end=2026-10-15&api_key=YOUR_API_KEY";
const ohlcRes = await fetch(ohlcUrl);
console.log(await ohlcRes.json());
PHP
<?php
$params = [
'symbols' => 'DNB_RATE',
'period' => 'monthly',
'start' => '2025-10-15',
'end' => '2026-10-15',
'api_key' => 'YOUR_API_KEY'
];
$url = "https://interestratesapi.com/api/v1/ohlc?" . http_build_query($params);
echo file_get_contents($url);
?>
Field notes:
- Each item includes open, high, low, close for the period and data_points (count of data rows used in the aggregation).
- Use period keys (e.g., "2025-01") as your x-axis labels when plotting monthly candlesticks.
Convert: Compare Loan Interest Costs Using DNB_RATE
The convert endpoint compares total simple interest between two symbols for a given principal and term. You can use this to translate a policy rate into an estimated interest cost versus another benchmark. While total interest in the response is computed under a simple-loan assumption, you can also take the returned latest rate and run your own amortization math.
cURL
JSON (sample)
Python (requests)
import requests
params = dict(
from="DNB_RATE",
to="ECB_MRO",
amount=100000,
term_months=12,
api_key="YOUR_API_KEY"
)
# 'from' is a reserved word; pass via params dict as shown above or rename your local variable.
resp = requests.get("https://interestratesapi.com/api/v1/convert", params=params, timeout=30)
print(resp.json())
JavaScript (fetch)
const cvUrl =
"https://interestratesapi.com/api/v1/convert?from=DNB_RATE&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_API_KEY";
const cvRes = await fetch(cvUrl);
console.log(await cvRes.json());
PHP
<?php
$qs = http_build_query([
'from' => 'DNB_RATE',
'to' => 'ECB_MRO',
'amount' => 100000,
'term_months' => 12,
'api_key' => 'YOUR_API_KEY'
]);
echo file_get_contents("https://interestratesapi.com/api/v1/convert?$qs");
?>
Practical note: If you need a fully amortizing monthly payment based on the latest DNB_RATE, take the rate r (annual percent divided by 100), compute the monthly rate i = r / 12, and use the annuity formula Payment = P * i / (1 − (1 + i)^−n), where P is principal and n is term_months. Do not mix day-count or compounding conventions; the API returns annualized rates, and your product math should specify the compounding consistent with your business rules.
Error Handling and Rate Limits
Common errors include:
- 401 for missing/invalid api_key.
- 403 for accounts without an active plan.
- 404 when symbols are not found or no data exists for the requested range.
- 422 for validation errors (e.g., wrong date format).
- 429 when the request quota is exhausted (inspect Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset).
Always parse the JSON shape { success: false, error: "message" } and, when present, details to present a clear error path to your users and to implement retries or fallbacks.
Interpreting Key Fields Across Endpoints
- rates: A map of symbol → numeric value (or nested date → value for series endpoints). Use this for the actual rate figures.
- dates: A map of symbol → ISO date string indicating the effective date of the latest value.
- currencies: A map of symbol → ISO currency code. For DNB_RATE, this is DKK.
- frequencies: A map of symbol → frequency string. DNB_RATE is monthly; series endpoints can still present daily-indexed keys for business days.
- change, change_pct (fluctuation): Absolute and percent changes between the requested start and end. change_pct is null if the start value is zero.
- data_points (OHLC): Number of underlying observations used to compute the candlestick for each period.
All values are delivered as JSON primitives with straightforward types. If you need typed semantics in your domain layer, normalize symbols to uppercase, parse dates into date objects, and validate currencies and frequencies before downstream processing.
Practical Integration Details That Save Time
- Effective dates: For monthly symbols like DNB_RATE, the date represents the applicable month’s last available day with data. Display “as of YYYY-MM-DD” anywhere you show the rate to users to avoid ambiguity.
- Business days: Timeseries may include only business days. If you resample to month-end, consolidate all keys within the month to the final date or to a month label like YYYY-MM.
- Caching: Cache monthly values aggressively. For API freshness without over-calling, schedule updates once a day or when you detect a policy announcement window.
- Spreads: To compute a spread versus another symbol (e.g., DNB_RATE − CIBOR_3M), fetch both latest or aligned historical values and subtract. Store the sign convention consistently in your codebase.
- Payments and APR math: DNB_RATE is an annualized policy rate. If you calculate product-level APRs, explicitly state your compounding (simple interest vs. monthly compounding). Keep the rate units consistent across calculations.
- Monitoring: Use the fluctuation endpoint in scheduled jobs to detect non-zero change and trigger downstream alerts or data refresh tasks in your analytics warehouse.
For architecture references and endpoint behavior, see the MCP, and browse endpoint docs on interestratesapi.com.
End-to-End Workflow Example for a DNB_RATE Dashboard
Here’s a lightweight sequence you can adapt:
- At service start, call /latest for DNB_RATE and cache rate, effective date, and currency.
- Render the headline “DNB Policy Rate” with the as-of date and value.
- For charts, call /timeseries with a multi-year range to draw the policy path over time.
- Compute spread to an interbank benchmark or another central-bank symbol by subtracting aligned dates from /timeseries (or use /latest for real-time spread).
- If you display monthly candlesticks, call /ohlc&period=monthly and map period → open/high/low/close bars.
- Nightly, call /fluctuation over the last quarter to populate a “change” widget, and log the JSON in your warehouse for auditability.
- When users compare loan costs, call /convert or apply your own amortization formula using the latest rate.
All Seven Endpoints, Summarized With DNB_RATE
- /symbols: Find and confirm DNB_RATE’s metadata and DKK denomination.
- /latest: Get the current DNB_RATE and its effective date.
- /historical: Retrieve DNB_RATE applicable to a specific calendar day (mapped within its month).
- /timeseries: Build historical curves and align values for spread computation.
- /fluctuation: Summarize changes across a date range.
- /ohlc: Visualize periodized opens, highs, lows, closes for charting.
- /convert: Compare simple-loan interest costs between DNB_RATE and another benchmark.
Every endpoint is a GET and uses the api_key query parameter in the URL. Base URL is always https://interestratesapi.com/api/v1/. No headers are required for authentication.
Use Cases for Fintech and Analytics Teams
- Mortgage pricing systems: Reprice lending products indexed to Danish policy rates; compute sensitivity to 25bp shocks.
- Treasury dashboards: Monitor DNB_RATE alongside EUR and USD policy benchmarks for cross-currency funding decisions.
- Macro research pipelines: Pull clean monthly data for time-series regressions, impulse response analysis, or Taylor-rule diagnostics.
- Risk and ALM: Align DNB_RATE to internal balance-sheet models and scenario testing.
- Loan comparison tools: Use /convert or custom amortization math to present side-by-side interest cost differences.
To start building, Register for an API key and review endpoint semantics in the MCP. You can also visit interestratesapi.com for an overview, then Register for Interest Rates API and Get started with Interest Rates API.
FAQ
Q: What units does DNB_RATE use?
A: Percent per annum. Interpret 2.1 as 2.10% per year. When converting to monthly calculations, divide by 12 and convert to a decimal rate (e.g., 0.021/12) for amortization formulas.
Q: How are effective dates handled for monthly symbols?
A: For monthly symbols like DNB_RATE, the API uses the last day with data in the month when you request a specific date in that month. The dates map in /latest and time series endpoints indicates the effective date for each symbol.
Q: Can I cache DNB_RATE safely?
A: Yes. Because it is monthly, it changes infrequently. Cache the latest value and refresh on a predictable schedule (e.g., daily or around policy announcements). Always display the as-of date next to the value.
Q: How do I compute a spread against another rate?
A: Fetch aligned values (preferably on the same effective date) and subtract: spread = DNB_RATE − other_rate. Use /timeseries to align dates over history, or /latest for a snapshot spread.
Q: Are all endpoints GET and do they all use api_key in the query string?
A: Yes. All endpoints are GET under https://interestratesapi.com/api/v1/, and authentication is always via the api_key query parameter.
Build your DNB policy-rate integrations today. Read the docs at interestratesapi.com, explore the Interest Rates API MCP, and Register to get your API key and ship your dashboard, risk model, or pricing engine.