Documentación API tasa BCV

Todo lo que necesitas saber para integrar nuestra API en tu aplicación.
Guías completas, ejemplos de código y mejores prácticas.

Obtén tu API Key

Para acceder a tu API Key y consultar tu plan, inicia sesión o regístrate

Primeros Pasos

Nuestra API te permite acceder a las tasas oficiales del BCV de forma rápida y confiable.

1. Regístrate

Crea tu cuenta gratis en segundos

2. Obtén tu API Key

Recibe tu clave de acceso inmediatamente

3. Integra

Usa los ejemplos de código para integrar

Tasas de Dólar, Euro y USDT

Consulta la tasa oficial del BCV (dólar y euro) y la tasa de USDT/VES (promedio Binance P2P). Los límites de consultas y las monedas disponibles dependen del plan activo de tu cuenta: consulta tu panel de usuario o la sección de planes para ver los detalles actuales.

Nota: Se requiere autenticación mediante API Key (header Authorization) para estos tres endpoints.
Moneda Endpoint
Dólar (USD)GET /api/v1/dolar
Euro (EUR)GET /api/v1/euro
USDT (USDT/VES)GET /api/v1/usdt
Request
GET https://bcvapi.cc/api/v1/dolar
Headers:
Authorization: tu_api_key_aqui
Response
{
  "tasa": 880.12,
  "fuente": "https://www.bcv.org.ve/",
  "fecha": "2026-10-16",
  "registrado": true
}

La respuesta de /api/v1/euro y /api/v1/usdt tiene exactamente el mismo formato, con la tasa de esa moneda.

Plan gratuito — endpoint del dólar

Los límites de consultas y monedas disponibles dependen del plan activo de tu cuenta. El plan Gratuito incluye acceso al endpoint del dólar con un cupo limitado de consultas mensuales. Consulta la sección de planes o tu dashboard para el detalle actualizado.

Nota: Regístrate gratis para obtener tu API Key y empezar a consumir /api/v1/dolar de inmediato.

Las variantes /api/v1/dolar/public, /api/v1/euro/public y /api/v1/usdt/public existen únicamente como respaldo de baja demanda para la calculadora integrada del sitio y no están pensadas para integraciones externas; para cualquier integración, app o uso en producción usa siempre los endpoints con API Key.

Tasa Histórica por Fecha

Consulta la tasa registrada en una fecha específica. Es un endpoint de acceso libre pensado para integraciones ligeras; para el resto de la API (tasas en tiempo real de dólar, euro y USDT) se requiere API Key.

Request
GET https://bcvapi.cc/api/v1/rate/by-date?date=2026-08-07¤cy=usd

Parámetro currency: usd (dólar), eur (euro) o usdt.

Response
{
  "tasa": 880.12,
  "fecha": "2026-10-16 00:00:00",
  "moneda": "USD",
  "fuente": "BCV",
  "registrado": true
}

Fechas Disponibles en el Historial

Lista todas las fechas con tasa registrada para una moneda, útil para poblar selectores de fecha. Endpoint de acceso libre.

Request
GET https://bcvapi.cc/api/v1/available-dates?currency=usdt

Parámetro currency (opcional, por defecto usd): usd, eur o usdt.

Response
{
  "currency": "usdt",
  "source": "BINANCE_USDT",
  "available_dates": ["2026-08-07", "2026-08-06", "2026-08-05"],
  "date_range": { "min": "2026-06-01", "max": "2026-08-07" },
  "total_dates": 45
}

Ejemplos de Integración

import requests

headers = {'Authorization': 'tu_api_key_aqui'}

# Dólar, euro o USDT (mismo formato de respuesta)
response = requests.get("https://bcvapi.cc/api/v1/dolar", headers=headers)
data = response.json()
print(f"Tasa: {data['tasa']} Bs ({data['fecha']})")

# Tasa histórica por fecha (acceso libre)
historico = requests.get("https://bcvapi.cc/api/v1/rate/by-date", params={
    "date": "2026-08-07",
    "currency": "usdt"
}).json()
print(f"Tasa USDT el {historico['fecha']}: {historico['tasa']} Bs")
// Node.js (fetch nativo en v18+)
const apiKey = process.env.BCV_API_KEY;

