XOOMAR

Free Economic Calendar API

The US macro release schedule as JSON: CPI, PPI, payrolls, JOLTS, weekly jobless claims, PCE, GDP, retail sales, housing starts, new home sales, durable goods, industrial production, trade, FOMC decisions and minutes, the Beige Book and more, read weekly from the agencies' own schedules (BLS, BEA, Census Bureau, Federal Reserve, Department of Labor). The actual and the previous print are filled from the agency series after each release. No consensus column.

Endpoints

GET
/api/markets/calendar?from=YYYY-MM-DD&to=YYYY-MM-DD&importance=high

Events in a window (default: last 7 days to next 30), oldest first.

GET
/api/markets/calendar/csv

Everything as CSV.

Example

curl "https://xoomar.com/api/markets/calendar?importance=high"

Response Shape

Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs }. The data field is an array of records with these fields:

FieldTypeDescription
sourcestringbls, bea, census, fed, dol or treasury (coupon auctions)
eventNamestringCPI (Consumer Price Index), Nonfarm Payrolls (Employment Situation), Initial Jobless Claims, Retail Sales (Advance), FOMC Rate Decision, ...
importancestringhigh, med, or low
scheduledAtstring (datetime)Release time, UTC
periodLabelstring | nullReference period: 'August 2026', '3rd Quarter 2026', 'Week ending 2026-09-05'
previousstring | nullPrior period on the same basis as actual
forecastnullAlways null: no free official source publishes consensus forecasts; the field stays so clients never guess
actualstring | nullFilled after release from the agency series (CPI year over year %, payrolls monthly change in thousands, retail sales % m/m, claims in thousands, ...)
unitstring | nullWhat actual and previous are in: '% m/m', '% y/y, PCE price index', 'thousands, annual rate', 'USD billions, balance'

No forecast field: consensus forecasts come from paid surveys and no free official source publishes them, so the field stays null rather than carrying a made-up number.

Numeric values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication or API key needed. Attribution is appreciated: xoomar.com/markets.

Need more headroom? A free account raises your limit to 120 requests a minute with an X-API-Key header.

Frequently Asked Questions

Which events are included?
From BLS: CPI, PPI, the employment report, JOLTS, import and export prices, productivity, the employment cost index. From BEA: GDP, personal income and outlays (PCE), the trade balance. From the Census Bureau: retail sales, housing starts and permits, new home sales, durable goods, construction spending, business, wholesale and factory orders. From the Federal Reserve: FOMC decisions and minutes, industrial production, the Beige Book. From the Department of Labor: weekly initial jobless claims. Read from each agency's published schedule, nothing scraped from commercial calendars.
When do actuals appear?
CPI and payrolls come from the BLS API within the hour of release; the other releases are filled from the agency series on FRED, usually within the hour, occasionally the same day. The unit field says what the number is.
What are the rate limits?
30 requests per minute per IP without a key, 120 with a free account key.
Is the schedule reliable?
It's the agencies' own published schedule, synced weekly. Agencies occasionally reschedule; the sync picks that up.

Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.