← knowledge.oriz.in

Alpha Vantage

service servicesdata-apifinancestocksforexcryptoalpha-vantageprimary

Alpha Vantage

Role

The family's locked finance / market-data API. Powers any site that needs stock quotes, forex pairs, crypto prices, commodity prices, economic indicators, or technical indicators. Primary consumer is the in-flight oriz-finance site (forward reference); future surfaces (any blog post embedding a live ticker, any extension showing a market widget) reuse the same account.

Free tier

Card / subscription required?

NO. Free-tier signup at https://www.alphavantage.co/support/#api-key is email-only. The API key arrives in the inbox; no payment method requested. Card-on-file is required only for the paid premium tiers, which the family does not use per no-card-on-file.

Quota mitigation — aggressive caching

25 requests/day is the tightest free-tier envelope in the data-api/ subdir. Every call goes through the umbrella Hono Worker per data-apis-open-meteo-alpha-vantage with a Workers KV cache and 1-day TTL on EOD market data (per the CF Worker quota mitigation playbook step #7). For hot tickers (top-50 by family-wide view count), the cron-driven warm-cache job pre-populates KV at 18:00 UTC after US market close — burning ~10–15 of the 25 daily requests on a deterministic schedule, leaving headroom for ad-hoc lookups.

Use shape:

// In the umbrella Worker — never call Alpha Vantage from the browser
const r = await fetch(
  'https://www.alphavantage.co/query?' +
  new URLSearchParams({
    function: 'GLOBAL_QUOTE',
    symbol: 'IBM',
    apikey: env.ALPHA_VANTAGE_KEY,
  }),
);

API key originates in Doppler, mirrored to the Worker via wrangler secret put (per secrets-management-doppler). Never embed the key in client code — would burn the family's single key in minutes.

Why this is our pick

Alternatives

Swap cost

Medium — endpoint shape and parameter naming differ across providers; the umbrella Worker keeps a per-provider adapter (adapters/alpha-vantage.ts, adapters/twelve-data.ts) so the swap is a one-line provider: flip in the route handler. The client-facing JSON envelope returned to the browser stays constant.

Cross-refs