BYTETOOLS

National Bank of Georgia API

Free National Bank of Georgia API with no key: official lari rates for every quoted currency, each with its quotation quantity and the day-on-day change. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the National Bank of Georgia API?

The National Bank of Georgia publishes its official lari exchange rates as a free JSON API with no key required. Each currency object carries the rate, the number of units it applies to, and the change against the previous publication.

This feed is unusual in shipping the daily delta with the rate. `diff` holds the change against the previous fixing, so a widget showing an arrow and a movement figure needs one request rather than two plus a cache. The sign convention is worth checking against `diffFormated`, which is the same magnitude rendered as a display string without the sign.

The `quantity` field is load-bearing and easy to miss because it varies wildly: the dirham is quoted per 10 units and the Armenian dram per 1,000, while the Australian dollar is per 1. A conversion routine that assumes per-unit quotes will be off by three orders of magnitude on some currencies and exactly right on others, which is the worst possible failure mode because it looks like it works.

Quick facts

Base URL
https://nbg.gov.ge/gw/api/ct/monetarypolicy/currencies
Authentication
No key or registration required.
Rate limit
No documented limit. Rates are published once per working day.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the National Bank of Georgia API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Official GEL rates for every quoted currency

GET https://nbg.gov.ge/gw/api/ct/monetarypolicy/currencies/en/json/

curl
curl 'https://nbg.gov.ge/gw/api/ct/monetarypolicy/currencies/en/json/'
JavaScript (fetch)
const res = await fetch("https://nbg.gov.ge/gw/api/ct/monetarypolicy/currencies/en/json/");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://nbg.gov.ge/gw/api/ct/monetarypolicy/currencies/en/json/", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "date": "2026-08-21T00:00:00.000Z",
    "currencies": [
      {
        "code": "AED",
        "quantity": 10,
        "rateFormated": "7.1141",
        "diffFormated": "0.0023",
        "rate": 7.1141,
        "name": "United Arab Emirates Dirhams",
        "diff": -0.0023,
        "date": "2026-08-20T17:01:02.046Z",
        "validFromDate": "2026-08-21T00:00:00.000Z"
      },
      {
        "code": "AMD",
        "quantity": 1000,
        "rateFormated": "7.1540",
        "diffFormated": "0.0095",
        "rate": 7.154,
        "name": "Armenian Dram",
        "diff": -0.0095,
        "date": "2026-08-20T17:01:02.046Z",
        "validFromDate": "2026-08-21T00:00:00.000Z"
      },
      {
        "code": "AUD",
        "quantity": 1,
        "rateFormated": "1.8620",
        "diffFormated": "0.0117",
        "rate": 1.862,
        "name": "Australian Dollar",
        "diff": 0.0117,
        "date": "2026-08-20T17:01:02.046Z",
        "validFromDate": "2026-08-21T00:00:00.000Z"
      },
      {
        "code": "AZN",
        "quantity": 1,
        "rateFormated": "1.5371",
        "diffFormated": "0.0004",
        "rate": 1.5371,
        "name": "Azerbaijan Manat",
        "diff": -0.0004,
        "date": "2026-08-20T17:01:02.046Z",
        "validFromDate": "2026-08-21T00:00:00.000Z"
      },
      {
        "code": "BRL",
        "quantity": 1,
        "rateFormated": "0.5048",
        "diffFormated": "0.0040",
        "rate": 0.5048,
        "name": "Brazilian Real",
        "diff": 0.004,
        "date": "2026-08-20T17:01:02.046Z",
        "validFromDate": "20

Parameters

ParameterTypeRequiredDescription
langpath segmentRequired`en` or `ka`, controlling the `name` labels. en
datequeryOptionalISO date to fetch a past publication instead of the current one. 2026-08-20
currenciesqueryOptionalComma-separated ISO codes to narrow the response. USD,EUR

Response fields

datestring
Publication date of the list, ISO 8601 with a Z offset.
currencies[].codestring
ISO 4217 code.
currencies[].ratenumber
Lari per `quantity` units of the currency.
currencies[].quantityinteger
Units the rate applies to — 1, 10, 100 or 1000. Divide `rate` by it for a per-unit value.
currencies[].diffnumber
Signed change against the previous publication, in the same units as `rate`.
currencies[].validFromDatestring
When the rate takes effect, which is normally the day after it is calculated.
currencies[].namestring
Display name in the requested language.

What you can build with the National Bank of Georgia API

  • Show the official lari rate with its daily movement in a single request
  • Convert amounts for Georgian invoicing and reporting
  • Track a specific currency pair over time by iterating the `date` parameter
  • Populate a currency table with correct per-unit rates using `quantity`

Common errors and how to fix them

Rate off by 10x, 100x or 1000x

`quantity` was ignored.

Fix: Always divide `rate` by `quantity`. The value varies per currency and changes when the NBG rebases a quotation.

Empty currencies array

No publication for that date.

Fix: Weekends and Georgian public holidays have no fixing; step back to the previous working day.

Missing trailing slash

Some paths under this gateway are strict about the trailing slash.

Fix: Keep the trailing `/json/` exactly as documented rather than normalising it away.

National Bank of Georgia API — frequently asked questions

Is the National Bank of Georgia exchange rate API free?

Yes, it requires no key or account and sends permissive CORS headers, so it can be called directly from browser code. The NBG publishes the rate list as open data, and historical dates are available through the same path with a `date` parameter.

What does the quantity field mean?

It is the number of foreign currency units the rate is quoted for. AED is quoted per 10 units and AMD per 1,000, so the per-unit rate is `rate` divided by `quantity`.

Is the diff field the percentage change?

No, it is an absolute change in lari against the previous publication, in the same quotation units as `rate`. Compute a percentage yourself if you need one.

Why does validFromDate differ from date?

The NBG calculates a rate on one day and it takes effect the next. `date` is the publication timestamp and `validFromDate` is when the rate applies.

Tools that pair with this API

National Bank of Georgia is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.