✓ Verified 🌐 Web Scrapers ✓ Enhanced Data

Stock Prices

Query real-time stock prices and market data using the Stock Prices API.

Rating
4 (82 reviews)
Downloads
4,039 downloads
Version
1.0.0

Overview

Query real-time stock prices and market data using the Stock Prices API.

Complete Documentation

View Source →

Stock Prices API Skill

This skill helps you work with the Stock Prices API to fetch real-time market data and stock quotes.

API Endpoint

Base URL: https://stock-prices.on99.app

Primary Endpoint: /quotes?symbols={SYMBOLS}

Quick Start

Fetch stock quotes for one or more symbols (responses are in TOON format):

bash
curl "https://stock-prices.on99.app/quotes?symbols=NVDA"
curl "https://stock-prices.on99.app/quotes?symbols=AAPL,GOOGL,MSFT"

Install the TOON decoder for parsing: pnpm add @toon-format/toon

Response Format

The API returns TOON (Token-Oriented Object Notation) format—a compact, human-readable encoding that uses ~40% fewer tokens than JSON. This makes it ideal for LLM prompts and streaming.

TOON Response Example

text
quotes[1]{symbol,currentPrice,change,percentChange,highPrice,lowPrice,openPrice,previousClosePrice,preMarketPrice,preMarketChange,preMarketTime,preMarketChangePercent,...}:
  NVDA,188.54,-1.5,-0.789308,192.48,188.12,191.405,190.04,191.8799,3.3399048,2026-02-11T13:49:16.000Z,1.771457,...

Decoding TOON Responses

Use @toon-format/toon to parse responses back to JavaScript/JSON:

typescript
import { decode } from "@toon-format/toon";

const response = await fetch("https://stock-prices.on99.app/quotes?symbols=NVDA");
const toonText = await response.text();
const data = decode(toonText);

// data.quotes is an array of quote objects
const quote = data.quotes[0];
console.log(`${quote.symbol}: $${quote.currentPrice}`);

The decoded structure matches JSON—same objects, arrays, and primitives.

Available Data Fields

FieldTypeDescription
symbolstringStock ticker symbol
currentPricenumberCurrent trading price
changenumberPrice change from previous close
percentChangenumberPercentage change from previous close
highPricenumberDay's high price
lowPricenumberDay's low price
openPricenumberOpening price
previousClosePricenumberPrevious day's closing price
preMarketPricenumberPre-market trading price
preMarketChangenumberPre-market price change
preMarketTimestring (ISO 8601)Pre-market data timestamp
preMarketChangePercentnumberPre-market percentage change

Usage Guidelines

Multiple Symbols

Query multiple stocks by separating symbols with commas (max 50):

bash
curl "https://stock-prices.on99.app/quotes?symbols=AAPL,GOOGL,MSFT,TSLA,AMZN"

Error Handling

Always check for valid responses. Decode TOON before accessing data:

typescript
import { decode } from "@toon-format/toon";

const response = await fetch("https://stock-prices.on99.app/quotes?symbols=NVDA");
const data = decode(await response.text());

if (data.quotes && data.quotes.length > 0) {
    const quote = data.quotes[0];
    console.log(`${quote.symbol}: $${quote.currentPrice}`);
}

Price Analysis

Calculate common metrics:

typescript
// Determine if stock is up or down
const isUp = quote.change > 0;
const direction = isUp ? "📈" : "📉";

// Calculate day's range percentage
const rangePct = ((quote.highPrice - quote.lowPrice) / quote.lowPrice) * 100;

// Compare current to open
const vsOpen = quote.currentPrice - quote.openPrice;

Common Use Cases

1. Price Monitoring

typescript
import { decode } from "@toon-format/toon";

async function checkPrice(symbol: string) {
    const res = await fetch(`https://stock-prices.on99.app/quotes?symbols=${symbol}`);
    const data = decode(await res.text());
    const quote = data.quotes[0];

    return {
        price: quote.currentPrice,
        change: quote.change,
        changePercent: quote.percentChange,
    };
}

2. Portfolio Tracking

typescript
import { decode } from "@toon-format/toon";

async function getPortfolio(symbols: string[]) {
    const symbolString = symbols.join(",");
    const res = await fetch(`https://stock-prices.on99.app/quotes?symbols=${symbolString}`);
    const data = decode(await res.text());

    return data.quotes.map(q => ({
        symbol: q.symbol,
        value: q.currentPrice,
        dailyChange: q.percentChange,
    }));
}

3. Market Summary

typescript
import { decode } from "@toon-format/toon";

async function marketSummary(symbols: string[]) {
    const res = await fetch(`https://stock-prices.on99.app/quotes?symbols=${symbols.join(",")}`);
    const data = decode(await res.text());

    const gainers = data.quotes.filter(q => q.change > 0);
    const losers = data.quotes.filter(q => q.change < 0);

    return {
        totalStocks: data.quotes.length,
        gainers: gainers.length,
        losers: losers.length,
        avgChange: data.quotes.reduce((sum, q) => sum + q.percentChange, 0) / data.quotes.length,
    };
}

Popular Stock Symbols

