Saltar a contenido

Cliente BCV

El cliente BCV permite obtener las tasas de cambio publicadas por el Banco Central de Venezuela (BCV), tanto las tasas oficiales publicadas en el sitio web del BCV como las tasas reportadas por cada banco del sistema financiero venezolano.

Funciones disponibles

get_rates_by_bcv

Retorna las tasas de cambio publicadas directamente en el sitio web del BCV.

from pyvenezuela import get_rates_by_bcv
from pyvenezuela import BCVCurrencyEnum

rates = get_rates_by_bcv()
# -> dict[BCVCurrencyEnum, float] | None

Retorna: dict[BCVCurrencyEnum, float] con las tasas en bolívares por unidad de moneda extranjera, o None si el sitio no está disponible.

Caché: Los resultados se cachean por 8 horas en memoria. Si ocurre un error al actualizar, se retorna el último valor válido.

if rates:
    usd = rates[BCVCurrencyEnum.USD]
    eur = rates[BCVCurrencyEnum.EUR]
    print(f"1 USD = {usd:.4f} Bs.")
    print(f"1 EUR = {eur:.4f} Bs.")

get_rates

Retorna las tasas de todos los bancos del sistema para un rango de fechas.

from pyvenezuela import get_rates
import datetime

# Últimos 30 días (por defecto)
rates = get_rates()

# Rango específico
rates = get_rates(
    start_date=datetime.date(2024, 1, 1),
    end_date=datetime.date(2024, 1, 31),
)
# -> dict[BankEnum, list[BCVBankRatesModel]] | None

Parámetros:

Parámetro Tipo Descripción
start_date datetime.date \| None Inicio del rango (por defecto: hace 30 días)
end_date datetime.date \| None Fin del rango (por defecto: hoy)

Retorna: Diccionario con cada banco y su lista de tasas históricas, o None si el sitio no está disponible.


get_rates_by_bank

Retorna las tasas de un banco específico para un rango de fechas.

from pyvenezuela import get_rates_by_bank
from pyvenezuela import BankEnum
import datetime

rates = get_rates_by_bank(
    bank=BankEnum.BANCO_DE_VENEZUELA,
    start_date=datetime.date(2024, 1, 1),
    end_date=datetime.date(2024, 1, 31),
)
# -> list[BCVBankRatesModel]

Parámetros:

Parámetro Tipo Descripción
bank BankEnum Banco a consultar
start_date datetime.date \| None Inicio del rango
end_date datetime.date \| None Fin del rango

Retorna: Lista de BCVBankRatesModel. Retorna lista vacía si no hay datos disponibles.


Modelos

BCVBankRatesModel

Tasa de cambio de un banco para una fecha específica.

from pyvenezuela import BCVBankRatesModel

rate: BCVBankRatesModel
rate.date        # datetime.date — fecha de la tasa
rate.buy_rate    # float — tasa de compra (Bs. por USD)
rate.sell_rate   # float — tasa de venta (Bs. por USD)

Enums

BCVCurrencyEnum

Monedas publicadas en el sitio del BCV.

Valor Descripción
BCVCurrencyEnum.USD Dólar estadounidense
BCVCurrencyEnum.EUR Euro
BCVCurrencyEnum.CNY Yuan chino
BCVCurrencyEnum.TRY Lira turca
BCVCurrencyEnum.RUB Rublo ruso

BankEnum

Bancos del sistema financiero venezolano disponibles.

from pyvenezuela import BankEnum

BankEnum.BANCAMIGA
BankEnum.BANCARIBE
BankEnum.BANCO_ACTIVO
BankEnum.BANCO_BICENTENARIO_DEL_PUEBLO
BankEnum.BANCO_DE_VENEZUELA
BankEnum.BANCO_DELSUR
BankEnum.BANCO_DEL_TESORO
BankEnum.BANCO_EXTERIOR
BankEnum.BANCO_FONDO_COMUN
BankEnum.BANCO_NACIONAL_DE_CREDITO
BankEnum.BANCO_OCCIDENTAL_DE_DESCUENTO
BankEnum.BANCO_PLAZA
BankEnum.BANCO_SOFITASA
BankEnum.BANCO_VENEZOLANO_DE_CREDITO
BankEnum.BANESCO
BankEnum.BANPLUS
BankEnum.BANCO_MERCANTIL
BankEnum.BBVA_PROVINCIAL
BankEnum.CIEN_PC_BANCO
BankEnum.CITIBANK
BankEnum.MI_BANCO
BankEnum.OTHER_BANKS

Ejemplo completo

from pyvenezuela import get_rates_by_bcv, get_rates_by_bank
from pyvenezuela import BCVCurrencyEnum, BankEnum
import datetime

# Tasa oficial BCV
rates = get_rates_by_bcv()
if rates:
    print(f"Tasa BCV hoy: 1 USD = {rates[BCVCurrencyEnum.USD]:.4f} Bs.")

# Historial de un banco (último mes)
hoy = datetime.date.today()
hace_un_mes = hoy - datetime.timedelta(days=30)

banesco_rates = get_rates_by_bank(
    bank=BankEnum.BANESCO,
    start_date=hace_un_mes,
    end_date=hoy,
)

print(f"\nTasas Banesco (últimos 30 días): {len(banesco_rates)} registros")
for rate in banesco_rates[-5:]:  # últimos 5
    print(f"  {rate.date}  compra: {rate.buy_rate:.4f}  venta: {rate.sell_rate:.4f}")