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.
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.
/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 |
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.