La API REST FXMacroData está diseñada para ser consumida desde cualquier lenguaje que pueda hacer una solicitud HTTP GET. Node.js se envía con un sistema integrado fetch Esta guía te lleva de cero a un script multi-indicador en menos de diez minutos.
Lo que construirás
Un script Node.js autónomo que se autentica en contra de la API REST FXMacroData, recupera datos de tasa de política e inflación para múltiples monedas del G10 en paralelo e imprime una tabla de resumen limpia a la consola lista para ser utilizada en cualquier backend, función sin servidor o tubería de automatización.
Los requisitos previos
- Node.js 18 o más nuevo v18 introdujo el
fetchAPI; se recomienda la producción de versiones v20+ - npm (agrupado con Node.js) sólo se necesita si usted elige agregar paquetes opcionales
- Una clave de la API de FXMacroData inscribirse en / suscribirse y copia tu llave del tablero de instrumentos
Compruebe su versión de Node.js:
node --version # should print v18.x.x or later
Paso 1 Guarde su clave de API de forma segura
Nunca codifique una clave de API en archivos fuente que puedan estar comprometidos con el control de versiones.
En Linux / macOS, añadir a su perfil de shell (~/.bashrc ¿ Qué ? ~/.zshrc):
export FXMD_API_KEY="your_actual_api_key_here"
En Windows (PowerShell):
$env:FXMD_API_KEY = "your_actual_api_key_here"
Para los proyectos Node.js, un .env archivo con el
No hay El paquete es una alternativa popular ver el paso 6 para esa configuración.
Paso 2 Comprender la forma de la API
Cada punto final del indicador FXMacroData sigue el mismo patrón, lo que hace que sea sencillo construir un ayudante de búsqueda genérico.
GET https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY
La respuesta es JSON con un nivel superior data Cada elemento lleva un date, un número val, y (para la mayoría de los indicadores) un announcement_datetime que señala el segundo en que el valor fue liberado:
{
"data": [
{ "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
{ "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
{ "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
]
}
Esta estructura limpia y consistente no requiere casi ninguna transformación antes de su uso en lógica de negocios, bases de datos o API de aguas abajo.
Paso 3 Su primera llamada de buscador
Crear un archivo llamado fxmd.js Esto recupera la tasa de política de la Reserva Federal de los EE.UU. para los últimos dos años utilizando Node.js incorporado en fetch¿ Qué ?
// fxmd.js — requires Node.js 18+
const API_KEY = process.env.FXMD_API_KEY;
const BASE = "https://fxmacrodata.com/api/v1";
async function getIndicator(currency, indicator, startDate) {
const url = new URL(`${BASE}/announcements/${currency}/${indicator}`);
url.searchParams.set("api_key", API_KEY);
if (startDate) url.searchParams.set("start", startDate);
const res = await fetch(url.toString());
if (!res.ok) {
throw new Error(`API error ${res.status}: ${await res.text()}`);
}
const json = await res.json();
return json.data ?? [];
}
// Fetch the Fed policy rate
const data = await getIndicator("usd", "policy_rate", "2023-01-01");
console.log(`Latest USD policy rate: ${data[0]?.val}% on ${data[0]?.date}`);
Lo ejecutamos:
FXMD_API_KEY=your_key node fxmd.js
El nivel superior espera el ejemplo anterior utiliza el nivel superior awaitEsto funciona en ...
.mjs archivos o cuando "type": "module" está en su package.jsonPara los módulos CommonJS , envuelva las llamadas en un async La función de la función y llamar inmediatamente (ver el ejemplo completo en el paso 5).
Paso 4 Buscar múltiples indicadores en paralelo
Promise.all El sistema de cambio de moneda de la moneda de las monedas de la India dispara todas las solicitudes simultáneamente, por lo que buscar una docena de indicadores toma aproximadamente el mismo tiempo de reloj de pared que buscar uno.
const CURRENCIES = ["usd", "eur", "gbp", "aud", "jpy"];
const INDICATORS = ["policy_rate", "inflation"];
const START = "2024-01-01";
// Build a flat list of [currency, indicator] pairs
const pairs = CURRENCIES.flatMap(c => INDICATORS.map(i => [c, i]));
// Fire all requests in parallel
const results = await Promise.all(
pairs.map(([currency, indicator]) =>
getIndicator(currency, indicator, START)
.then(data => ({ currency, indicator, latest: data[0] ?? null }))
.catch(err => ({ currency, indicator, latest: null, error: err.message }))
)
);
// Print a quick summary
for (const row of results) {
if (row.error) {
console.log(`${row.currency.toUpperCase()} ${row.indicator}: ERROR — ${row.error}`);
} else if (row.latest) {
console.log(
`${row.currency.toUpperCase()} ${row.indicator}: ${row.latest.val} (${row.latest.date})`
);
}
}
El .catch útil cuando se ejecutan trabajos nocturnos en los que los datos parciales todavía son procesables.
Paso 5 Completa producción-lista de guión
A continuación se muestra un script completo compatible con CommonJS con manejo de errores adecuado, listas de divisas e indicadores configurables y salida formateada para registro o procesamiento descendente:
// macro-snapshot.js — CommonJS, Node.js 18+
"use strict";
const API_KEY = process.env.FXMD_API_KEY;
const BASE = "https://fxmacrodata.com/api/v1";
if (!API_KEY) {
console.error("Error: FXMD_API_KEY environment variable is not set.");
process.exit(1);
}
// ── Configuration ──────────────────────────────────────────────────────────
const CURRENCIES = ["usd", "eur", "gbp", "cad", "jpy", "aud", "nzd", "chf"];
const INDICATORS = ["policy_rate", "inflation", "unemployment"];
const START_DATE = "2024-01-01";
// ───────────────────────────────────────────────────────────────────────────
async function getIndicator(currency, indicator, startDate) {
const url = new URL(`${BASE}/announcements/${currency}/${indicator}`);
url.searchParams.set("api_key", API_KEY);
if (startDate) url.searchParams.set("start", startDate);
const res = await fetch(url.toString());
if (!res.ok) {
const body = await res.text().catch(() => "");
throw new Error(`HTTP ${res.status}${body ? ": " + body.slice(0, 120) : ""}`);
}
const json = await res.json();
return Array.isArray(json.data) ? json.data : [];
}
async function main() {
const pairs = CURRENCIES.flatMap(c => INDICATORS.map(i => [c, i]));
const results = await Promise.all(
pairs.map(async ([currency, indicator]) => {
try {
const data = await getIndicator(currency, indicator, START_DATE);
return { currency, indicator, latest: data[0] ?? null, error: null };
} catch (err) {
return { currency, indicator, latest: null, error: err.message };
}
})
);
// Group by currency for readable output
const byCurrency = {};
for (const row of results) {
if (!byCurrency[row.currency]) byCurrency[row.currency] = [];
byCurrency[row.currency].push(row);
}
console.log("\n=== FXMacroData Macro Snapshot ===\n");
for (const [currency, rows] of Object.entries(byCurrency)) {
console.log(` ${currency.toUpperCase()}`);
for (const row of rows) {
if (row.error) {
console.log(` ${row.indicator.padEnd(20)} — error: ${row.error}`);
} else if (row.latest) {
console.log(
` ${row.indicator.padEnd(20)} ${String(row.latest.val).padStart(8)} (${row.latest.date})`
);
} else {
console.log(` ${row.indicator.padEnd(20)} — no data`);
}
}
console.log();
}
}
main().catch(err => {
console.error("Fatal:", err.message);
process.exit(1);
});
Ejecuta el guión:
FXMD_API_KEY=your_key node macro-snapshot.js
Producción de muestra:
=== FXMacroData Macro Snapshot ===
USD
policy_rate 4.25 (2025-03-19)
inflation 2.40 (2025-04-10)
unemployment 4.20 (2025-04-04)
EUR
policy_rate 2.40 (2025-04-17)
inflation 2.20 (2025-04-16)
unemployment 6.10 (2025-03-31)
GBP
policy_rate 4.50 (2025-03-20)
inflation 2.60 (2025-03-26)
unemployment 4.40 (2025-04-15)
...
Paso 6 Utilizando el Dotenv para el desarrollo local
Cuando se construye un proyecto Node.js más grande es más conveniente mantener su clave API en un .env
archivo y cargarlo automáticamente con el
No hay Envase:
npm install dotenv
Crear un .env archivo en la raíz de su proyecto (agregarlo a .gitignore inmediatamente):
FXMD_API_KEY=your_actual_api_key_here
Añade una línea a la parte superior de tu guión:
require("dotenv").config(); // CommonJS
// or
import "dotenv/config"; // ES module
El resto del guión dice: process.env.FXMD_API_KEY exactamente como antes no se necesitan otros cambios.
En producción (Cloud Functions, AWS Lambda, Vercel, Render, etc.) se inyectan
FXMD_API_KEY No se puede comprometer a un usuario a utilizar la plataforma como un entorno seguro. .env archivo al control de origen.
Paso 7 Explore el catálogo completo de indicadores
La macro instantánea de arriba cubre tres indicadores, pero FXMacroData expone más de 80 series temporales en 14 bloques de divisas principales. getIndicator El ayudante funciona para todos ellos sólo cambiar la moneda y el indicador de caracol.
-
Las tasas reales restar
inflation¿ Qué es ?policy_rateEn el caso de las monedas de tipo de cambio, el valor de cambio de la moneda de tipo real es el valor del tipo de interés de la divisa. Documentación sobre las tasas de interés de política monetaria en USD para los detalles del punto final. -
Datos laborales ¿ Qué pasa ?
unemployment¿ Qué ?non_farm_payrolls, yaverage_hourly_earnings(USD) dan señales tempranas sobre las funciones de reacción de los bancos centrales. -
Sentimiento ¿ Qué pasa ?
consumer_confidence¿ Qué ?pmi, ybusiness_confidenceLos indicadores de datos concretos están a una o dos meses de la evolución de los datos y pueden preceder a los movimientos de las divisas antes de que aparezcan en las decisiones sobre los tipos. -
Flujos comerciales ¿ Qué pasa ?
trade_balance¿ Qué ?exports, yimportsLos tipos de cambio de las divisas de los mercados de divisas (AUD, NZD, CAD) se basan en los tipos de interés de los países de la UE.
Consulte el catálogo completo de cualquier moneda en
https://fxmacrodata.com/api/v1/catalogue/{currency}?api_key=YOUR_API_KEY, o explore los documentos interactivos en Aplicados a las aplicaciones de la categoría "APA"- ¿ Qué ?
Resumen de las actividades
Ahora tienes todo lo que necesitas para consumir FXMacroData de Node.js:
- Un genérico .
getIndicator(currency, indicator, startDate)ayudante que maneja la verificación de autenticación y errores - Solicitudes paralelas de múltiples indicadores a través de
Promise.allcon aislamiento de errores por solicitud - Un script listo para la producción que puede programar, implementar en una función sin servidor o integrar en un backend existente de Node.js
- Gestión segura de claves de API a través de variables de entorno o
dotenv
Los siguientes pasos naturales: programa el script de instantánea con un trabajo cron o un ejecutor de tareas como NoLa misma estructura JSON limpia que lee el script funciona de la misma manera ya sea que esté creando un panel de control React, una API Express o un activador de función Cloud.
Para más guías específicas de idiomas, véase el Guías de inicio rápido los pasos a través de Python y R cubren el mismo conjunto de indicadores con herramientas específicas para el ecosistema para el análisis y la visualización.