{"id":7838,"date":"2026-03-06T13:09:20","date_gmt":"2026-03-06T12:09:20","guid":{"rendered":"https:\/\/eodhd.com\/financial-apis\/?p=7838"},"modified":"2026-03-06T13:19:29","modified_gmt":"2026-03-06T12:19:29","slug":"node-js-typescript-sdk-for-eodhd-financial-apis","status":"publish","type":"post","link":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis","title":{"rendered":"Node.js\/TypeScript SDK for EODHD Financial APIs"},"content":{"rendered":"\n<p>The official EODHD Node.js\/TypeScript library gives you a single, typed client for every EODHD API \u2014 historical prices, fundamentals, real-time WebSocket streaming, options, news, screener, macro indicators, and more. It covers 150,000+ tickers across 70+ exchanges, ships with built-in retry logic, rate-limit handling, and works in Node.js, Deno, Bun, and modern browsers.<\/p>\n\n\n\n<p>Note that different datasets are available depending on your <a href=\"https:\/\/eodhd.com\/pricing\">subscription plan<\/a>. Core APIs such as end-of-day prices, fundamentals, and news are included in standard plans, while advanced features like real-time WebSocket streaming, US options, S&amp;P Global indices, PRAAMS analytics, and ESG data are provided by third-party vendors through the <a href=\"https:\/\/eodhd.com\/financial-apis\/marketplace\">EODHD Marketplace<\/a> and require a separate purchase. Check the pricing page and individual Marketplace product pages to see what is included in your plan.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/EodHistoricalData\/EODHD-APIs-Node-Financial-Library\">GitHub Repository<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.npmjs.com\/package\/eodhd\">npm Package<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/\">EODHD API Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/register\">Get Your Free API Key<\/a><\/li>\n<\/ul>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-installation\">Installation<\/h2>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code class=\"\">npm install eodhd<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p>The package has zero runtime dependencies. For WebSocket streaming in Node.js, install the optional ws peer dependency:<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code class=\"\">npm install ws<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-quick-start\">Quick Start<\/h2>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">import { EODHDClient } from 'eodhd';\n\nconst client = new EODHDClient({ apiToken: 'YOUR_API_TOKEN' });\n\n\/\/ Get historical end-of-day prices\nconst prices = await client.eod('AAPL.US', { from: '2024-01-01', to: '2024-12-31' });\nconsole.log(prices[0]);\n\/\/ { date: '2024-01-02', open: 187.15, high: 188.44, low: 183.89, close: 185.64, adjusted_close: 184.53, volume: 82488700 }\n\n\/\/ Get live (delayed) stock price\nconst quote = await client.realTime('AAPL.US');\nconsole.log(`${quote.code}: $${quote.close} (${quote.change_p}%)`);\n\n\/\/ Search for stocks\nconst results = await client.search('Tesla', { limit: 5 });\n<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p>You can also set the EODHD_API_TOKEN environment variable instead of passing it directly:<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">export EODHD_API_TOKEN=your_token_here<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Token is read from EODHD_API_TOKEN automatically\nconst client = new EODHDClient({});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-configuration\">Configuration<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Option<\/th><th>Type<\/th><th>Default<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>apiToken<\/td><td>string<\/td><td>EODHD_API_TOKEN env var<\/td><td>Your EODHD API token<\/td><\/tr><tr><td>baseUrl<\/td><td>string<\/td><td>https:\/\/eodhd.com\/api<\/td><td>API base URL<\/td><\/tr><tr><td>timeout<\/td><td>number<\/td><td>30000<\/td><td>Request timeout in milliseconds<\/td><\/tr><tr><td>maxRetries<\/td><td>number<\/td><td>2<\/td><td>Retry attempts on 429\/5xx errors (0 to disable)<\/td><\/tr><tr><td>logger<\/td><td>Logger<\/td><td>undefined<\/td><td>Custom logger; or set EODHD_LOG=debug for console output<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const client = new EODHDClient({\n  apiToken: 'YOUR_API_TOKEN',\n  timeout: 60000,       \/\/ 60 seconds\n  maxRetries: 3,        \/\/ retry up to 3 times on transient errors\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-historical-amp-price-data\">Historical &amp; Price Data<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-end-of-day-prices\">End-of-Day Prices<\/h3>\n\n\n\n<p>Fetch daily, weekly, or monthly OHLCV data for any ticker. The ticker format is SYMBOL.EXCHANGE (e.g. AAPL.US, VOD.LSE, BTC-USD.CC).<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const eod = await client.eod('AAPL.US', {\n  from: '2024-01-01',\n  to: '2024-12-31',\n  period: 'd', \/\/ 'd' (daily), 'w' (weekly), 'm' (monthly)\n  order: 'a',  \/\/ 'a' (ascending), 'd' (descending)\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-intraday-data\">Intraday Data<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const intraday = await client.intraday('AAPL.US', {\n  interval: '5m', \/\/ '1m', '5m', '1h'\n  from: '1704067200',\n  to: '1704153600',\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-live-delayed-prices\">Live (Delayed) Prices<\/h3>\n\n\n\n<p>Get the latest 1-minute OHLCV bar with a 15-20 minute delay. Supports multiple tickers in a single request.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Single ticker\nconst live = await client.realTime('AAPL.US');\n\n\/\/ Multiple tickers in one call\nconst liveMulti = await client.realTime('AAPL.US', { s: 'MSFT.US,GOOG.US' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-us-extended-delayed-quotes\">US Extended Delayed Quotes<\/h3>\n\n\n\n<p>Batch delayed quotes for US equities with bid\/ask, last trade, 52-week extremes, market cap, P\/E, dividends, and more. See the <a href=\"https:\/\/eodhd.com\/financial-apis\/live-ohlcv-stocks-api\">Live API docs<\/a> for the full field list.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const usQuotes = await client.usQuoteDelayed({ s: 'AAPL,MSFT,GOOG' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-bulk-eod-data\">Bulk EOD Data<\/h3>\n\n\n\n<p>Download end-of-day prices for an entire exchange in a single request.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const bulkUs = await client.bulkEod('US', { date: '2024-12-31' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-dividends-splits-amp-market-cap\">Dividends, Splits &amp; Market Cap<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Historical dividends\nconst dividends = await client.dividends('AAPL.US', { from: '2020-01-01' });\n\n\/\/ Historical splits\nconst splits = await client.splits('AAPL.US');\n\n\/\/ Historical market capitalization\nconst marketCap = await client.historicalMarketCap('AAPL.US', { from: '2024-01-01' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-fundamentals\">Fundamentals<\/h3>\n\n\n\n<p>Retrieve full company fundamentals \u2014 general info, financial statements, valuation metrics, earnings, and more. You can filter specific sections to reduce payload size.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Full company fundamentals\nconst fundamentals = await client.fundamentals('AAPL.US');\n\n\/\/ Filter specific sections\nconst general = await client.fundamentals('AAPL.US', { filter: 'General' });\nconst financials = await client.fundamentals('AAPL.US', { filter: 'Financials' });\n\n\/\/ Bulk fundamentals for an exchange\nconst bulkFund = await client.bulkFundamentals('US', { symbols: 'AAPL,MSFT,GOOG' });\n\n\/\/ Company logo (PNG or SVG)\nconst logoPng = await client.logo('AAPL.US');       \/\/ returns ArrayBuffer\nconst logoSvg = await client.logoSvg('AAPL.US');    \/\/ returns ArrayBuffer<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-calendar-events\">Calendar Events<\/h2>\n\n\n\n<p>Access upcoming and historical earnings, IPOs, splits, and dividends through the calendar API.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Upcoming earnings\nconst earnings = await client.calendar.earnings({\n  from: '2025-03-01',\n  to: '2025-03-31',\n  symbols: 'AAPL.US,MSFT.US',\n});\n\n\/\/ Earnings trends\nconst trends = await client.calendar.trends({ symbols: 'AAPL.US,MSFT.US' });\n\n\/\/ Upcoming IPOs\nconst ipos = await client.calendar.ipos({ from: '2025-03-01', to: '2025-06-01' });\n\n\/\/ Upcoming splits\nconst calSplits = await client.calendar.splits({ from: '2025-03-01', to: '2025-06-01' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-news-amp-sentiment\">News &amp; Sentiment<\/h2>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Financial news for a ticker\nconst news = await client.news({ s: 'AAPL.US', limit: 10 });\n\n\/\/ Filter by topic tag\nconst techNews = await client.news({ t: 'technology', limit: 20 });\n\n\/\/ Sentiment data over time\nconst sentiment = await client.sentiments({ s: 'AAPL.US', from: '2025-01-01' });\n\n\/\/ Trending keywords from financial news\nconst weights = await client.newsWordWeights({\n  s: 'AAPL.US',\n  'filter[date_from]': '2025-01-01',\n  'filter[date_to]': '2025-01-31',\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-technical-indicators\">Technical Indicators<\/h2>\n\n\n\n<p>Calculate over 20 technical indicators directly through the API: SMA, EMA, WMA, MACD, RSI, Stochastic, Bollinger Bands, ADX, ATR, CCI, SAR, and more.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const sma = await client.technical('AAPL.US', {\n  function: 'sma',\n  period: 50,\n  from: '2025-01-01',\n  order: 'a',\n});\n\nconst rsi = await client.technical('AAPL.US', {\n  function: 'rsi',\n  period: 14,\n  from: '2025-01-01',\n});\n\nconst bbands = await client.technical('AAPL.US', {\n  function: 'bbands',\n  period: 20,\n  from: '2025-01-01',\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-screening-amp-search\">Screening &amp; Search<\/h2>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Stock screener with financial filters\nconst screened = await client.screener({\n  sort: 'market_capitalization.desc',\n  filters: JSON.stringify([['market_capitalization', '&gt;', 1000000000]]),\n  limit: 10,\n});\n\n\/\/ Search stocks, ETFs, funds, bonds, indices, crypto\nconst results = await client.search('Apple', {\n  limit: 10,\n  type: 'stock', \/\/ 'all', 'stock', 'etf', 'fund', 'bond', 'index', 'crypto'\n});\n\n\/\/ ID mapping (ISIN, CUSIP, FIGI, LEI, CIK)\nconst mapped = await client.idMapping({ 'filter[isin]': 'US0378331005' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-exchanges\">Exchanges<\/h2>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ List all supported exchanges\nconst exchanges = await client.exchanges.list();\n\n\/\/ Get tickers for an exchange\nconst tickers = await client.exchanges.symbols('US', { type: 'common_stock' });\n\n\/\/ Exchange details with trading hours\nconst details = await client.exchanges.details('US');\n\n\/\/ Symbol change history\nconst changes = await client.exchanges.symbolChangeHistory({ from: '2024-01-01' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-macro-amp-economic-data\">Macro &amp; Economic Data<\/h2>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Macroeconomic indicators (GDP, inflation, unemployment, etc.)\nconst gdp = await client.macroIndicator('USA', { indicator: 'gdp_current_usd' });\nconst inflation = await client.macroIndicator('USA', { indicator: 'inflation_consumer_prices_annual' });\n\n\/\/ Economic events calendar\nconst events = await client.economicEvents({\n  from: '2025-03-01',\n  to: '2025-03-31',\n  country: 'US',\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-us-treasury-rates\">US Treasury Rates<\/h2>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const bills = await client.treasury.billRates({ from: '2025-01-01' });\nconst yields = await client.treasury.yieldRates({ from: '2025-01-01' });\nconst longTerm = await client.treasury.longTermRates({ from: '2025-01-01' });\nconst realYield = await client.treasury.realYieldRates({ from: '2025-01-01' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-websocket-real-time-streaming\">WebSocket (Real-Time Streaming)<\/h2>\n\n\n\n<p>Stream real-time market data via WebSocket. Four feeds are available: us (US trades), us-quote (US quotes), forex, and crypto. The client auto-reconnects with exponential backoff on connection loss.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const ws = client.websocket('us', ['AAPL', 'TSLA', 'MSFT']);\n\nws.on('data', (tick) =&gt; {\n  console.log(`${tick.s}: $${tick.p} x${tick.v} @ ${new Date(tick.t)}`);\n});\n\nws.on('error', (err) =&gt; console.error(err));\nws.on('close', () =&gt; console.log('Disconnected'));\nws.on('reconnectFailed', () =&gt; console.log('All reconnect attempts exhausted'));\n\n\/\/ Subscribe\/unsubscribe dynamically\nws.subscribe(['GOOG']);\nws.unsubscribe(['TSLA']);\n\n\/\/ Close when done\nws.close();<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p>WebSocket options:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Option<\/th><th>Type<\/th><th>Default<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>maxReconnectAttempts<\/td><td>number<\/td><td>5<\/td><td>Maximum reconnection attempts before giving up<\/td><\/tr><tr><td>reconnectInterval<\/td><td>number<\/td><td>3000<\/td><td>Base interval in milliseconds between reconnect attempts<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const ws = client.websocket('forex', ['EURUSD', 'GBPUSD'], {\n  maxReconnectAttempts: 10,\n  reconnectInterval: 5000,\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-marketplace-apis\">Marketplace APIs<\/h2>\n\n\n\n<p>Access third-party data providers through the <a href=\"https:\/\/eodhd.com\/marketplace\">EODHD Marketplace:<\/a> Unicorn Bay (options, S&amp;P Global indices, tick data, logos), Trading Hours, PRAAMS (investment analytics), and InvestVerte (ESG data).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-us-tick-level-data\">US Tick-Level Data<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const ticks = await client.ticks({ s: 'AAPL', from: 1704067200, to: 1704070800 });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-us-options-unicorn-bay\">US Options (Unicorn Bay)<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ List underlying symbols with options data\nconst symbols = await client.marketplace.unicornbay.options.underlyingSymbols({\n  'page[limit]': 100,\n});\n\n\/\/ Options contracts\nconst contracts = await client.marketplace.unicornbay.options.contracts({\n  'filter[underlying_symbol]': 'AAPL',\n  'filter[type]': 'call',\n  'filter[exp_date_from]': '2025-06-01',\n  'page[limit]': 50,\n});\n\n\/\/ Options EOD data\nconst optionsEod = await client.marketplace.unicornbay.options.eod({\n  'filter[underlying_symbol]': 'AAPL',\n  'filter[exp_date_eq]': '2025-06-20',\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-s-amp-p-global-indices-unicorn-bay\">S&amp;P Global Indices (Unicorn Bay)<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ List all S&amp;P\/Dow Jones indices\nconst indices = await client.marketplace.unicornbay.spglobal.list();\n\n\/\/ Index components (current)\nconst components = await client.marketplace.unicornbay.spglobal.components('GSPC.INDX');\n\n\/\/ Historical components\nconst historical = await client.marketplace.unicornbay.spglobal.components('GSPC.INDX', {\n  historical: true,\n  from: '2024-01-01',\n  to: '2024-12-31',\n});<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-trading-hours\">Trading Hours<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const markets = await client.marketplace.tradinghours.markets();\nconst details = await client.marketplace.tradinghours.details({ market: 'US.NASDAQ' });\nconst status = await client.marketplace.tradinghours.status({ market: 'US.NASDAQ' });\nconst lookup = await client.marketplace.tradinghours.lookup({ 'filter[symbol]': 'AAPL' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-investment-analytics-praams\">Investment Analytics (PRAAMS)<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Equity risk scoring\nconst equityRisk = await client.marketplace.praams.analyseEquityByTicker('AAPL.US');\n\n\/\/ Bond analysis\nconst bondAnalysis = await client.marketplace.praams.analyseBond('US912828Z880');\n\n\/\/ Smart equity screener\nconst equities = await client.marketplace.praams.exploreEquity(\n  { skip: 0, take: 20 },\n  { regions: ['North America'], sectors: ['Technology'] },\n);<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h3 class=\"wp-block-heading\" id=\"h-esg-data-investverte\">ESG Data (InvestVerte)<\/h3>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const companies = await client.marketplace.investverte.companies();\nconst esg = await client.marketplace.investverte.esg('AAPL.US', { year: 2024 });\nconst countryEsg = await client.marketplace.investverte.country('US');\nconst sectorEsg = await client.marketplace.investverte.sector('Technology');<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-error-handling\">Error Handling<\/h2>\n\n\n\n<p>The SDK provides a structured error hierarchy. All API errors extend EODHDError with status code, error code, and retryability information. Transient errors (429, 5xx) are automatically retried with exponential backoff.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Error Class<\/th><th>When<\/th><th>Retryable<\/th><\/tr><\/thead><tbody><tr><td>EODHDError<\/td><td>Base class for all API errors<\/td><td>Depends on status code<\/td><\/tr><tr><td>EODHDAuthError<\/td><td>Invalid or missing API token (401\/403)<\/td><td>No<\/td><\/tr><tr><td>EODHDRateLimitError<\/td><td>Rate limit exceeded (429)<\/td><td>Yes<\/td><\/tr><tr><td>EODHDNetworkError<\/td><td>Network connectivity issues<\/td><td>Yes<\/td><\/tr><tr><td>EODHDTimeoutError<\/td><td>Request exceeded timeout<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">import {\n  EODHDClient,\n  EODHDError,\n  EODHDAuthError,\n  EODHDRateLimitError,\n} from 'eodhd';\n\ntry {\n  const data = await client.eod('INVALID.XX');\n} catch (err) {\n  if (err instanceof EODHDRateLimitError) {\n    console.log('Rate limited, retry after:', err.retryAfter);\n  } else if (err instanceof EODHDAuthError) {\n    console.log('Check your API token');\n  } else if (err instanceof EODHDError) {\n    console.log(err.statusCode);  \/\/ HTTP status code\n    console.log(err.code);        \/\/ 'auth_error' | 'rate_limit' | 'network_error' | ...\n    console.log(err.retryable);   \/\/ boolean\n  }\n}<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-typescript-support\">TypeScript Support<\/h2>\n\n\n\n<p>The library is written in TypeScript with strict mode enabled. All methods, parameters, and responses are fully typed \u2014 you get autocompletion and compile-time checks out of the box.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">import {\n  EODHDClient,\n  EodDataPoint,\n  RealTimeQuote,\n  SearchResult,\n  FundamentalsData,\n  NewsArticle,\n} from 'eodhd';\n\nconst client = new EODHDClient({ apiToken: 'YOUR_API_TOKEN' });\n\nconst prices: EodDataPoint[] = await client.eod('AAPL.US');\nconst quote: RealTimeQuote = await client.realTime('AAPL.US');\nconst results: SearchResult[] = await client.search('Apple');\nconst fund: FundamentalsData = await client.fundamentals('AAPL.US');\nconst news: NewsArticle[] = await client.news({ s: 'AAPL.US' });<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<h2 class=\"wp-block-heading\" id=\"h-requirements\">Requirements<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Requirement<\/th><th>Details<\/th><\/tr><\/thead><tbody><tr><td>Node.js<\/td><td>&gt;= 20 (uses native fetch)<\/td><\/tr><tr><td>Deno \/ Bun<\/td><td>Supported out of the box<\/td><\/tr><tr><td>Browsers<\/td><td>Modern browsers with fetch support<\/td><\/tr><tr><td>WebSocket (Node.js)<\/td><td>Optional ws package (browsers use native WebSocket)<\/td><\/tr><tr><td>Module format<\/td><td>ESM and CommonJS dual-published<\/td><\/tr><tr><td>Tree-shaking<\/td><td>Supported (sideEffects: false)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-api-coverage\">API Coverage<\/h2>\n\n\n\n<p>The SDK provides typed methods for every EODHD API endpoint:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Category<\/th><th>Methods<\/th><\/tr><\/thead><tbody><tr><td>Historical &amp; Price Data<\/td><td>eod, intraday, realTime, usQuoteDelayed, bulkEod, dividends, splits, historicalMarketCap, ticks<\/td><\/tr><tr><td>Fundamentals<\/td><td>fundamentals, bulkFundamentals, logo, logoSvg<\/td><\/tr><tr><td>Calendar<\/td><td>calendar.earnings, calendar.trends, calendar.ipos, calendar.splits, calendar.dividends<\/td><\/tr><tr><td>News &amp; Sentiment<\/td><td>news, sentiments, newsWordWeights<\/td><\/tr><tr><td>Technical Indicators<\/td><td>technical (SMA, EMA, RSI, MACD, Bollinger Bands, and 15+ more)<\/td><\/tr><tr><td>Screening &amp; Search<\/td><td>screener, search, idMapping<\/td><\/tr><tr><td>Exchanges<\/td><td>exchanges.list, exchanges.symbols, exchanges.details, exchanges.symbolChangeHistory<\/td><\/tr><tr><td>Macro &amp; Economic<\/td><td>macroIndicator, economicEvents<\/td><\/tr><tr><td>Treasury<\/td><td>treasury.billRates, treasury.yieldRates, treasury.longTermRates, treasury.realYieldRates<\/td><\/tr><tr><td>Corporate Actions<\/td><td>insiderTransactions<\/td><\/tr><tr><td>CBOE Europe<\/td><td>cboe.indices, cboe.index<\/td><\/tr><tr><td>WebSocket<\/td><td>websocket (us, us-quote, forex, crypto feeds)<\/td><\/tr><tr><td>Marketplace<\/td><td>Unicorn Bay (options, S&amp;P indices, tick data, logos), Trading Hours, PRAAMS, InvestVerte<\/td><\/tr><tr><td>User<\/td><td>user<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-links\">Links<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/EodHistoricalData\/EODHD-APIs-Node-Financial-Library\">GitHub Repository<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.npmjs.com\/package\/eodhd\">npm Package<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/financial-apis\/\">EODHD API Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/eodhd.com\/register\">Get Your Free API Key<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"has-text-align-center\"><a class=\"maxbutton-1 maxbutton maxbutton-subscribe-to-api external-css btn\" href=\"https:\/\/eodhd.com\/register\"><span class='mb-text'>Sign up &amp; Get Data<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The official EODHD Node.js\/TypeScript library gives you a single, typed client for every EODHD API \u2014 historical prices, fundamentals, real-time WebSocket streaming, options, news, screener, macro indicators, and more. It covers 150,000+ tickers across 70+ exchanges, ships with built-in retry logic, rate-limit handling, and works in Node.js, Deno, Bun, and modern browsers. Note that different [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5],"tags":[148,147,149,150],"coding-language":[],"ready-to-go-solution":[],"qualification":[],"financial-apis-category":[],"financial-apis-manuals":[],"class_list":["post-7838","post","type-post","status-publish","format-standard","hentry","category-excel-python-php-laravel-java-matlab-examples","tag-library","tag-node-js","tag-sdk","tag-typescript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.6 (Yoast SEO v26.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Node.js\/TypeScript SDK for EODHD Financial APIs | EODHD APIs Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Node.js\/TypeScript SDK for EODHD Financial APIs\" \/>\n<meta property=\"og:description\" content=\"The official EODHD Node.js\/TypeScript library gives you a single, typed client for every EODHD API \u2014 historical prices, fundamentals, real-time WebSocket streaming, options, news, screener, macro indicators, and more. It covers 150,000+ tickers across 70+ exchanges, ships with built-in retry logic, rate-limit handling, and works in Node.js, Deno, Bun, and modern browsers. Note that different [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis\" \/>\n<meta property=\"og:site_name\" content=\"Stock Price Data, Financial and Stock Market API\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eodhistoricaldata\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-06T12:09:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-06T12:19:29+00:00\" \/>\n<meta name=\"author\" content=\"a.pletnev\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:site\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"a.pletnev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis#article\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis\"},\"author\":{\"name\":\"a.pletnev\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/ed3193541c25b73e823a83bdcdb09b5d\"},\"headline\":\"Node.js\/TypeScript SDK for EODHD Financial APIs\",\"datePublished\":\"2026-03-06T12:09:20+00:00\",\"dateModified\":\"2026-03-06T12:19:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis\"},\"wordCount\":802,\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#organization\"},\"keywords\":[\"library\",\"node.js\",\"sdk\",\"typescript\"],\"articleSection\":[\"5. Developer Tools &amp; Examples\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis\",\"name\":\"Node.js\/TypeScript SDK for EODHD Financial APIs | EODHD APIs Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#website\"},\"datePublished\":\"2026-03-06T12:09:20+00:00\",\"dateModified\":\"2026-03-06T12:19:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/eodhd.com\/financial-apis\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js\/TypeScript SDK for EODHD Financial APIs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#website\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/\",\"name\":\"Historical Stock Prices and Fundamental Financial Data APIs | EODHD\",\"description\":\"End Of Day (EOD), Fundamental and Real-time\/Live Data Market API\",\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/eodhd.com\/financial-apis\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#organization\",\"name\":\"EODHD (EOD Historical Data)\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"width\":159,\"height\":82,\"caption\":\"EODHD (EOD Historical Data)\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/eodhistoricaldata\",\"https:\/\/x.com\/EOD_data\",\"https:\/\/www.reddit.com\/r\/EODHistoricalData\/\",\"https:\/\/eod-historical-data.medium.com\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/ed3193541c25b73e823a83bdcdb09b5d\",\"name\":\"a.pletnev\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/020e454749b61223b72b1bf96e7978ccdd1e39b04585b29698da3767a193a57d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/020e454749b61223b72b1bf96e7978ccdd1e39b04585b29698da3767a193a57d?s=96&d=mm&r=g\",\"caption\":\"a.pletnev\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Node.js\/TypeScript SDK for EODHD Financial APIs | EODHD APIs Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis","og_locale":"en_US","og_type":"article","og_title":"Node.js\/TypeScript SDK for EODHD Financial APIs","og_description":"The official EODHD Node.js\/TypeScript library gives you a single, typed client for every EODHD API \u2014 historical prices, fundamentals, real-time WebSocket streaming, options, news, screener, macro indicators, and more. It covers 150,000+ tickers across 70+ exchanges, ships with built-in retry logic, rate-limit handling, and works in Node.js, Deno, Bun, and modern browsers. Note that different [&hellip;]","og_url":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis","og_site_name":"Stock Price Data, Financial and Stock Market API","article_publisher":"https:\/\/www.facebook.com\/eodhistoricaldata","article_published_time":"2026-03-06T12:09:20+00:00","article_modified_time":"2026-03-06T12:19:29+00:00","author":"a.pletnev","twitter_card":"summary_large_image","twitter_creator":"@EOD_data","twitter_site":"@EOD_data","twitter_misc":{"Written by":"a.pletnev","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis#article","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis"},"author":{"name":"a.pletnev","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/ed3193541c25b73e823a83bdcdb09b5d"},"headline":"Node.js\/TypeScript SDK for EODHD Financial APIs","datePublished":"2026-03-06T12:09:20+00:00","dateModified":"2026-03-06T12:19:29+00:00","mainEntityOfPage":{"@id":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis"},"wordCount":802,"publisher":{"@id":"https:\/\/eodhd.com\/financial-apis\/#organization"},"keywords":["library","node.js","sdk","typescript"],"articleSection":["5. Developer Tools &amp; Examples"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis","url":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis","name":"Node.js\/TypeScript SDK for EODHD Financial APIs | EODHD APIs Documentation","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-apis\/#website"},"datePublished":"2026-03-06T12:09:20+00:00","dateModified":"2026-03-06T12:19:29+00:00","breadcrumb":{"@id":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/eodhd.com\/financial-apis\/node-js-typescript-sdk-for-eodhd-financial-apis#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/eodhd.com\/financial-apis"},{"@type":"ListItem","position":2,"name":"Node.js\/TypeScript SDK for EODHD Financial APIs"}]},{"@type":"WebSite","@id":"https:\/\/eodhd.com\/financial-apis\/#website","url":"https:\/\/eodhd.com\/financial-apis\/","name":"Historical Stock Prices and Fundamental Financial Data APIs | EODHD","description":"End Of Day (EOD), Fundamental and Real-time\/Live Data Market API","publisher":{"@id":"https:\/\/eodhd.com\/financial-apis\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eodhd.com\/financial-apis\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/eodhd.com\/financial-apis\/#organization","name":"EODHD (EOD Historical Data)","url":"https:\/\/eodhd.com\/financial-apis\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/","url":"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","contentUrl":"https:\/\/eodhd.com\/financial-apis\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","width":159,"height":82,"caption":"EODHD (EOD Historical Data)"},"image":{"@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eodhistoricaldata","https:\/\/x.com\/EOD_data","https:\/\/www.reddit.com\/r\/EODHistoricalData\/","https:\/\/eod-historical-data.medium.com\/"]},{"@type":"Person","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/ed3193541c25b73e823a83bdcdb09b5d","name":"a.pletnev","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-apis\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/020e454749b61223b72b1bf96e7978ccdd1e39b04585b29698da3767a193a57d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/020e454749b61223b72b1bf96e7978ccdd1e39b04585b29698da3767a193a57d?s=96&d=mm&r=g","caption":"a.pletnev"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p8NjB1-22q","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts\/7838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/comments?post=7838"}],"version-history":[{"count":4,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts\/7838\/revisions"}],"predecessor-version":[{"id":7844,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/posts\/7838\/revisions\/7844"}],"wp:attachment":[{"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/media?parent=7838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/categories?post=7838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/tags?post=7838"},{"taxonomy":"coding-language","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/coding-language?post=7838"},{"taxonomy":"ready-to-go-solution","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/ready-to-go-solution?post=7838"},{"taxonomy":"qualification","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/qualification?post=7838"},{"taxonomy":"financial-apis-category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/financial-apis-category?post=7838"},{"taxonomy":"financial-apis-manuals","embeddable":true,"href":"https:\/\/eodhd.com\/financial-apis\/wp-json\/wp\/v2\/financial-apis-manuals?post=7838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}