Economy / Retail currency exchange
NBG commercial-bank exchange-rate comparison
The National Bank's comparison service aggregates current buy and sell offers reported by 13 commercial banks. It distinguishes branch, internet-bank, and mobile-bank channels and can return different offers for natural-person/business context, transaction direction, currency, amount, selected banks, and payment time. Unlike the separate official daily reference rate, these values are presented as online, continuously updateable bank offers.
Provenance and access
How the data is reached
Public JSON endpoints behind NBG's currency-rates page. No authentication was required during testing. The exchange query accepts currency ID, amount, datetime, optional bank IDs, user type, operation type, and exchange channel filters.
Publicly displayed official comparison data; a separate data-reuse license was not found. NBG requires users to verify rates and terms directly with the selected bank before a transaction.
Current commercial-bank comparison page
https://nbg.gov.ge/en/currency-rates ↗- Method
- Browser page with filters and export
- Format
- HTML backed by JSON
- Authentication
- None
Participating banks
https://tariffcompare.nbg.gov.ge/api/Subject/get-subjects ↗- Method
- GET with v1/status parameters
- Format
- JSON array
- Authentication
- None
- Method
- GET with v1 parameter
- Format
- JSON array
- Authentication
- None
Bank exchange offers
https://tariffcompare.nbg.gov.ge/api/Exchanges/get-exchanges ↗- Method
- GET with currencyId, amount, datetime, and optional filter parameters
- Format
- Nested JSON array
- Authentication
- None
A minimal USD request using currencyId=5 returned offers for 13 banks. Incorrect/inactive currency IDs can return the same structure with null values.
NBG comparison rate
https://tariffcompare.nbg.gov.ge/api/Exchanges/nbg-exchanges ↗- Method
- GET with v1 and codes parameters
- Format
- JSON array
- Authentication
- None
Field-level detail
What is actually returned
Bank subject
A participating commercial bank available as a comparison filter.
| Field / path | Type | Null? | Example | Meaning | Freshness |
|---|---|---|---|---|---|
id | number | No | 2 | Internal bank/subject identifier used by filter requests. | reference |
name | string | No | Credo Bank | Display name of the bank. | reference |
Currency option
Currency metadata returned for filter construction.
| Field / path | Type | Null? | Example | Meaning | Freshness |
|---|---|---|---|---|---|
id | number | No | 5 | Internal currency identifier used by exchange queries. | reference |
code | string | No | USD | Currency alphabetic code. | reference |
name | string | No | USD | Display name/code used by the comparison interface. | reference |
kCoeficient | number | No | 1 | Quantity/scaling coefficient for the currency.Provider spelling is `kCoeficient`. Values such as 100 or 1000 occur for some currencies. | reference |
isActive | boolean | No | true | Whether the currency is currently active in the service. | reference |
status | string | No | Active | Text status of the currency option.Both Active and Inactive were observed. | reference |
Bank offer
One bank and its offers grouped by service channel.
| Field / path | Type | Null? | Example | Meaning | Freshness |
|---|---|---|---|---|---|
name | string | No | Credo Bank | Bank display name. | reference |
exchanges | ExchangeChannel[] | No | 3 channel records | Offers grouped by branch, internet bank, and mobile bank. | live |
Exchange channel
One delivery/service channel within a bank offer.
| Field / path | Type | Null? | Example | Meaning | Freshness |
|---|---|---|---|---|---|
exchangeType | enum-like string | No | InternetBank | Channel through which the exchange is offered.Observed values: Branch, InternetBank, MobileBank. | reference |
exchangeRates | ExchangeRate[] | No | Buy and Sell records | Directional rates available in this channel. | live |
Exchange rate
One directional buy or sell offer.
| Field / path | Type | Null? | Example | Meaning | Freshness |
|---|---|---|---|---|---|
operationType | enum-like string | No | Buy | Whether the bank buys or sells the selected currency.Observed values: Buy and Sell. | reference |
value | number | Yes | 2.625 | Reported GEL rate for the selected currency/channel/context.Null occurs when no applicable offer is returned. | live |
isSpecial | boolean | No | false | Provider flag indicating a specially marked offer in the comparison response.The exact business rule for `true` was not documented in the inspected page code. | live |
NBG comparison rate
NBG rate returned alongside the commercial-bank comparison.
| Field / path | Type | Null? | Example | Meaning | Freshness |
|---|---|---|---|---|---|
code | string | No | USD | Currency code. | reference |
name | string | No | US Dollar | Currency display name. | reference |
rate | number | No | 2.6301 | Current NBG comparison/reference value. | live |
quantity | number | No | 1 | Foreign-currency quantity to which the rate applies. | reference |
Representative evidence
Sample records
Current USD offer fragment
Retrieved 2026-07-22 14:02 Asia/Tbilisi
[
{
"name": "Credo Bank",
"exchanges": [
{
"exchangeType": "Branch",
"exchangeRates": [
{
"operationType": "Buy",
"value": 2.623,
"isSpecial": false
},
{
"operationType": "Sell",
"value": 2.637,
"isSpecial": false
}
]
},
{
"exchangeType": "InternetBank",
"exchangeRates": [
{
"operationType": "Buy",
"value": 2.625,
"isSpecial": false
},
{
"operationType": "Sell",
"value": 2.635,
"isSpecial": false
}
]
}
]
}
]The branch and internet-bank offers differed in the live response, demonstrating why channel is a meaningful field rather than presentation metadata.
Currency option
Retrieved 2026-07-22 14:02 Asia/Tbilisi
{
"id": 5,
"code": "USD",
"name": "USD",
"kCoeficient": 1,
"isActive": true,
"status": "Active"
}Boundaries
Reliability, caveats, and privacy
What held up
- All four tested JSON endpoints responded without authentication.
- The official page states the commercial-bank information is updated online in real time.
- The live USD response contained distinct values by bank and service channel.
What can go wrong
- Rates and terms are supplied by banks and can change at any time; NBG tells users to verify before transacting.
- Query semantics for userType, operationTypes, exchangeTypes, and `isSpecial` were inferred from the public page implementation and not found in public API documentation.
- An incorrect or inactive currency ID can yield structurally valid records with null prices.
- No machine-readable data license was located.
Cross-source possibilities
Ideas using this source
Source trail
Primary pages and documentation
https://nbg.gov.ge/en/currency-rateshttps://tariffcompare.nbg.gov.ge/api/Subject/get-subjects?v1=true&status=active- PrimaryCurrency endpoint ↗
https://tariffcompare.nbg.gov.ge/api/Currency/currencies?v1=true https://tariffcompare.nbg.gov.ge/api/Exchanges/nbg-exchanges?v1=true&codes=USD