WolfMarket API

Normalized, historical, always-fresh market and economic data — one clean JSON API. SEC filings & financials, commodity and energy prices, CFTC positioning, US macro series.

Getting started

Base URL: https://wolfmarket.freebranch.com. Every data request needs an API key in the X-Api-Key header — create one in the portal. Raw API access is a Data-plan feature — every other plan gets the dashboard: interactive charts of everything you track plus the market commons, company filing and financials pages, and futures-positioning views, no code required. Opt-in email alerts (portal → Account view) notify you within the hour when a tracked company files with the SEC, and a Monday digest summarizes your tracked entities' week. Per-entity data — companies, commodity series, COT markets — is served for entities on your tracked list; economy-wide commons (CPI, Treasury yields, policy rates, FX, headline indexes) are open to every plan.

curl -H "X-Api-Key: wm_..." \
  "https://wolfmarket.freebranch.com/api/v1/series/EIA:PET.RWTC.D/observations?from=2020-01-01"

Every data response uses one envelope: { data, meta, attribution }. The attribution array lists the origin of every source present in the result — see your obligations below.

rate limit 10 requests/second per key (burst 20). Exceeding it returns 429.

Database starter kit (Data plan)

Rather run your own database? The portal generates a personalized kit: name your database, pick SQL Server or PostgreSQL, choose the data domains — and download a ZIP containing the create-database script, the full schema, an automated sync script (initial backfill + re-runnable refresh of everything you're entitled to), and step-by-step instructions.

# SQL Server (nothing to install beyond SQL Server itself)
.\sync.ps1 -ApiKey wm_YOUR_KEY -Init

# PostgreSQL (psql + curl)
./sync.sh --api-key wm_YOUR_KEY --init

Re-running the sync is always safe — every load is an idempotent upsert with incremental watermarks. Your API key is a runtime parameter, never stored in the kit. Attribution obligations ship inside the kit as ATTRIBUTION.md and are collected automatically into an attribution_seen table.

What's inside

DomainDataHistorySource
SEC filingsFiling index (10-K/10-Q/8-K/…) for covered companies, with primary-document links1994+SEC EDGAR
Company financialsRaw XBRL facts — every reported figure, all taxonomies, you pick the tags1989+SEC EDGAR
Energy pricesWTI & Brent crude, Henry Hub gas, gasoline/diesel retail, propane, electricity1986+EIA
Agricultural pricesPrices received: corn, soybeans, wheat, cattle, hogs, milk (monthly, national)1908+USDA NASS
Futures positioningCFTC Commitments of Traders — legacy, disaggregated, and TFF reports, 989 markets1986+CFTC
Rates & debtDaily Treasury par yield curve (13 tenors), avg interest rates, Debt to the Penny1990+US Treasury
US inflationCPI-U (headline and core) and PPI index series1913+BLS
US employmentNonfarm payrolls, unemployment rate, labour-force participation, average hourly earnings1939+BLS
US national accountsReal and nominal GDP, PCE and core PCE price indexes (the Fed's target measure), personal income1947+US BEA
US demand & housingAdvance retail trade sales; housing starts, building permits and completions1959+US Census Bureau
Global macroGDP, inflation, population, unemployment for major economies1960s+World Bank
World commodity pricesMonthly dollar prices for ~70 commodities — metals, ores, rubber, rice, palm oil, coffee (Pink Sheet)1960+World Bank
Foreign exchangeDaily EUR reference rates (30+ currencies) and CAD pairs — informational rates, freely available at source1999+ECB, Bank of Canada
Central bank policy ratesDaily policy rates for 49 economies — US, euro area, UK, Japan, China, India, Korea, Indonesia, Malaysia, Thailand, Philippines, Mexico & more1945+BIS
Canada macroCPI all-items, unemployment, real GDP, Raw Materials Price Index, retail sales (monthly)1976+Statistics Canada
Japan import unit valuesLNG (a widely cited Asian benchmark), crude oil and LPG — derived from MOF customs value and quantity; lag spot benchmarks ~1-2 months2016+e-Stat / Japan Customs
Mexico macroMXN/USD FIX rate (1991+), policy target rate, TIIE 28-day, INPC headline & core CPI (1969+), UDIS1969+Banco de México
Euro area & EU macroHICP inflation (annual rate) and unemployment — euro area + DE, FR, IT, ES, NL, PL, SE1983+Eurostat
UK company registryAll ~5.75M live UK-registered companies: status, type, incorporation date, SIC codes, registered officecurrent registerCompanies House
UK company accountsBalance-sheet core per filed accounts (equity, assets, creditors, cash, employees; turnover where filed) — ~23k filings/day2026-06+ (accumulating)Companies House
Taiwan listed companiesTWSE registry (1,095 companies) + monthly revenue and quarterly EPS/net income per company2026-08+ (accumulating)TWSE
Southeast Asia macroMalaysia CPI/core CPI/IPI/unemployment/GDP · Singapore CPI & unemployment · Philippines CPI · Taiwan CPI1961+DOSM, SingStat, PSA
Philippines farmgate pricesPalay (paddy rice) and yellow corn national farmgate prices, PHP/kg monthly2010+PSA
US import unit valuesHard $/kg for polymers (PE, PP, PS, PVC, ABS) and steel grades — the licence-clean substitute for resin and steel spot assessments; derived from customs value ÷ quantity, lags spot 1-2 months2018+US Census
China-origin import pricesWhat Chinese-made goods cost at a foreign border: cold-rolled and galvanized steel, silicon steel, polypropylene, polyester yarn, permanent magnets (Japan customs) and sintered NdFeB magnets (US customs). CIF at the importing border, not a Chinese domestic price1994+Japan MOF, US Census
US wholesale dairyDry whey, nonfat dry milk, dry whole milk and whey protein concentrate ($/lb), plus butter and cheddar as international export quotations ($/MT)1991+USDA AMS
US cottonUpland cotton spot quotation, base quality 41-4-34, US cents/lb, by producing region and national total2025+ (accumulating)USDA AMS
Sovereign yield curvesUS Treasury par curve (13 tenors) and the German Bund curve (9 maturities, 1Y-30Y) — the euro area's risk-free benchmark1990+ / 1997+US Treasury, Bundesbank
US money-market ratesSOFR, EFFR, OBFR, TGCR and BGCR — the rates the Fed's target actually prints at2000+New York Fed
US dollar exchange ratesMonthly USD rates for 12 currencies including VND, PHP and IDR — several with no clean euro-cross alternative1945+BIS
OECD macroHarmonised CPI, GDP growth and unemployment for the major economies, including China and Indonesia1987+OECD
Global unemploymentBrazil, China and India — ILO modelled estimates (annual econometric imputations, not survey results; projection years are never served)1991+ILOSTAT
EU producer pricesIndustrial PPI by product group — pulp, paper, paperboard and more, per member state1976+Eurostat
Japan CPIHeadline and core consumer price indexes from the Statistics Bureau (separate from the customs trade feed)1970+e-Stat / Statistics Bureau
Critical mineralsUS and world production quantities for 39 critical minerals — rare earths, lithium, cobalt, gallium. Quantities only: price rows that republish commercial assessments are deliberately excludedannualUSGS

No equity prices or exchange market data — every byte served here is verified redistributable (US-government public domain or CC-BY). That verification is the product.

Endpoint reference

All endpoints are GET unless noted. Dates are YYYY-MM-DD. Machine-readable spec: /openapi/v1.json.

/api/v1/catalog/sources

All data sources with license type, terms URL, and attribution requirements.

/api/v1/catalog/datasets?source=&domain=

Datasets per source. domain ∈ macro | commodities | energy | ag | prices | fx | filings | registry.

/api/v1/catalog/series?q=&dataset=&page=&pageSize=

Search the time-series catalog by key or title. Each entry carries units, frequency (D/W/M/Q/A), and first/last observation dates.

/api/v1/series/{seriesKey}/observations?from=&to=&limit=

Observations for one series, oldest first. Series keys are namespaced by source:

NamespaceExampleMeaning
EIA:EIA:PET.RWTC.DWTI crude spot, daily. Any valid EIA series id works — unknown ones are auto-collected on subscription.
TREAS:TREAS:YIELD:PAR:10Y10-year Treasury par yield. Tenors 1M–30Y; also TREAS:DEBT:*, TREAS:AVGRATE:*.
BLS:BLS:CUUR0000SA0CPI-U all items, NSA (BLS series ids).
NASS:NASS:CORN_GRAIN_PRICE_RECEIVED_MEASURED_IN_BUUS monthly price received.
WB:WB:NY.GDP.MKTP.CD:USAWorld Bank indicator per country (ISO3).
WBCMO:WBCMO:COPPERWorld Bank Pink Sheet monthly world commodity price.
ECB: / BOC:ECB:EURUSD, BOC:FXUSDCADDaily FX reference rates (commons — every plan).
BIS:BIS:CBPOL:CNDaily central bank policy rate per economy, ISO2 code (commons — every plan).
STATCAN:STATCAN:CPI_ALLITEMSCurated Canadian macro indicators (commons — every plan).
EUROSTAT:EUROSTAT:HICP_INF_DECurated EU macro per geo (commons — every plan).
TWSE:TWSE:REV:2330Taiwan listed-company fundamentals by stock code: REV monthly revenue, EPS/NETINC quarterly cumulative YTD. Tracked entities.
DOSM: / SINGSTAT: / PSA:SINGSTAT:CPICurated Malaysia / Singapore / Philippines macro + PH farmgate prices (commons — every plan).
AMS:AMS:DAIRY:WHEY_CENTRAL, AMS:COTTON:UPLAND_USUSDA wholesale dairy and cotton quotations. Values are the midpoint of the published low-high range.
USTRADE:USTRADE:UV:PVC, USTRADE:CN:NDFEBUS import unit values, $/kg. :UV: is a world total; :CN: is China-origin only.
ESTAT:ESTAT:IMP_LNG, ESTAT:CN:GALVJapan customs import unit values, JPY per unit. :CN: is China-origin only.
BBK:BBK:YIELD:10YGerman sovereign yield curve, daily (commons — every plan).
NYFED:NYFED:SOFRUS money-market reference rates, daily (commons — every plan).
OECD: / ILO:OECD:CPI_CHN, ILO:UNEMP:BRAOECD harmonised macro; ILO modelled unemployment estimates (commons — every plan).
JPCPI: / BANXICO: / DGBAS:JPCPI:HEADLINE, BANXICO:FIXJapan CPI, Mexico macro, Taiwan CPI (commons — every plan).
USGS:USGS:ALUMINUM:WORLD_PRODCritical-mineral production quantities, annual (commons — every plan).

/api/v1/companies?q=&covered=

Search all ~8,000 SEC registrants by name or ticker. covered=true limits to companies with collected data. Also /api/v1/companies/{cikOrTicker} for one.

/api/v1/global/companies?registry=&q=&status=&page=&pageSize=

Non-US registries. registryGB-CH (UK Companies House, ~5.75M live companies) | TW-TWSE (Taiwan listed companies). q is a name prefix match or an exact registry number. One company: /api/v1/global/companies/{registry}/{number} (e.g. /global/companies/GB-CH/00445790, /global/companies/TW-TWSE/2330). Registry data is commons — any plan with API access.

/api/v1/filings?cik=|ticker=&form=&from=&to=&page=&pageSize=

Filing index, newest first. form e.g. 10-K, 8-K. Single filing: /api/v1/filings/{accessionNumber}.

/api/v1/facts?cik=|ticker=&tag=&taxonomy=&unit=&from=&to=&limit=

Raw XBRL facts. Filter by company and/or tag (e.g. tag=RevenueFromContractWithCustomerExcludingAssessedTax, tag=NetIncomeLoss, unit=USD). Duration facts carry periodStart; instant facts don't.

/api/v1/cot/{legacy|disaggregated|tff}?market=&variant=&from=&to=&limit=

COT weekly positions. market = contract code or name search (GOLD, 067651); variant 1 = futures-only, 2 = combined. Market catalog: /api/v1/cot/markets?q=.

POST /api/v1/subscriptions

The auto-collect trigger: subscribe to something and the system starts collecting it — including its full history — automatically (typically live within minutes).

curl -X POST -H "X-Api-Key: wm_..." -H "Content-Type: application/json" \
  -d '{"targetType":"Company","targetKey":"DE"}' \
  https://wolfmarket.freebranch.com/api/v1/subscriptions
# → 202 {"subscriptionId":42,"status":"Requested"}

targetTypeCompany (ticker or CIK) | Bundle (commodity concept — corn, crude-oil, steel… one slot covers its prices, futures positioning, and cost indexes) | Series (series key) | CotMarket (contract code or name). Tracking an entity is also what entitles your key to query it. Track progress at /api/v1/subscriptions/{id}: Requested → Backfilling → Active. Requests that can't be resolved automatically are queued for operator review (NeedsReview) — nothing silently fails.

Point-in-time (asOf)

Publishers revise. WolfMarket keeps what a value said before it changed, so you can ask what you would have seen on a past date — essential when testing a rule against history. Add asOf= (an ISO timestamp) to /series/{seriesKey}/observations or to any /cot/* endpoint.

curl -H "X-Api-Key: wm_..." \
  "https://wolfmarket.freebranch.com/api/v1/series/JPCPI%3AHEADLINE/observations?asOf=2026-09-10T00:00:00Z"

The response meta then carries asOf, the number of values the request actually changed (restatedPoints, or restatedRows for COT), and vintagesFromUtc — when revision capture began: 2026-09-06 for series and 2026-09-13 for COT. Before those dates today's values are returned, so you can always tell "never revised" from "not yet recording".

Attribution — your obligations

These obligations are contractual: see section 6 of the Terms of Service.

WolfMarket serves only redistribution-licensed data, and some licenses carry conditions that pass through to you:

Every response's attribution array gives you the exact strings and terms URLs.

Errors

StatusMeaning
401Missing, invalid, or revoked X-Api-Key (no body).
404Unknown company/series/filing — or data that is not licensed for redistribution (served as if absent).
403Your key is not entitled to that entity — track it (or its bundle) first; the body says so.
429Rate limit exceeded (10/s, burst 20). Back off and retry.
400Bad parameters; body carries an error message.