Skip to content

Data sources

oneapi.finance aggregates publicly available financial data from a small number of upstream sources. We prefer disclosure over obfuscation: this page lists every source, the data it covers, the refresh cadence, and the behavior on failure.

If you require a vendor with exchange-licensed real-time feeds and SLA-backed direct exchange relationships, this is not that vendor. Read delayed data for the rationale and economics.

Source list

SourceDomainCoverageUpdate cadenceNotes
yahoo_query1query1.finance.yahoo.comQuotes, time-series, statistics, dividends, splits, profile (global)~15 min during market hoursPrimary for retail tickers. Sometimes flaky; we fail over to yahoo_query2.
yahoo_query2query2.finance.yahoo.comSame as yahoo_query1SameFailover partner.
stockanalysisstockanalysis.comStatistics, fundamentals, profile (global)DailyStrong on non-US listings. Used for multi-source corroboration.
sec_edgardata.sec.govXBRL filings (income, balance, cash flow), CIK, ISINFiling day, ~2 hour ingest delayAuthoritative for US issuers.
coingeckocoingecko.comCrypto spot prices and market caps~1 minUsed only for BTC-USD, ETH-EUR, etc. Not for equities.
exchangerate_hostexchangerate.hostFX daily closesDailyFree fixings sourced from ECB and other central banks.
internal_cache(us)Anythingn/aWhen we serve from cache, the upstream source is preserved in the database but meta.source becomes internal_cache.

This list is the wire-level truth: any value you see in meta.source other than these is a bug — file a report.

Refresh cadence by data type

DataCadenceTrigger
Quotes (popular US tickers)~15 minutesPolling job, 60s heartbeat, with stale-while-revalidate cache.
Quotes (less popular tickers)On request, with 5-minute cacheFirst request after expiry refetches.
Daily OHLCV barsOnce per session close, 02:00 UTCScheduled job.
Intraday OHLCV barsEvery 5-15 minutes during the relevant sessionScheduled job per region.
Statistics (price-derived)With each quote refreshRecomputed in-place.
Statistics (filing-derived)On filing acceptance, ~2 hour ingestEDGAR webhook poll.
ProfileWeeklyScheduled job.
Dividends and splitsWeekly + on eventScheduled job + corp-action listener.
FXDaily18:00 UTC.
CryptoEvery 60 secondsCoinGecko free-tier rate limit.

Failover behavior

When we fetch a piece of data, we try sources in priority order. The order is data-specific:

  • US equity quotes: yahoo_query1yahoo_query2stockanalysis.
  • Non-US equity quotes: yahoo_query1yahoo_query2stockanalysis.
  • Statistics: sec_edgar (US only, for filed numbers) → stockanalysisyahoo_query1.
  • Profile: stockanalysisyahoo_query1sec_edgar (US only).
  • Dividends/splits: yahoo_query1stockanalysis.
  • FX: exchangerate_hostyahoo_query1.

If every source in the chain fails for a given symbol within our timeout, we return 502 upstream_failure with details.sources_tried listing what we attempted.

What we do not source

  • Real-time exchange tape. Requires SIP and exchange licensing fees in the high four to low five figures per month. Not in scope at our price point.
  • Level 2 / order book data. Same licensing constraints.
  • Options chains. Roadmap.
  • Bond / credit / fixed-income. Roadmap; will start with US Treasuries.
  • Insider transactions (Form 4). Roadmap.
  • Institutional holdings (13F). Roadmap.
  • Analyst price targets. Lower priority; the data quality is poor.
  • Credit ratings. Licensed and expensive.

Robots and terms-of-service

We are courteous citizens. Our scraping fetches:

  • Stay within published rate limits where the source has them.
  • Identify a reasonable User-Agent (oneapi.finance fetcher/1.x; ops@oneapi.finance).
  • Cache aggressively to avoid duplicate fetches.
  • Stop and back off on 429, 503, or sustained 5xx from a source.

If you operate a source on this list and want us to stop, email abuse@oneapi.finance and we will turn off ingestion within 24 hours.

Source health

We publish an internal source_health table per upstream (state, error counters, cooldown). The aggregated state is exposed at status.oneapi.finance. When a source goes into a degraded or dead state, our gateway automatically routes around it.

See also