API i kursit të këmbimit në lekë
Kurset e blerjes dhe të shitjes kundrejt lekut (ALL) nga Banka e Shqipërisë, bankat tregtare dhe këmbimoret — një dokument JSON, i rifreskuar çdo 15 minuta. Kurset aktuale nuk kërkojnë çelës dhe as regjistrim.
Nisja e shpejtë
Një kërkesë kthen të gjitha valutat, me kuotimin e secilit institucion pranë mesatares.
curl https://api.kursi.al/api/ratesconst { timestamp, rates } = await fetch('https://api.kursi.al/api/rates').then(r => r.json());
console.log(`1 EUR = ${rates.EUR.buy} / ${rates.EUR.sell} ALL (${timestamp})`);
// Një institucion i vetëm në vend të mesatares — undefined nëse nuk e kuotoi EUR-on këtë cikël:
const bkt = rates.EUR.sources.BKT;import requests
data = requests.get("https://api.kursi.al/api/rates", timeout=10).json()
eur = data["rates"]["EUR"]
print(eur["buy"], eur["sell"], data["timestamp"])Aksesi
Të hapura
Falas · pa çelësGET /api/ratesGET /api/rate/{code}GET /health
Pa regjistrim. CORS është i hapur, prandaj këto mund të thirren edhe nga shfletuesi në çdo faqe, jo vetëm nga serveri.
Me çelës
Me pagesëGET /api/history/{code}GET /api/graph/{code}
Çelësin dërgojeni në header-in X-API-Key. Për çelësin dhe çmimet, na shkruani në info@oda.al.
curl "https://api.kursi.al/api/history/EUR?from_date=2026-09-01&to_date=2026-09-07&source=BKT" \
-H "X-API-Key: celesi-juaj"Pa një çelës të vlefshëm, këto endpoint-e përgjigjen:
HTTP/1.1 403 Forbidden
{ "detail": "This endpoint requires an API key. Contact info@oda.al for access and pricing." }Endpoint-et
URL-ja bazë: https://api.kursi.al. Çdo endpoint është një GET që kthen JSON; {code} është kodi ISO 4217 i valutës, me shkronja të mëdha ose të vogla.
Kurset aktuale
Falas · pa çelësGET /api/rates
Të gjitha valutat në një dokument — i njëjti nga i cili vizatohet tabela e kurseve në këtë faqe.
{
"timestamp": "2026-09-21T14:30:00+02:00",
"rates": {
"EUR": {
"buy": 91.25,
"sell": 91.71,
"change": "-0.11%",
"trend": "down",
"sources": {
"BOA": { "buy": 91.49, "sell": 91.49 },
"BKT": { "buy": 91.15, "sell": 91.85 },
"Iliria98": { "buy": 91.10, "sell": 91.80 }
}
},
"NOK": {
"buy": 7.74,
"sell": 8.19,
"change": "+0.13%",
"trend": "up",
"sources": {
"BOA": { "buy": 8.48, "sell": 8.48 },
"Iliria98": { "buy": 7.00, "sell": 7.90 },
"Raiffeisen": { "buy": 1.45, "sell": 15.45, "in_avg": false }
}
}
}
}timestamp- Kur u mblodhën këto kurse — ISO 8601 me diferencën orare të Shqipërisë.
buy,sell- Mesatarja e burimeve që e kuotuan valutën në atë cikël, në lekë për një njësi.
change,trend- Lëvizja e kursit të mesëm kundrejt rreth 24 orëve më parë, si tekst (
"+0.12%"), dhe drejtimi i saj:up,downoseneutral. sources- Kuotimi i secilit institucion. Një burim që nuk e kuotoi valutën mungon.
"in_avg": falseshënon një kuotim që u la jashtë mesatares — shihni Konventat.
Një valutë e vetme
Falas · pa çelësGET /api/rate/{code}
Kursi i fundit i një valute të vetme. rate është mesi mes blerjes dhe shitjes mesatare.
{
"currency": "EUR",
"timestamp": "2026-09-21T14:30:00+02:00",
"sources": {
"BOA": { "buy": 91.49, "sell": 91.49 },
"BKT": { "buy": 91.15, "sell": 91.85 },
"Iliria98": { "buy": 91.10, "sell": 91.80 }
},
"rate": 91.48,
"buy": 91.25,
"sell": 91.71,
"type": "avg"
}Me ?type=buy ose ?type=sell përgjigjja ngushtohet në atë anë: rate është mesatarja për të, dhe sources jep një numër të vetëm për çdo institucion.
{
"currency": "EUR",
"timestamp": "2026-09-21T14:30:00+02:00",
"sources": { "BOA": 91.49, "BKT": 91.15, "Iliria98": 91.1 },
"rate": 91.25,
"type": "buy"
}Historiku
Kërkon çelësGET /api/history/{code}
Çdo kurs i regjistruar në një interval datash — një rresht për çdo cikël përditësimi — për mesataren ose për një burim të vetëm. I bërë për rakordim, kërkime tregu dhe eksporte.
from_date- Fillimi i intervalit:
2026-09-01ose2026-09-01 08:00:00, në orën e Shqipërisë. Jepeni gjithmonë — pa të, përgjigjja nis nga rreshti i parë që kemi. to_date- Fundi i intervalit. Një datë pa orë e përfshin të gjithë atë ditë.
sourceAVG(parazgjedhja), ose një ngaBOA, ADON, BKT, Raiffeisen, Iliria98, AlbKredit.
[
{ "timestamp": "2026-09-01 09:00:00", "buy": 91.15, "sell": 91.85, "source": "BKT" },
{ "timestamp": "2026-09-01 09:15:00", "buy": 91.15, "sell": 91.85, "source": "BKT" },
{ "timestamp": "2026-09-01 09:30:00", "buy": null, "sell": null, "source": "BKT" }
]Datat këtu janë në orën e Shqipërisë, pa diferencë orare. buy dhe sell janë null në ciklet ku burimi i zgjedhur nuk pati kuotim.
Seritë e grafikut
Kërkon çelësGET /api/graph/{code}
Seritë pas grafikëve të kësaj faqeje, të grupuara sipas periudhës dhe gati për t’u vizatuar.
timeframe1D,1W,1M(parazgjedhja),3M,6M,1YoseYTD.source- Një burim i vetëm (
AVGsi parazgjedhje). Kthen{ labels, buy_data, sell_data }; pikat ku burimi nuk pati kuotim hiqen. sources- Disa njëherësh, të ndarë me presje:
sources=BOA,BKT,Iliria98. Kthen çdo seri mbi një bosht të përbashkët kohe, menullaty ku një burim nuk pati kuotim — një kërkesë e vetme për një grafik të tërë krahasimi.
{
"labels": ["22 Aug", "23 Aug", "24 Aug"],
"series": {
"BOA": { "buy": [91.60, 91.58, 91.54], "sell": [91.60, 91.58, 91.54] },
"BKT": { "buy": [91.20, null, 91.15], "sell": [91.90, null, 91.85] }
}
}labels janë tekste për shfaqje, në orën e Shqipërisë: 14:30 për 1D, Mon 21 për 1W, 21 Sep deri në gjashtë muaj, 21 Sep 26 për një vit. Shkurtimet e ditëve dhe të muajve vijnë në anglisht, në të dyja gjuhët — po ju duhen në shqip, ndërtojini vetë nga data juaj.
Gjendja e shërbimit
Falas · pa çelësGET /health
A po mblidhen ende kurset, burim pas burimi. status është ok, degraded (një burim po dështon, të tjerët janë të freskët) ose down — dhe down vjen me HTTP 503, që një monitorues uptime-i ta ndjekë. Ia vlen ta kontrolloni para se të alarmoheni për një kurs që nuk ka lëvizur.
{
"status": "ok",
"last_run": "2026-09-21T14:30:04+02:00",
"database": "ok",
"failing_sources": [],
"sources": {
"BKT": {
"status": "ok",
"last_success": "2026-09-21T14:30:02+02:00",
"last_attempt": "2026-09-21T14:30:02+02:00",
"consecutive_failures": 0,
"currencies": 7
}
}
}Konventat
- Lekë për një njësi — gjithmonë. Çdo kurs është çmimi i 1 njësie të valutës së huaj në lekë. Përfshirë jenin dhe rublën, që Banka e Shqipërisë i publikon për 100: API-ja i kthen, që burimet të jenë drejtpërdrejt të krahasueshme.
- Blerja dhe shitja janë të institucionit.
buyështë ajo që ju paguan ai për valutën e huaj;sellështë ajo që paguani ju për ta marrë. - Çfarë është mesatarja. Mesatarja e çdo burimi që e kuotoi valutën në atë cikël. Kursi zyrtar i Bankës së Shqipërisë numërohet si një prej tyre; është kurs referues — blerja është e barabartë me shitjen dhe askush nuk këmben me të. Nëse ju duhet ajo që paguan një bankë a këmbimore e caktuar, lexojeni nga
sources. - Kuotimet e lëna jashtë mesatares. Disa banka i publikojnë valutat që tregtohen rrallë me një diferencë aq të gjerë sa nuk është ofertë (1.45 / 15.45 për koronën norvegjeze). Kur hendeku mes blerjes dhe shitjes është më shumë se gjysma e vetë kursit, kuotimi mbetet në
sourcesme"in_avg": falsedhe mesatarja e shpërfill. Kuotimet dukshëm të gabuara — larg çdo burimi tjetër, ose me një kërcim të pabesueshëm — nuk publikohen fare. - Jo çdo burim kuoton çdo valutë. Një çelës që mungon te
sourcesdo të thotë se nuk pati kuotim. Për disa valuta, një këmbimore e vetme është i gjithë tregu; mesatarja e tyre është thjesht ai kuotim. - Koha. Kurset ndjekin ditën shqiptare: datat janë
Europe/Tirane./api/rates,/api/ratedhe/healthe mbajnë diferencën orare;/api/historykthen orën lokale pa të, dhe i lexon parametrat e datave po ashtu. - Freskia dhe ruajtja. Burimet lexohen çdo 15 minuta. Përgjigjet mbajnë
Cache-Control: max-age=60, prandaj një kërkesë më shumë se një herë në minutë kthen të njëjtin dokument — ruajeni nga ana juaj dhe qëndroni larg kufirit të kërkesave.
Valutat
Kundrejt lekut shqiptar (ALL):
Burimet
| Id | Institucioni | Lloji |
|---|---|---|
BOA | Banka e Shqipërisë | Kurs zyrtar referues |
ADON | ADON | Kurs tregu — vend ku mund të këmbeni |
BKT | BKT | Kurs tregu — vend ku mund të këmbeni |
Raiffeisen | Raiffeisen | Kurs tregu — vend ku mund të këmbeni |
Iliria98 | Iliria98 | Kurs tregu — vend ku mund të këmbeni |
AlbKredit | AlbKredit | Kurs tregu — vend ku mund të këmbeni |
AVG pranohet kudo ku pranohet një burim, dhe do të thotë mesatarja. Më shumë për secilin institucion te faqja e burimeve.
Gabimet
| Statusi | Përgjigjja | Kur |
|---|---|---|
| 400 | { "detail": "Unknown source 'XYZ'. Valid: AVG, BOA, …" } | Një source i panjohur, ose një datë që nuk është YYYY-MM-DD / YYYY-MM-DD HH:MM:SS. |
| 403 | { "detail": "This endpoint requires an API key. …" } | Një endpoint me çelës u thirr pa një X-API-Key të vlefshëm. |
| 404 | { "error": "Currency not found" } | /api/rate/{code} për një valutë që nuk e mbledhim. |
| 429 | — | Shumë kërkesa nga IP-ja juaj. Prisni pak dhe riprovoni; po t’i ruani përgjigjet për një minutë, nuk e shihni fare. |
| 503 | { "error": "Database unavailable" } | Problem i përkohshëm i backend-it. Edhe /health përgjigjet me 503 kur kurset kanë pushuar së përditësuari. |
Gabimet e validimit përdorin detail, të tjerët error. Në një dështim të rrallë të backend-it, një përgjigje 200 mund të mbajë { "error": … } në vend të të dhënave, prandaj trajtojeni mungesën e çelësit rates si dështim, në vend që të lexoni përtej tij.
Widgeti
Pa shkruar kod: një iframe që tregon kurset e ditës në faqen tuaj, me burimet dhe valutat që zgjidhni. Ngarkon një stil dhe një skript të vogël, dhe rifreskohet vetë.
Konfiguro Widget-in
Preview
Pyetje të shpeshta
A është vërtet falas API-ja e kurseve aktuale?
Po. /api/rates dhe /api/rate/{code} nuk kërkojnë çelës dhe as regjistrim, dhe mund të thirren nga serveri juaj ose drejtpërdrejt nga shfletuesi, në çdo faqe. Kërkesat kanë një kufi për çdo IP, që shërbimi të qëndrojë i qëndrueshëm për të gjithë; të dhënat ndryshojnë çdo 15 minuta, prandaj ruajtja e tyre për një minutë nuk ju kushton asgjë.
Si mund të marr një çelës API?
Çelësat jepen me dorë. Na shkruani në info@oda.al me dy rreshta se çfarë po ndërtoni dhe cilat endpoint-e ju duhen; ju kthejmë përgjigje me çmimet dhe me një çelës.
Përse historiku dhe grafikët janë me pagesë?
Kurset aktuale janë një dokument i vogël. Vitet me histori për çdo burim, të regjistruara në çdo përditësim, janë ajo që kushton për t’u ruajtur dhe për t’u shërbyer — prandaj ajo pjesë është shërbim me pagesë dhe kurset aktuale mbeten falas.
Nga vijnë kurset?
Nga ajo që publikon vetë secili institucion: kursi zyrtar i Bankës së Shqipërisë, dy banka tregtare dhe tri këmbimore. Faqja e burimeve i rendit të gjitha dhe shpjegon si llogaritet mesatarja dhe cilat kuotime lihen jashtë saj.
A mund të marr kursin e një banke të vetme në vend të mesatares?
Po. Çdo valutë mban një objekt sources me blerjen dhe shitjen e secilit institucion, dhe /api/history e /api/graph pranojnë parametrin source. Një burim që nuk e kuotoi valutën thjesht mungon.
Ju duhet historiku ose të dhënat e grafikëve?
Na tregoni çfarë po ndërtoni dhe cilat endpoint-e ju duhen; ju kthejmë përgjigje me çmimet dhe me një çelës.
Na shkruani në info@oda.al