Authentication
Every endpoint (other than key creation and checkout) requires an X-API-Key header. There is no OAuth flow, no session token, and no key rotation endpoint yet — treat your key like a password.
A missing or invalid key returns 401 Unauthorized.
Rate limits
Enforced per calendar day (UTC), per API key. Limits depend on your plan: 100/day on Free, 10,000/day on Developer, 100,000/day on Pro. Every plan has access to every endpoint — limits are the only difference.
Returned with HTTP status 429. The counter resets at UTC midnight.
Pagination
List endpoints share one envelope shape across the whole API: a data array plus a pagination object. Use the page and page_size query parameters to page through results.
Errors
Validation errors return 422 with a structured detail array. Not-found resources return 404. Everything else follows standard HTTP status codes.
List all stocks, paginated and optionally filtered by search text or sector.
| Param | Type | Description |
|---|---|---|
| page | int | Page number. Default 1. |
| page_size | int | Rows per page, max 200. Default 50. |
| q optional | string | Search by symbol or company name. |
| sector optional | string | Filter by exact sector name, e.g. "Financial Services". |
| active_only | bool | Exclude delisted stocks. Default true. |
Company info plus the latest available EOD price for a ticker.
Unknown ticker returns 404.
Historical daily prices, optionally bounded by date range. Includes a bonus/split-adjusted close so charts don't show a fake jump on an ex-date.
| Param | Type | Description |
|---|---|---|
| from optional | date | Start date, e.g. 2026-01-01. |
| to optional | date | End date. |
| page, page_size | int | Standard pagination, most recent first. |
Latest price snapshot for multiple tickers in one call — built for watchlists and dashboards. Unknown symbols come back with found: false instead of failing the whole request.
| Param | Type | Description |
|---|---|---|
| symbols | string | Comma-separated tickers, e.g. RELIANCE,TCS,INFY. Max 50. |
Quarterly or annual P&L, balance sheet, and cash flow, parsed directly from NSE XBRL filings — including bank/NBFC taxonomy handling and consolidated-vs-standalone filings.
| Param | Type | Description |
|---|---|---|
| period_type | string | quarterly or annual. Default quarterly. |
| page, page_size | int | Standard pagination, most recent period first. |
Valuation and profitability ratios, computed on read from the latest price and the latest annual filing (falling back to quarterly if no annual filing exists yet).
SMA, EMA, RSI, and MACD, computed server-side from daily closes. Values are null wherever there isn't enough price history yet to compute them.
| Param | Type | Description |
|---|---|---|
| sma_period | int | Default 20. |
| ema_period | int | Default 20. |
| rsi_period | int | Default 14 (Wilder's smoothing). |
| from, to optional | date | Bound the returned window. |
Dividends, bonus issues, splits, and rights issues for a ticker, most recent ex-date first.
| Param | Type | Description |
|---|---|---|
| action_type optional | string | dividend, bonus, split, rights, buyback, or other. |
Compare valuation and profitability ratios across every active stock in a sector — computed in bulk rather than looping the single-ticker ratios endpoint.
| Param | Type | Description |
|---|---|---|
| sector | string | Exact sector name, e.g. "Financial Services". |
| sort | string | market_cap, pe_ratio, pb_ratio, roe, or roce. Default market_cap. |
| limit | int | Max 100. Default 20. |
Top gainers, losers, or most-active-by-volume stocks for the most recent trading day with price data. Uses the latest date present in the data, not today's calendar date, so it stays correct on weekends and holidays.
| Param | Type | Description |
|---|---|---|
| category | string | gainers, losers, or active. Default gainers. |
| limit | int | Max 100. Default 20. |
Stocks whose price moved by at least a given percent versus the previous close. Unlike /movers (always a top-N ranking), this is a threshold filter — it can return zero rows on a quiet day, or more than limit on a volatile one.
| Param | Type | Description |
|---|---|---|
| min_change_pct | float | Minimum absolute % move. Default 5.0. |
| direction | string | up, down, or both. Default both. |
| limit | int | Max 200. Default 50. |
Fuzzy search across ticker symbol and company name. Ranks exact/prefix symbol matches above substring/company-name matches, active stocks first.
| Param | Type | Description |
|---|---|---|
| q | string | Search text, e.g. "reliance". |
| limit | int | Max 50. Default 10. |
List all tracked NSE indices, paginated and optionally filtered by category (e.g. broad-market vs. sectoral).
| Param | Type | Description |
|---|---|---|
| category optional | string | e.g. "BROAD MARKET INDICES", "SECTORAL INDICES". |
Historical daily EOD levels for an index, optionally bounded by date range.