Source plugin for pulling in market and individual stock data into Gatsby from the unofficial Yahoo Finance API hosted by Rapid API.
Yahoo deprecated their API in 2012, but it has since been made available on Rapid API and still provides valuable data for current and historical stock market information.
- Historical (and at the time of build) pricing data and metadata for an individual stock or many stocks.
- Balance sheet data for an individual stock
- "Market Mover" data. (x number of stocks with the largest gains, losses, and most active trading at time of build).
This is only a small subset of the data offered by the Yahoo Finance API, so if there's something missing that you'd like to see added please open an issue or create a pull request in Github!
npm install --save gatsby-yahoo-finance-api
First you'll need to create an Rapid API account to retrieve an API key here.
Then in your gatsby-config.js
, add the following plugin configuration for Gatsby to pull in your data:
plugins: [
{
resolve: "gatsby-yahoo-finance-api",
options: {
/* Your Yahoo Finance API Key (Required) */
key: "<YOUR_API_KEY>",
/*
An array of queries you want to make (The data you want to fetch at build time).
At least one query object is required.
*/
queries: [
/*
Below is a list of all queries available, with their associated types and params.
All queries must have a "type" and a "params" field
The query type determines which query will be made.
Note: Timestamps for this API are in Unix epoch time. Refer to https:/www.epochconverter.com/ to determine a timestamp for a given date.
*/
{
type: "get-historical-data",
params: {
period1: "1431010482", // (Required) Epoch timestamp
period2: "1588863282", // (Required) Epoch timestamp
symbol: "TSLA", // (Required) Stock ticker/symbol
frequency: "1d", // (Optional) Options: 1d | 1w | 1mo
},
},
{
type: "get-balance-sheet",
params: {
symbol: "TSLA", // (Required) Stock ticker/symbol
},
},
{
type: "get-movers",
params: {
region: "US", // (Required) Options: AU | CA | FR | DE | HK | US | IT | ES | GB | IN
lang: "en", // (Required) Options: en | fr | de | it | es | zh
count: "10", // (Optional) The number of quotes to display in day gainers / losers / activies
},
},
{
type: "get-charts",
params: {
symbol: "TSLA", // (Required) Stock ticker/symbol
region: "US", // (Required) Options: AU | CA | FR | DE | HK | US | IT | ES | GB | IN
lang: "en", // (Required) Options: en | fr | de | it | es | zh
range: "3mo", // (Required) Options: 1d | 5d | 3mo | 6mo | 1y | 5y | max
interval: "1mo", // (Required) Options: 5m | 15m | 1d | 1wk | 1mo
comparisons: "APPL,GOOG", // (Optional) Comma seperated list of stock symbols to retrieve financial data for
},
},
],
},
},
]
Once the build is done, the following node types will be available in your GraphQL queries (depending on which queries were made)
- stockHistoricalData
- stockBalanceSheet
- marketMovers
- marketCharts
You can query generated nodes like the following:
{
allStockHistoricalData {
edges {
node {
prices {
close
open
date
}
}
}
}
}