const response = await fetch("https://bcvapi.cc/api/v1/dolar", {
  headers: { Authorization: apiKey }
});
const data = await response.json();
console.log(`Tasa: ${data.tasa} Bs (${data.fecha})`);

// Tasa histórica por fecha (acceso libre)
const historico = await fetch(
  "https://bcvapi.cc/api/v1/rate/by-date?date=2026-08-07¤cy=usdt"
).then(res => res.json());
console.log(`Tasa USDT: ${historico.tasa} Bs`);
$context = stream_context_create([
  'http' => [
    'header' => "Authorization: tu_api_key_aqui\r\n"
  ]
]);

// Dólar, euro o USDT (mismo formato de respuesta)
$response = file_get_contents(
  "https://bcvapi.cc/api/v1/dolar",
  false,
  $context
);
$data = json_decode($response, true);
echo "Tasa: " . $data["tasa"] . " Bs (" . $data["fecha"] . ")\n";

// Tasa histórica por fecha (acceso libre)
$historico = json_decode(file_get_contents(
  "https://bcvapi.cc/api/v1/rate/by-date?date=2026-08-07¤cy=usdt"
), true);
echo "Tasa USDT: " . $historico["tasa"] . " Bs";
// config/services.php
'bcvapi' => [
    'url' => env('BCV_API_URL', 'https://bcvapi.cc'),
    'key' => env('BCV_API_KEY'),
],

// En un servicio o controlador
use Illuminate\Support\Facades\Http;

$response = Http::withHeaders([
    'Authorization' => config('services.bcvapi.key'),
])->get(config('services.bcvapi.url') . '/api/v1/dolar');

if ($response->successful()) {
    $tasa = $response->json('tasa');
    $fecha = $response->json('fecha');
}

// Tasa histórica por fecha (acceso libre, sin API Key)
$historico = Http::get(config('services.bcvapi.url') . '/api/v1/rate/by-date', [
    'date' => '2026-08-07',
    'currency' => 'usd',
])->json();
import 'dart:convert';
import 'package:http/http.dart' as http;

const apiKey = String.fromEnvironment('BCV_API_KEY');
const baseUrl = 'https://bcvapi.cc';

Future<Map<String, dynamic>> obtenerTasaDolar() async {
  final response = await http.get(
    Uri.parse('$baseUrl/api/v1/dolar'),
    headers: {'Authorization': apiKey},
  );

  if (response.statusCode == 200) {
    return jsonDecode(response.body) as Map<String, dynamic>;
  }
  throw Exception('Error ${response.statusCode}: ${response.body}');
}

// Tasa histórica por fecha (acceso libre)
Future<Map<String, dynamic>> tasaPorFecha(String fecha) async {
  final uri = Uri.parse('$baseUrl/api/v1/rate/by-date')
      .replace(queryParameters: {'date': fecha, 'currency': 'usd'});
  final response = await http.get(uri);
  return jsonDecode(response.body) as Map<String, dynamic>;
}
# Con API Key (dólar, euro o usdt)
curl -X GET https://bcvapi.cc/api/v1/dolar \
  -H "Authorization: tu_api_key_aqui"

# Acceso libre: tasa histórica por fecha
curl -X GET "https://bcvapi.cc/api/v1/rate/by-date?date=2026-08-07¤cy=usdt"

Casos de uso reales

Integraciones típicas en Venezuela donde la tasa oficial del BCV es obligatoria o la referencia legal.

Facturación electrónica

Convierte montos en USD/EUR a bolívares al emitir facturas, notas de crédito o presupuestos. La respuesta JSON incluye tasa y fecha para auditoría.

Endpoint recomendado: GET /api/v1/dolar o /api/v1/euro con caché de 1 consulta por día hábil.

E-commerce

Muestra precios en bolívares en tiendas WooCommerce, Shopify custom o marketplaces. Actualiza el precio Bs al checkout sin depender del HTML del BCV.

Patrón: consulta en backend (cron o webhook) → guarda tasa en BD → frontend solo lee tu servidor.

SENIAT e impuestos

