API curs valutar BNR
Gratuit, fără cheie de acces, JSON, CORS activat. Datele provin din feed-ul XML oficial BNR, cu istoric din 2005, și se actualizează în fiecare zi bancară, în jurul orei 13:00.
Pe scurt
- GET toate endpoint-urile sunt read-only, fără autentificare;
- CORS
Access-Control-Allow-Origin: *— apelabil direct din browser; - JSON răspunsuri UTF-8; cursurile sunt string-uri zecimale (precizie 4 zecimale, ca în comunicatul BNR);
- datele se schimbă o singură dată pe zi bancară — vă rugăm să folosiți cache local (răspunsurile trimit
Cache-Control); - atribuirea printr-un link către cupiu.ro este apreciată, nu obligatorie.
Cursurile unei zile
GET/api/rates/ — toate cursurile celei mai recente zile bancare (sau ale unei date anume).
date— opțional, formatYYYY-MM-DD;currency— opțional, un singur cod ISO (ex.EUR).
Serii istorice: zilnic, săptămânal, lunar, anual
GET/api/history/ — seria unei valute. Agregatele includ media, minimul și maximul perioadei (utile pentru curs mediu lunar/anual la contabilitate).
currency— obligatoriu (ex.EUR);interval—daily(implicit),weekly,monthly,yearly;from,to— opționale,YYYY-MM-DD. Fără interval explicit, seria zilnică se limitează la ultimul an; agregatele acoperă tot istoricul.
Valutele disponibile
GET/api/currencies/ — cele 40 de valute din feed-ul BNR, cu intervalul de date acoperit de fiecare.
Cursurile băncilor comerciale
GET/api/banks/ — băncile urmărite (13 active). GET/api/bank-rates/ — cursurile curente de vânzare/cumpărare, cu marja fiecărei bănci și referința BNR alături.
currency— opțional, implicitEUR;bank— opțional, slug-ul unei bănci din/api/banks/.
Conversii la cursul oficial
GET/api/convert/ — conversie între orice două valute (prin RON), inclusiv la cursul unei date din trecut — utilă pentru facturi și deconturi (Art. 290 Cod Fiscal). Pentru zilele nelucrătoare se aplică automat ultimul curs comunicat.
amount,from,to— obligatorii (ex.100,EUR,RON);date— opțional,YYYY-MM-DD.
Erori, stabilitate și utilizare corectă
- erorile vin ca JSON cu status potrivit:
400parametri invalizi,404date inexistente,405altă metodă decât GET; - formatul răspunsurilor este stabil: câmpurile existente nu se redenumesc și nu dispar; pot apărea doar câmpuri noi;
- fără limită strictă de apeluri, dar rugăm aplicațiile cu trafic mare să folosească cache (datele se schimbă o dată pe zi) — pentru descărcări în masă există datele deschise (CSV/JSON);
- specificația mașină-citibilă: OpenAPI 3 (openapi.json) — importabilă direct în Postman;
- întrebări sau nevoi speciale: contact.
English summary
Free JSON API for the official Romanian National Bank (BNR) exchange rates — no API key, CORS enabled (Access-Control-Allow-Origin: *), data since 2005, updated every banking day around 13:00 EET. Endpoints: /api/rates/ (daily rates, optional date and currency), /api/history/ (per-currency series with daily|weekly|monthly|yearly aggregation), /api/currencies/, /api/banks/ and /api/bank-rates/ (commercial banks' buy/sell rates), /api/convert/ (conversion at the official rate, including historical dates). Rates are decimal strings, RON-based. Attribution with a link to cupiu.ro is appreciated. Bulk downloads: open data (CSV/JSON).
Datele sunt preluate din comunicatul oficial BNR și au caracter informativ — vezi metodologia. Vezi și widget-ul gratuit dacă vrei cursul direct pe site-ul tău, fără cod.