Tech Giants (FAANG+)

  • AAPL - Apple
  • GOOGL - Alphabet (Google)
  • META - Meta (Facebook)
  • AMZN - Amazon
  • NFLX - Netflix
  • MSFT - Microsoft

High-Profile Stocks

  • NVDA - NVIDIA
  • TSLA - Tesla
  • AMD - Advanced Micro Devices
  • INTC - Intel
  • ORCL - Oracle

Indices

  • ^GSPC - S&P 500
  • ^DJI - Dow Jones
  • ^IXIC - NASDAQ

Notes

  • Response format: API returns TOON, not JSON. Use decode() from @toon-format/toon to parse.
  • All prices are in USD
  • Data updates in real-time during market hours
  • Pre-market and after-hours data is available
  • Timestamps are in ISO 8601 format (UTC)
  • Maximum 50 symbols per request

Installation

Terminal bash

openclaw install stock-prices
    
Copied!

💻Code Examples

curl "https://stock-prices.on99.app/quotes?symbols=AAPL,GOOGL,MSFT"

curl-httpsstock-priceson99appquotessymbolsaaplgooglmsft.txt
Install the TOON decoder for parsing: `pnpm add @toon-format/toon`

## Response Format

The API returns **TOON** (Token-Oriented Object Notation) format—a compact, human-readable encoding that uses ~40% fewer tokens than JSON. This makes it ideal for LLM prompts and streaming.

### TOON Response Example

NVDA,188.54,-1.5,-0.789308,192.48,188.12,191.405,190.04,191.8799,3.3399048,2026-02-11T13:49:16.000Z,1.771457,...

-nvda18854-15-07893081924818812191405190041918799333990482026-02-11t134916000z1771457.txt
### Decoding TOON Responses

Use `@toon-format/toon` to parse responses back to JavaScript/JSON:

console.log(`${quote.symbol}: $${quote.currentPrice}`);

consolelogquotesymbol-quotecurrentprice.txt
The decoded structure matches JSON—same objects, arrays, and primitives.

## Available Data Fields

| Field                    | Type              | Description                           |
| ------------------------ | ----------------- | ------------------------------------- |
| `symbol`                 | string            | Stock ticker symbol                   |
| `currentPrice`           | number            | Current trading price                 |
| `change`                 | number            | Price change from previous close      |
| `percentChange`          | number            | Percentage change from previous close |
| `highPrice`              | number            | Day's high price                      |
| `lowPrice`               | number            | Day's low price                       |
| `openPrice`              | number            | Opening price                         |
| `previousClosePrice`     | number            | Previous day's closing price          |
| `preMarketPrice`         | number            | Pre-market trading price              |
| `preMarketChange`        | number            | Pre-market price change               |
| `preMarketTime`          | string (ISO 8601) | Pre-market data timestamp             |
| `preMarketChangePercent` | number            | Pre-market percentage change          |

## Usage Guidelines

### Multiple Symbols

Query multiple stocks by separating symbols with commas (max 50):

curl "https://stock-prices.on99.app/quotes?symbols=AAPL,GOOGL,MSFT,TSLA,AMZN"

curl-httpsstock-priceson99appquotessymbolsaaplgooglmsfttslaamzn.txt
### Error Handling

Always check for valid responses. Decode TOON before accessing data:

}

.txt
### Price Analysis

Calculate common metrics:

const vsOpen = quote.currentPrice - quote.openPrice;

const-vsopen--quotecurrentprice---quoteopenprice.txt
## Common Use Cases

### 1. Price Monitoring
example.ts
import { decode } from "@toon-format/toon";

const response = await fetch("https://stock-prices.on99.app/quotes?symbols=NVDA");
const toonText = await response.text();
const data = decode(toonText);

// data.quotes is an array of quote objects
const quote = data.quotes[0];
console.log(`${quote.symbol}: $${quote.currentPrice}`);
example.ts
import { decode } from "@toon-format/toon";

const response = await fetch("https://stock-prices.on99.app/quotes?symbols=NVDA");
const data = decode(await response.text());

if (data.quotes && data.quotes.length > 0) {
    const quote = data.quotes[0];
    console.log(`${quote.symbol}: $${quote.currentPrice}`);
}
example.ts
// Determine if stock is up or down
const isUp = quote.change > 0;
const direction = isUp ? "📈" : "📉";

// Calculate day's range percentage
const rangePct = ((quote.highPrice - quote.lowPrice) / quote.lowPrice) * 100;

// Compare current to open
const vsOpen = quote.currentPrice - quote.openPrice;
example.ts
import { decode } from "@toon-format/toon";

async function checkPrice(symbol: string) {
    const res = await fetch(`https://stock-prices.on99.app/quotes?symbols=${symbol}`);
    const data = decode(await res.text());
    const quote = data.quotes[0];

    return {
        price: quote.currentPrice,
        change: quote.change,
        changePercent: quote.percentChange,
    };
}

Tags

#browser_and-automation #api #data

Quick Info

Category Web Scrapers
Model Claude 3.5
Complexity One-Click
Author anthonylee1994
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install stock-prices