¿Chocaste con el límite de 100 llamadas de Fixer? Aquí está el resto del terreno
El plan gratuito de Fixer da 100 llamadas al mes, fija la moneda base a EUR, y deja fuera el endpoint de conversión hasta que pagas. Nada de eso está oculto en letra pequeña, pero sorprende a quien solo lee la línea del titular "plan gratuito". Esto es lo que más hay disponible.
Dos cosas atrapan a los desarrolladores en el plan gratuito de Fixer: el presupuesto de llamadas se agota rápido en 100 llamadas al mes, y cada tipo vuelve basado en EUR porque "cualquier moneda base" solo se desbloquea en el nivel de pago BASIC en adelante. Tampoco hay endpoint /convert hasta entonces, así que convertir de USD a IDR significa obtener tipos basados en EUR y hacer la aritmética tú mismo. Debajo hay una mirada honesta a lo que reemplaza a Fixer, y lo que cuesta cada reemplazo en su lugar.
Los dos muros del plan gratuito de Fixer
Cien llamadas al mes equivalen a unas tres al día — bien para probar una vez, no para una app en vivo que revisa aunque sea un solo par a diario. Ese tope de llamadas es el muro con el que la mayoría choca primero.
El segundo muro: el plan gratuito cotiza todo desde EUR. USD a IDR significa obtener tipos EUR para ambas monedas y dividir, ya que tanto una base distinta de EUR como /convert requieren el nivel BASIC.
Qué reemplaza a un plan de 100 llamadas, solo EUR
El reemplazo correcto depende de cuál muro importó más. Pocos proveedores resuelven ambos gratis.
Frankfurter: sin tope, sin clave, una vez al día
Si el límite de llamadas fue lo que te sacó de Fixer y un tipo diario es aceptable, Frankfurter elimina el tope por completo. Código abierto, sin clave de API, con su propio servidor MCP en mcp.frankfurter.dev. Envuelve tipos de referencia del BCE publicados alrededor de las 16:00 CET en días hábiles, sin publicación de fin de semana — el sábado devuelve el cierre del viernes. Para un informe o un trabajo nocturno que solo necesita un tipo oficial al día, esto cierra ambos huecos de Fixer a la vez.
ExchangeRate-API: también sin clave, con condiciones de atribución
El endpoint de acceso abierto de ExchangeRate-API en open.er-api.com no necesita registro, y se actualiza una vez al día como Frankfurter. Las condiciones difieren: mostrar "Rates By Exchange Rate API" con un enlace de vuelta, y no redistribuir la respuesta en bruto. Superar el límite da un 429 que se despeja en 20 minutos. También existe un nivel con clave, de 1,500 solicitudes al mes.
Open Exchange Rates: diez veces las llamadas, sigue siendo una base
Open Exchange Rates eleva el techo a 1,000 solicitudes gratis al mes, un salto real sobre las 100 de Fixer. Pero el plan gratuito está fijado a USD en lugar de EUR, y las solicitudes de series temporales y conversión también quedan excluidas. Los planes de pago empiezan en $12 al mes y eliminan la restricción de base por completo.
exchangerate.host: mismo techo de 100 llamadas, ahora tras una clave
Vale la pena nombrarlo para que nadie cambie un muro por uno idéntico: exchangerate.host ahora funciona tras una clave de APILayer, con un tope de 100 solicitudes al mes en el plan gratuito — el número exacto que da Fixer. Pasar de Fixer a exchangerate.host resuelve el problema de la base EUR pero no el del conteo de llamadas.
Dónde encaja exchangerate.dev
El plan gratuito de exchangerate.dev da 10,000 llamadas al mes a 12 solicitudes por minuto, cien veces el tope de Fixer, sin tarjeta requerida para registrarte. No hay restricción de moneda base en ningún plan — cualquiera de los 465 pares del catálogo puede consultarse desde cualquiera de los dos lados. El historial diario desde 1999 es gratis en todos los planes, no reservado tras una mejora.
Los pares principales se actualizan aproximadamente cada 60 segundos durante la semana de negociación, respaldados por datos de referencia del BCE y la FRED para el resto. Cada respuesta incluye source, market_session, y un campo notice, así que el código puede distinguir un tipo en vivo de un dato diario directamente. Un endpoint /v1/convert viene incluido gratis, cerrando el hueco que Fixer deja hasta BASIC.
Sin paso intermedio por EUR, sin multiplicación del lado del cliente. derived: false significa que el par se cotiza directamente en lugar de triangularse a través de una tercera moneda.
Notas sobre la migración real
Cambiar de proveedor rara vez es un cambio de una línea. Los nombres de campo difieren — algunos devuelven rates, otros anidan los mismos números bajo quotes o conversion_rates — así que una ruta de clave fija puede fallar en silencio en lugar de dar error.
La lógica de reintento importa más con un techo de llamadas bajo que con uno alto. Quemar un presupuesto mensual de 100 o 1,000 solicitudes en un bucle de reintento sin regulación tras un solo timeout es una forma común de agotar la cuota antes del día 10 del mes. Cachea las respuestas y trata cualquier ventana de reinicio como una restricción dura.
Ajustar la solución al muro
Si el conteo de llamadas era el problema, Frankfurter o el endpoint abierto de ExchangeRate-API eliminan el tope sin costo. Si la base EUR era el problema, Open Exchange Rates resuelve ese hueco a 1,000 llamadas. Si ambos muros importan, esa combinación es en torno a lo que se construyen las alternativas con clave, incluido exchangerate.dev.