# Google Finance API

> Unofficial REST API wrapping Google Finance's internal batchexecute RPC endpoint. No API key required. Zero external dependencies.

Base URL: `https://finance.hermestech.uk`

## About

Unofficial REST API that wraps Google Finance's internal batchexecute RPC endpoint. One HTTP GET returns real-time quotes, company profiles, financial statements, charts, and news. No API key and no external dependencies.

Covers stocks, ETFs, indices, crypto pairs, and forex on every exchange Google Finance supports: NASDAQ, NYSE, IST, KRX, TYO, LSE, and more.

## Endpoints

| Method | Path | Group | Description |
| --- | --- | --- | --- |
| GET | `/v1/quote/{ticker}` | Ticker | Real-time price, change, and market data for a ticker |
| GET | `/v1/company/{ticker}` | Ticker | Company description, CEO, sector, employees, and key metrics |
| GET | `/v1/chart/{ticker}` | Ticker | Historical price and volume data points; range=1D\|5D\|1M\|6M\|YTD\|1Y\|5Y\|MAX (default 1M) |
| GET | `/v1/news/{ticker}` | Ticker | Latest news articles related to the ticker |
| GET | `/v1/financials/{ticker}` | Ticker | Revenue, net income, EPS, margins, and P/E; type=annual\|quarterly, both when omitted |
| GET | `/v1/related/{ticker}` | Ticker | Stocks related to the given ticker |
| GET | `/v1/classification/{ticker}` | Ticker | Descriptive classification labels such as Most active or US listed security |
| GET | `/v1/analyst/{ticker}` | Ticker | Curated news and analysis articles grouped by Google Finance |
| GET | `/v1/context/{ticker}` | Ticker | The same instrument on other exchanges, with per-listing price and currency |
| GET | `/v1/full/{ticker}` | Ticker | Combined quote, company, chart, and news in a single batched request |
| GET | `/v1/market/indices` | Market | Global market indices: Dow, S&P 500, NASDAQ, DAX, Nikkei, and more |
| GET | `/v1/market/movers` | Market | Top gainers, losers, and most active stocks; count 1-100 (default 10) |
| GET | `/v1/market/trending` | Market | Currently trending stocks on Google Finance |
| GET | `/v1/market/earnings` | Market | Upcoming earnings announcements |
| GET | `/v1/market/headlines` | Market | Current top finance headline |
| GET | `/v1/live` | Live | Server-Sent Events price stream for 8 tickers, refreshed every 15 seconds |
| GET | `/v1/live/snapshot` | Live | One-shot JSON array of the cached live quotes; empty until the hub has data |
| GET | `/healthz` | System | Service health and running version |

## Examples

- [Quote](https://finance.hermestech.uk/v1/quote/GOOGL:NASDAQ): `curl "https://finance.hermestech.uk/v1/quote/GOOGL:NASDAQ"`
- [Company](https://finance.hermestech.uk/v1/company/AAPL:NASDAQ): `curl "https://finance.hermestech.uk/v1/company/AAPL:NASDAQ"`
- [Chart](https://finance.hermestech.uk/v1/chart/MSFT:NASDAQ?range=1M): `curl "https://finance.hermestech.uk/v1/chart/MSFT:NASDAQ?range=1M"`
- [News](https://finance.hermestech.uk/v1/news/TSLA:NASDAQ): `curl "https://finance.hermestech.uk/v1/news/TSLA:NASDAQ"`
- [Financials](https://finance.hermestech.uk/v1/financials/GOOGL:NASDAQ?type=annual): `curl "https://finance.hermestech.uk/v1/financials/GOOGL:NASDAQ?type=annual"`
- [Related](https://finance.hermestech.uk/v1/related/AAPL:NASDAQ): `curl "https://finance.hermestech.uk/v1/related/AAPL:NASDAQ"`
- [Classification](https://finance.hermestech.uk/v1/classification/AAPL:NASDAQ): `curl "https://finance.hermestech.uk/v1/classification/AAPL:NASDAQ"`
- [Analyst](https://finance.hermestech.uk/v1/analyst/AAPL:NASDAQ): `curl "https://finance.hermestech.uk/v1/analyst/AAPL:NASDAQ"`
- [Context](https://finance.hermestech.uk/v1/context/AAPL:NASDAQ): `curl "https://finance.hermestech.uk/v1/context/AAPL:NASDAQ"`
- [Full](https://finance.hermestech.uk/v1/full/GOOGL:NASDAQ): `curl "https://finance.hermestech.uk/v1/full/GOOGL:NASDAQ"`
- [Indices](https://finance.hermestech.uk/v1/market/indices): `curl "https://finance.hermestech.uk/v1/market/indices"`
- [Movers](https://finance.hermestech.uk/v1/market/movers?category=gainers&count=10): `curl "https://finance.hermestech.uk/v1/market/movers?category=gainers&count=10"`
- [Trending](https://finance.hermestech.uk/v1/market/trending): `curl "https://finance.hermestech.uk/v1/market/trending"`
- [Earnings](https://finance.hermestech.uk/v1/market/earnings): `curl "https://finance.hermestech.uk/v1/market/earnings"`
- [Headlines](https://finance.hermestech.uk/v1/market/headlines): `curl "https://finance.hermestech.uk/v1/market/headlines"`
- [Live stream](https://finance.hermestech.uk/v1/live): `curl "https://finance.hermestech.uk/v1/live"`
- [Live snapshot](https://finance.hermestech.uk/v1/live/snapshot): `curl "https://finance.hermestech.uk/v1/live/snapshot"`
- [Health](https://finance.hermestech.uk/healthz): `curl "https://finance.hermestech.uk/healthz"`

## Ticker formats

| Type | Format | Example |
| --- | --- | --- |
| Stock | `SYMBOL:EXCHANGE` | `GOOGL:NASDAQ`, `THYAO:IST` |
| Index | `.SYMBOL:EXCHANGE` | `.DJI:INDEXDJX` |
| Crypto | `BASE-QUOTE` | `BTC-USD`, `ETH-USD` |
| Forex | `BASE-QUOTE` | `EUR-USD`, `GBP-USD` |
| ETF | `SYMBOL:EXCHANGE` | `SPY:NYSEARCA` |

A bare symbol such as `AAPL` is rejected with HTTP 400; the exchange or quote currency is always required.

## Response notes

- Every `/v1/*` response sets `Cache-Control: no-store`; the data is live and must not be cached.
- Status codes: 400 invalid input, 404 no data for the ticker, 500 decode failure, 502 upstream failure, 503 live stream at capacity.
- Error bodies are `{"error": "...", "message": "..."}`.

## Links

- [OpenAPI 3.1 specification](https://finance.hermestech.uk/openapi.json)
- [llms.txt](https://finance.hermestech.uk/llms.txt)
- [Source code](https://github.com/KilimcininKorOglu/Google-Finance-Api)
- License: MIT
