npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@furlpay/market-data

v0.1.0

Published

Real-time stock/ETF market data for FurlPay — Alpha Vantage + Nasdaq Data Link aggregator with a deterministic demo fallback. Zero runtime dependencies.

Downloads

103

Readme

@furlpay/market-data

Real-time stock/ETF market data for FurlPay — a thin, zero-dependency aggregator over Alpha Vantage and Nasdaq Data Link with a deterministic demo fallback. It powers live prices in the FurlPay dashboard and is drop-in usable in any Node service.

  • Clone-and-run — no API key needed. Every quote/bar is deterministic demo data until you add a key, so charts render immediately.
  • Fails soft — a live call that errors or hits a rate limit degrades to demo data instead of throwing, so a quote is never empty.
  • Zero runtime dependencies — uses the global fetch (Node 18+).

Maintained by FurlPay · MIT licensed.

Install

npm i @furlpay/market-data

Usage

import { MarketData } from "@furlpay/market-data";

const md = new MarketData({
  alphaVantageKey: process.env.ALPHA_VANTAGE_KEY,   // optional
  nasdaqKey: process.env.NASDAQ_DATA_LINK_KEY,      // optional (daily bars)
});

md.live;                                    // false until a key is set

await md.quote("AAPL");
// { symbol: "AAPL", price: 241.75, change: 1.9, changePercent: 0.79,
//   open, high, low, previousClose, volume, currency: "USD", asOf, source }

await md.quotes(["AAPL", "VOO", "NVDA"]);   // batch, never rejects

await md.bars("VOO", { interval: "daily", limit: 100 });
// { symbol, interval, bars: [{ t, o, h, l, c, v }, ...], source }

await md.search("vanguard");
// [{ symbol: "VOO", name: "Vanguard S&P 500 ETF", type: "ETF", ... }]

Keys are read from the constructor first, then from ALPHA_VANTAGE_KEY / NASDAQ_DATA_LINK_KEY in the environment.

API

| Method | Returns | Notes | | --- | --- | --- | | new MarketData(opts?) | — | alphaVantageKey?, nasdaqKey?, fetchImpl?, timeoutMs? | | md.live | boolean | true when any provider key is configured | | md.quote(symbol) | Promise<Quote> | latest quote; demo fallback on error | | md.quotes(symbols) | Promise<Quote[]> | batch; resolves all, never rejects | | md.bars(symbol, { interval?, limit? }) | Promise<BarsResult> | interval: 1min\|5min\|15min\|30min\|60min\|daily (default daily); daily prefers Nasdaq | | md.search(query) | Promise<AssetMatch[]> | symbol/name lookup |

All shapes are exported types (Quote, Bar, BarsResult, AssetMatch).

Providers

| Provider | Used for | Key | | --- | --- | --- | | Alpha Vantage | quotes, intraday & daily bars, search | alphaVantageKey | | Nasdaq Data Link | historical daily bars (preferred when set) | nasdaqKey |

Example

npm run example            # demo data
npm run example -- TSLA    # different symbol
ALPHA_VANTAGE_KEY=xxx npm run example

Test

npm test        # tsc build + node --test (runs in demo mode, no network)

The suite asserts the contract: demo quotes are deterministic per symbol, batch quotes resolve, bars are chronological with valid OHLC, search matches by symbol and name, and a failing live provider falls back to demo instead of throwing.

License

MIT