It’s very easy to use our API with F# (F Sharp) language as well. We provide simple examples of using our API with F# (F Sharp) and we believe that it will help to start working with our API very quick.


First, you should download In this archive, you will find three files:

  • Program.fs
  • Download.fs
  • EOD.csv

The two text files contain the F# (F-Sharp) code that downloads data from the EODHD API. The file Download.fs must be above Program.fs in the Visual Studio solution, as the order of files matters in F#, differently from other languages like C#.

The CSV file contains a list of tickers to be downloaded. It is an example of the kind of file that is read by the F# program.

For testing purposes, you can use this API Key:

Register & Get Data


Works with AAPL.US only.


The user will have to install the packages Deedle and FSharp.Data from Nuget.


The full code of Program.fs

open Deedle

let main argv =

let dropboxRoot = "C:\\" // or whenever your Dropbox folder is

// File with list of tickers of stocks to be downloaded
let eODAssetsPath = dropboxRoot + @"\Dropbox\EODData\EOD.csv"

// Alternatively delete the 'let dropBoxRoot = ...' line and set the value of eODAssetsPath to the location where you saved EOD.csv.

// Data stored in this folder
let storageDataPath = dropboxRoot + @"\Dropbox\EODDAta\"

// Tickers to be downloaded from EOD Historical Data
// The CSV file in eODAssetsPath contains a column labeled Ticker with
// the tickers of the stocks to be downloaded from EOD Historical Data
let eODTickers : string seq =
Frame.ReadCsv(eODAssetsPath, hasHeaders=true, inferTypes=false)
|> Frame.getCol "Ticker"
|> Series.dropMissing
|> Series.filterValues (fun x -> x <> "")
|> Series.values

Seq.iter (Download.downloadFromEOD storageDataPath) eODTickers

printfn "%A" argv
0 // return an integer exit code

The full code of Download.fs

module Download

open FSharp.Data

open Deedle

/// Downloads data from EOD Historical Data for one stock.
let downloadFromEOD (storageDataPath: string) (symbol: string) : unit =

// Token for the EOD Historical Data service
let apiToken = "99999999999999" // insert your EOD token here

let endStr = "?api_token=" + apiToken + "&period=d&order=d"

printfn "Downloading symbol %s" symbol

let url = @"" + symbol + endStr

let df =
|> DeedleFuncs.Frame.stringToTSDF

let path = storageDataPath + symbol + ".csv"

FrameExtensions.SaveCsv(df, path, includeRowKeys=true, keyNames=["Date"])

1. Use “DEMO” API key to test our data from a limited set of the tickers without registering:
Real-Time Data and All of the APIs (except Bulk) are included without limitations on API calls.
2. Register to get your free API key (limitated by 20 API calls per day) with access to:
End-Of-Day Historical Data with only past year for any ticker and List of tickers per Exchange
3. To unlock your API key we recommend to choose subscription which covers your needs

Thanks for this code to Fernando Saldanha. Fernando Saldanha has a Ph.D. in Economics from Massachusetts Institute of Technology (1982). He worked many years in the U.S. and Brazilian financial markets and is now happily retired. His hobby is writing financial software with F#.

Register & Get Data