|

|  How to Fetch Stock Data Using Finnhub.io API in Node.js

How to Fetch Stock Data Using Finnhub.io API in Node.js

October 31, 2024

Learn to fetch stock data using Finnhub.io API in Node.js. This guide simplifies stock data retrieval for seamless financial app development.

How to Fetch Stock Data Using Finnhub.io API in Node.js

 

Set Up Your Node.js Environment

 

  • Ensure you have Node.js and npm installed on your computer. You can check their versions by running node -v and npm -v in the terminal.
  •  

  • Create a new directory for your project and initialize it with npm init -y to create a package.json file.

 

Install Required Packages

 

  • Use the axios package to make HTTP requests. Install it by running:

 

npm install axios

 

  • Optionally, install dotenv to manage your API key more securely. This helps to keep the API key out of your source code:

 

npm install dotenv

 

Configure Environment Variables

 

  • Create a new .env file in the root of your project directory and add your Finnhub.io API key like so:

 

FINNHUB_API_KEY=your_finnhub_api_key_here

 

  • Load this configuration in your main JavaScript file at the start by requiring dotenv:

 

require('dotenv').config();

 

Write the Function to Fetch Stock Data

 

  • Create a new JavaScript file, say fetchStockData.js, and include the following code to fetch stock data:

 

const axios = require('axios');

async function fetchStockData(symbol) {
  try {
    const apiKey = process.env.FINNHUB_API_KEY;
    const url = `https://finnhub.io/api/v1/quote?symbol=${symbol}&token=${apiKey}`;
    const response = await axios.get(url);
    return response.data;
  } catch (error) {
    console.error(`Error fetching stock data: ${error.message}`);
    throw error;
  }
}

// Usage example
fetchStockData('AAPL').then(data => console.log(data)).catch(error => console.error(error));

 

Understand the Output

 

  • When you run the above function with a valid symbol like 'AAPL', it should output an object containing stock data such as current price, high, low, open price, etc.
  •  

  • Example output:

 

{
  "c": 145.81, // Current price
  "h": 146.13, // High price of the day
  "l": 143.76, // Low price of the day
  "o": 144.45, // Open price of the day
  "pc": 144.12 // Previous close price
}

 

Error Handling

 

  • Ensure you handle various types of errors such as network issues or invalid API responses by using try...catch blocks within your function.
  •  

  • Log these errors comfortably using console.error to diagnose issues.

 

Optimize and Extend the Functionality

 

  • For a more extensive solution, consider adding additional functions for error logging or fetching multiple stocks concurrently using Promise.all() if required.
  •  

  • Integrate user input handling or a front-end component to dynamically fetch and display data.
  •  

  • Possibly cache data if historical data is not frequently changing to minimize API calls and potential costs.