Declaraciones, retenciones y libros contables que exigen la tasa oficial publicada por el BCV. El endpoint /api/v1/rate/by-date permite recuperar la tasa de un día específico.

Útil para conciliar operaciones retroactivas o cierres de mes.

ERP y contabilidad

Sincroniza la tasa en SAP B1, Odoo, sistemas propios o hojas de cálculo corporativas. Un solo punto de integración para dólar, euro y USDT.

Combina /api/v1/available-dates para poblar selectores de período fiscal.

¿Por qué usar la API oficial en lugar de scrapear bcv.org.ve?

Muchos equipos intentan extraer la tasa directamente del sitio del BCV. Funciona hasta que deja de funcionar — y en producción eso cuesta dinero.

Criterio BCV API (recomendado) Scraping de bcv.org.ve
Formato de datos JSON estable con campos documentados (tasa, fecha, fuente) HTML/CSS cambia sin aviso; selectores frágiles
Disponibilidad Infraestructura dedicada; el BCV caído no tumba tu parser Si el sitio del BCV está lento o caído, tu app falla
Mantenimiento Actualizaciones de contrato en la API, no en tu código Requiere monitoreo manual y parches urgentes
Historial Endpoints by-date y available-dates listos Hay que archivar cada día o reconstruir historial
Legal / ToS Uso explícito vía API Key y términos del servicio Riesgo de bloqueo por IP o cambios anti-bot
Costo real Plan gratuito para pruebas; planes de pago predecibles Horas de desarrollo + incidentes en producción
Recomendación: usa la API en backend, cachea la tasa según tu caso de negocio (p. ej. una vez al día para facturación) y nunca expongas tu API Key en el navegador del cliente.

Códigos de error y respuestas

Todas las respuestas de error son JSON con al menos los campos error y mensaje. Algunas incluyen upgrade_url para renovar o ampliar el plan.

Código Situación Qué hacer
200 OK — solicitud exitosa Procesa tasa y fecha normalmente.
401 Sin autenticación — falta el header Authorization Regístrate, obtén tu API Key y envíala en cada request.
403 Token inválido — la API Key no existe o está mal escrita Copia la clave desde tu panel; no uses espacios ni prefijos incorrectos.
403 Cuenta bloqueada o suscripción inactiva Revisa el estado de tu cuenta o renueva en /user/subscription.
403 Moneda no incluida en tu plan (p. ej. euro en plan solo dólar) Actualiza a un plan que incluya esa moneda o consulta solo endpoints permitidos.
403 Límite mensual alcanzado — cupo del período agotado Espera al siguiente ciclo, recarga consultas o sube de plan.
429 Límite diario / del período — demasiadas peticiones en poco tiempo Implementa caché; el contador se reinicia al día siguiente (reset_at en la respuesta).
500 Error interno del servidor Reintenta con backoff exponencial; si persiste, contacta soporte.
Ejemplos de cuerpo de error

401 — Sin API Key

{
  "error": "Acceso denegado",
  "mensaje": "Debes estar registrado para acceder a la API..."
}

403 — Límite mensual

{
  "error": "Límite mensual alcanzado",
  "mensaje": "...",
  "consultation_limit": 100,
  "upgrade_url": "https://bcvapi.cc/user/subscription"
}

403 — Moneda no disponible en tu plan

{
  "error": "Acceso denegado",
  "mensaje": "Esta tasa (Euro) es exclusiva para planes...",
  "upgrade_url": "https://bcvapi.cc/user/subscription"
}

429 — Cuota diaria

{
  "error": "Límite de solicitudes alcanzado",
  "mensaje": "Has superado tu cuota diaria...",
  "limit": 50,
  "used": 50,
  "reset_at": "2026-09-01 00:00:00"
}

Mejores Prácticas

Cache de Respuestas

Implementa un sistema de caché para reducir el número de solicitudes y mejorar el rendimiento.

Manejo de Errores

Siempre implementa un manejo adecuado de errores para garantizar la estabilidad de tu aplicación.

Seguridad

Nunca expongas tu API Key en el código del frontend. Úsala solo en el servidor.

Monitoreo

Monitorea tu uso de la API para evitar alcanzar los límites inesperadamente.