
Attention ! l’API Yahoo Finance n’est pas officielle et peut évoluer ou s’interrompre sans préavis.
Ci dessous un petit code javascript pour télécharger les cours quotidiens :
async function getQuotesHistory(ticker) {
//plages de données disponibles :["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]
url = `https://query1.finance.yahoo.com/v8/finance/chart/${ticker}?range=1mo&interval=1d&includePrePost=true&events=div%7Csplit%7Cearn&corsDomain=finance.yahoo.com`;
// Récupère les données à partir de l'API Yahoo finance
try{
response = await fetch(url);
}catch (err){
console.log(`fetch ko : ${ticker}`);
}
try {
data = await response.json();
// extraction des données
const open = data.chart.result[0].indicators.quote[0].open;
const high = data.chart.result[0].indicators.quote[0].high;
const low = data.chart.result[0].indicators.quote[0].low;
const close = data.chart.result[0].indicators.quote[0].close;
const volume = data.chart.result[0].indicators.quote[0].volume;
const dates = data.chart.result[0].timestamp.map((ts) => new Date(ts * 1000).toLocaleDateString('en-ZA'));
// Boucle pour parser les données de chaque jour et les loguer dans la console
for (let i = 0; i < open.length; i++) {
console.log(`${ticker};${dates[i]};${open[i]};${high[i]};${low[i]};${close[i]};${volume[i]}`);
}
} catch(err){
console.log(`erreur : ${ticker}`);
console.log(err.message);
}
}
getQuotesHistory('^GSPC'); //cours de l'indice SP500
getQuotesHistory('AAPL'); //cours de l'action Apple
getQuotesHistory('ajouter ici votre ticker');
code d’appel dans le terminal pour générer un fichier .csv :
node yfinance.js > c:\temp\cotations.csv