Search code examples
apigoogle-finance-api

How do I get currency exchange rates via an API such as Google Finance?


Now, I did find the Google Finance API and started looking through that but I found a lot of info about portfolios, transactions, positions & other stuff I know nothing about.

Am I looking at the wrong docs? What do I need to do to get a feed of exchange rates from GF? Is this even possible?

EDIT

To make things a little clearer. I'm not interested in technical stuff nor do I want any code.


Solution

  • Thanks for all your answers.

    Free currencyconverterapi:

    • Rates updated every 30 min
    • API key is now required for the free server.

    A sample conversion URL is: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


    For posterity here they are along with other possible answers:

    1. Yahoo finance API Discontinued 2017-11-06###

    Discontinued as of 2017-11-06 with message

    It has come to our attention that this service is being used in violation of the Yahoo Terms of Service. As such, the service is being discontinued. For all future markets and equities data research, please refer to finance.yahoo.com.

    Request: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
    This CSV was being used by a jQuery plugin called Curry. Curry has since (2017-08-29) moved to use fixer.io instead due to stability issues. Might be useful if you need more than just a CSV.

    1. (thanks to Keyo) Yahoo Query Language lets you get a whole bunch of currencies at once in XML or JSON. The data updates by the second (whereas the European Central Bank has day old data), and stops in the weekend. Doesn't require any kind of sign up.

    http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", "USDAUD", "USDBRL", "USDCAD", "USDCNY", "USDHKD", "USDIDR", "USDILS", "USDINR", "USDKRW", "USDMXN", "USDMYR", "USDNZD", "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK")&env=store://datatables.org/alltableswithkeys

    Here is the YQL query builder, where you can test a query and copy the url: (NO LONGER AVAILABLE)

    http://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDMXN%22%2C%20%22USDCHF%22%29

    yql console no longer available

    1. Open Source Exchange Rates API

    Free for personal use (1000 hits per month)
    Changing "base" (from "USD") is not allowed in Free account
    Requires registration.
    Request: http://openexchangerates.org/latest.json
    Response:

       <!-- language: lang-js -->
    
        {
          "disclaimer": "This data is collected from various providers ...",
          "license": "all code open-source under GPL v3 ...",
          "timestamp": 1323115901,
          "base": "USD",
          "rates": {
              "AED": 3.66999725,
              "ALL": 102.09382091,
              "ANG": 1.78992886,
              // 115 more currency rates here ...
          }
        }
    
    1. currencylayer API

    Free Plan for 100 monthly hits
    Changing "source" (from "USD") is not allowed in Free account
    Requires registration.
    Documentation: currencylayer.com/documentation

    JSON Response:

       <!-- language: lang-js -->
    
        {
          [...]
          "timestamp": 1436284516,
          "source": "USD",
          "quotes": {
              "USDAUD": 1.345352401,
              "USDCAD": 1.27373397,
              "USDCHF": 0.947845302,
              "USDEUR": 0.91313905,
              "USDGBP": 0.647603397,
              // 168 world currencies
              }
          }
    
    1. CurrencyFreaks API

    Free Plan (1000 hits per month)
    Changing 'Base' (From 'USD') is not allowed in free account
    Requires registration
    Data updated every 60 sec.
    179 currencies worldwide including currencies, metals, and cryptocurrencies
    Support (Even on the free plan) Shell,Node.js, Java, Python, PHP, Ruby, JS, C#, C, Go, Swift.
    Documentation: https://currencyfreaks.com/documentation.html

    Endpoint:

    $ curl 'https://api.currencyfreaks.com/latest?apikey=YOUR_APIKEY'
    

    JSON Response:

    {
        "date": "2020-10-08 12:29:00+00",
        "base": "USD",
        "rates": {
            "FJD": "2.139",
            "MXN": "21.36942",
            "STD": "21031.906016",
            "LVL": "0.656261",
            "SCR": "18.106031",
            "CDF": "1962.53482",
            "BBD": "2.0",
            "GTQ": "7.783265",
            "CLP": "793.0",
            "HNL": "24.625383",
            "UGX": "3704.50271",
            "ZAR": "16.577611",
            "TND": "2.762",
            "CUC": "1.000396",
            "BSD": "1.0",
            "SLL": "9809.999914",
            "SDG": 55.325,
            "IQD": "1194.293591",
              .
              .
              .
        [179 currencies]
        }
    }
    
    1. Fixer.io API (European Central Bank data)

    Free Plan for 100 monthly hits
    Changing "source" (from "USD") is not allowed in Free account Requires registration.

    This API endpoint is deprecated and will stop working on June 1st, 2018. For more information please visit: https://github.com/fixerAPI/fixer#readme)


    Website : http://fixer.io/
    Example request : [http://api.fixer.io/latest?base=USD][7]
    Only collects one value per each day
    1. European Central Bank Feed

    Docs: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html#dev
    Request: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

    XML Response:

       <!-- language: lang-xml -->
    
        <Cube>
          <Cube time="2015-07-07">
          <Cube currency="USD" rate="1.0931"/>
          <Cube currency="JPY" rate="133.88"/>
          <Cube currency="BGN" rate="1.9558"/>
          <Cube currency="CZK" rate="27.100"/>
        </Cube>
    
    1. exchangeratesapi.io

    According to the website:

    Exchange rates API is a free service for current and historical foreign exchange rates published by the European Central Bank
    This service is compatible with fixer.io and is really easy to use: no API key needed - UPDATE: API key is now needed, free tier is 250 requests/mo.
    For example (this uses CURL, but you can use your favorite requesting tool):

        > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD&apikey=YOUR_KEY
        {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
    
    1. CurrencyApi.net

    Free Plan for 1250 monthly hits
    150 Crypto and physical currencies - live updates
    Base currency is set as USD on free account
    Requires registration.
    Documentation: currencyapi.net/documentation

    JSON Response:

        {
          "valid": true,
          "updated": 1567957373,
          "base": "USD",
          "rates": {
                  "AED": 3.673042,
                  "AFN": 77.529504,
                  "ALL": 109.410403,
                  // 165 currencies + some cryptos
              }
          }
    
    1. Currency from LabStack

    UPDATE: These links aren't currently working (June 2024). Maybe discontinued.

    Website: https://labstack.com/currency
    Documentation: https://labstack.com/docs/api/currency/convert
    Pricing: https://labstack.com/pricing
    Request: https://currency.labstack.com/api/v1/convert/1/USD/INR
    Response:

    ```js
     {
       "time": "2019-10-09T21:15:00Z",
       "amount": 71.1488
     }
     ```
    

    1: http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", "USDAUD", "USDBRL", "USDCAD", "USDCNY", "USDHKD", "USDIDR", "USDILS", "USDINR", "USDKRW", "USDMXN", "USDMYR", "USDNZD", "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK")&env=store://datatables.org/alltableswithkeys

    1. currency-api

    • Free & Blazing Fast response using CDN
    • No Rate limits
    • 200+ Currencies, Including Common Cryptocurrencies & Metals
    • Daily Updated

    Documentation: Link
    Request: https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/eur.json
    Request(Fallback): https://latest.currency-api.pages.dev/v1/currencies/eur.json
    Response:

    {
      "date": "2024-08-24",
      "eur": {
        "usd": 1.12060937,
        "jpy": 161.73109954,
         ...
      }
    }
    
    1. QWeb's Currency API

    • 160+ currencies
    • Updated daily
    • One-to-one and one-to-many lookups
    • Simple REST endpoints with JSON responses
    • API key required for unlimited requests with no base currency restrictions ( $8 p/m ).

    Documentation: Link

    Example request:

    https://apis.qweb.co.uk/currency-exchange-rates/ACCESS_KEY/gbp/cad,eur,usd.json
    

    Example response:

    {
        "from":"GBP",
        "rates":[
            {
                "currency":"CAD",
                "exchange":"1.719870000000"
            },
            {
                "currency":"EUR",
                "exchange":"1.171292099166"
            },
            {
                "currency":"USD",
                "exchange":"1.271310000000"
            }
        ],
        "answer":"success"
    }