Cada pocas semanas, alguien en r/algotrading o r/options hace una versión de la misma pregunta: ¿hay un WebSocket para los precios del oro, o estoy condenado a consultar un endpoint REST cada segundo? Quienes preguntan suelen estar construyendo un bot que necesita el precio en el momento en que se mueve, o un panel con un ticker de XAU en vivo, y machacar una API REST en un bucle de un segundo les parece incorrecto. Y lo es. El polling consume tu cuota de peticiones y añade la mitad del intervalo de sondeo como latencia media, y aun así se pierde los ticks que caen entre dos peticiones.
Respuesta corta: sí, goldprice.dev envía ticks de oro y plata por WebSocket a medida que se producen. La respuesta larga es qué APIs ofrecen streaming siquiera, porque la mayoría de las dedicadas al oro no lo hacen. Ambas están más abajo.
Qué es el stream
wss://api.goldprice.dev/v1/stream es un WebSocket del plan Realtime. Te conectas, te autenticas con tu clave, te suscribes a los símbolos que quieres y el servidor envía un frame cada vez que el precio se actualiza. El oro (XAU-USD-SPOT) y la plata (XAG-USD-SPOT) son los dos símbolos en vivo hoy, y una sola conexión puede sostener hasta ocho.
Un tick se ve así:
{"type":"tick","symbol":"XAU-USD-SPOT","price":"3976.379","conf":"0.829","computed_at":"2026-07-01T02:13:25Z"}
price es una cadena decimal, así que la parseas sin heredar el redondeo de los flotantes. conf es una banda de confianza sobre ese precio, más estrecha cuando las fuentes subyacentes coinciden y más amplia cuando no. computed_at es cuándo se calculó el valor en el servidor, que es contra lo que mides tu propia latencia de extremo a extremo.
El handshake
Tres mensajes y ya estás recibiendo el stream: conectar, autenticar, suscribir.
import WebSocket from "ws";
const ws = new WebSocket("wss://api.goldprice.dev/v1/stream");
ws.on("open", () => {
ws.send(JSON.stringify({ action: "auth", api_key: process.env.GOLDPRICE_API_KEY }));
});
ws.on("message", (raw) => {
const msg = JSON.parse(raw);
if (msg.type === "welcome") {
// Autenticado. Ahora di qué quieres.
ws.send(JSON.stringify({ action: "subscribe", symbols: ["XAU-USD-SPOT", "XAG-USD-SPOT"] }));
} else if (msg.type === "tick") {
console.log(`${msg.computed_at} ${msg.symbol} ${msg.price}`);
}
});
ws.on("close", (code) => {
// 4401 clave incorrecta/ausente, 4403 plan por debajo de Realtime, 4429 límite de conexiones.
console.error("stream cerrado", code);
});
Al conectar, el servidor envía un frame welcome con tu plan y tu límite de símbolos. Después de suscribirte devuelve una confirmación subscribed más una instantánea inmediata del último precio conocido de cada símbolo, para que tengas algo que mostrar antes de que llegue el siguiente tick en lugar de un campo vacío. Si no llega nada durante unos veinte segundos, un mercado tranquilo o un fin de semana, recibes un {"type":"heartbeat"} para saber que la conexión sigue viva y no colgada.
Las reconexiones corren por tu cuenta. Si el socket se cae, abre uno nuevo y vuelve a enviar auth y subscribe. Ese es el paso que la gente se salta: se reconectan, se olvidan de volver a suscribirse y luego se preguntan por qué no llegan ticks.
Qué otras APIs ofrecen realmente un WebSocket
Vale la pena detallarlo, porque "API de precio del oro en tiempo real" se usa a la ligera y la mayoría de los resultados son polling con un refresco rápido, no un stream. Repasé la documentación pública de los nombres habituales a mediados de 2026. Salen dos grupos.
Las APIs dedicadas a los metales son casi todas solo REST. GoldAPI.io, MetalpriceAPI y Metals.dev no tienen WebSocket en ningún plan; haces polling por intervalos. Metals-API menciona uno, pero solo dentro de un contrato Enterprise personalizado que arranca en torno a los $25.000/año, sin documentación pública de streaming, así que para un proyecto normal no es una opción real. Alpha Vantage abarca mucho más que metales y sigue siendo solo REST, incluso en su plan más alto.
Las APIs que sí transmiten oro son las plataformas de datos de mercado amplias, donde el oro es un símbolo entre decenas de miles y el streaming queda detrás de un plan superior:
| API | WebSocket | Oro en el WebSocket | Punto de entrada al streaming |
|---|
| goldprice.dev | Sí | Sí (XAU y XAG) | Realtime, $80/mes |
| Twelve Data | Sí | Sí (XAU/USD es su propio ejemplo de docs) | ~$191/mes (Pro anual) para créditos reales de streaming |
| TraderMade | Sí | Sí (XAU/USD) | Planes de pago desde ~£599/mes |
| Finage | Sí | Sí (XAU/USD, vía los feeds de forex/CFD) | WebSocket de pago desde ~$299/mes |
| Polygon.io (ahora Massive) | Sí | Pares de forex; la cobertura de XAU no está clara en las docs | Plan de divisas de pago |
| Finnhub | Sí (incluido en el plan gratuito) | Forex de bróker; XAU no está claramente documentado | Gratis, hasta 50 símbolos |
| GoldAPI.io | No | — | Solo polling REST |
| MetalpriceAPI | No | — | Solo polling REST |
| Metals.dev | No | — | Solo polling REST |
| Metals-API | Solo Enterprise | Sin documentar | ~$25.000/año a medida |
| Alpha Vantage | No | — | Solo polling REST |
(Documentación pública, mediados de 2026. Los precios y la cobertura de la competencia cambian, así que revisa sus páginas actuales antes de decidirte por una.)
Lo que muestra la tabla es un hueco. Si quieres oro por WebSocket, tus opciones han sido casi siempre o una gran plataforma multiactivo donde el oro es un añadido dentro del forex y el streaming empieza cerca de los $200 al mes, o una API de metales que te obliga a hacer polling. goldprice.dev es metales primero y transmite oro y plata por $80.
Cuándo no necesitas el stream
Un WebSocket vale la pena cuando mantienes una conexión abierta y te importan los movimientos por debajo del segundo: un ticker en vivo, una pantalla de ejecución, un bot vigilando un umbral. Para un trabajo que consulta el precio cada pocos minutos, el endpoint REST simple en /v1/spot/XAU-USD-SPOT es más sencillo y no mantiene ningún socket. Y si quieres push sin el plan Realtime, el plan Pro tiene un stream de Server-Sent Events en /v1/prices/stream; Stream live gold prices with Server-Sent Events explica ese, que no necesita ningún cliente WebSocket.
¿Aún sopesando si una API vale la pena para construir sobre ella? Gold price API on Reddit: the developer questions, answered cubre el nivel gratuito, los límites y de dónde sale el número. Para empezar, una clave gratuita tarda un minuto; el WebSocket en sí está en Realtime.