There is a lot of cryptocurrency data (in the form of APIs) out there. Possibly even more than those for conventional financial markets (and those have been around for a while). This is by virtue of the fact that, even though crypto has been around for way less time, its trading is a lot more decentralised, compared to traditional financial instruments. While you may have many APIs for traditional brokerage firms, their data feeds usually come from the same place – one of the major stock exchanges like NYSE or NASDAQ. In the crypto world, on the other hand, there are many exchanges, some centralized, some decentralised, where you can trade thousands of different cryptocurrencies and tokens and usually, each of them has their own API.

While all this sounds great, it is not without its fair share of problems. If you are monitoring the cryptocurrency space for a while, maybe you are aware of several instances, where companies behind those APIs have been subject to criticism and doubt. One such example is when CoinMarketCap (possibly the largest data aggregator site) decided to remove some Korean exchanges (including Bithumb, the second largest exchange by trading volume at the time) form its weighted price calculation. This caused a significant drop in the overall market capitalisation listed on the site and had a huge impact on the quoted price of Ripple. The fact that they announced it only post-factum with no prior notice, also did not help. Another issue, also occurred earlier this year, when allegations surfaced that several of the largest cryptocurrency exchanges were reporting fake trading volumes, artificially boosting their ranks as “top” exchanges (the major one in question was OKEx, however some sources claim that pretty much all of them have done it in one point or another).

Not using market data APIs, however, is also not an option. There are many end users and application developers who create their own tools, such as portfolio monitoring, statistics aggregation and even trading bots which are custom made for their needs. This is even more valid for the cryptocurrency space, as the out-of-the-box tools have not yet reached the maturity levels of the ones available on the traditional financial markets. With just a few lines of code, you can connect to a cryptocurrency API (for some of the major exchanges for example), get relevant information for a trading pair (like BTC/USD) and even execute your own trades.

In this article, we will focus on providing an overview of the different kinds of APIs available on the market. We will try our best to:

  • Give a recommendation on the most useful and reliable ones.
  • Show the difference between summary and exchange APIs
  • Show what is the best API for different use cases.
  • Compare the core features of various APIs

We will even develop a simple piece of code which connects to a cryptocurrency exchange and collects data on a currency pair of our choice. What is more, we will deploy this code to run on Google Sheets, which should be a familiar interface for most people. Last but not least, our code will be able to run 24/7, since it will not be deployed on our own computer but on Google servers. Let’s get on with it.

Aggregator APIs are the first kind which we will explore. Generally, those APIs do not provide real-time information, but data with several minutes of delay. Also, the data available there is normally not specific to a market but is rather aggregated across several sources. Those APIs are useful for “big picture” data and for comparison purposes between different sources. Data from those sources should not be used for execution of trades (and the APIs themselves normally do not allow to execute trades via them). This is because the buy/sell margins are usually quite narrow and even a few per cent difference in the numbers can lead to inefficient trades.

BitcoinAverage.com

Site URL: https://bitcoinaverage.com/

API Documentation: https://apiv2.bitcoinaverage.com/

Where to get support: team@bitcoinaverage.com

Twitter: https://twitter.com/bitcoinaverage

Reddit: https://www.reddit.com/user/bitcoinaverage/

Free Plan: yes

Rate Limits with Free Plan: 5000 requests per month

The Good

BitcoinAverage supports just a few trading pairs, but their main selling point according to the site, is that they calculate a very precise weighted index for those exchange pairs. Subsequently they “translate” them into pretty much any FIAT currency which you would like. One thing which is a definite plus here is that they have libraries for Python and NodeJS which should significantly simplify integration. Another thing which seems to be aimed at developers is their easy to integrate site widgets. The API is quite decent, they have all the key information (current and historical) which you might need also their paid plans are quite competitively priced (compared to most other sites).

The Bad

Two things which leave a bad impression are the low number of currencies and currency pairs which it supports (  BTCUSD, BTCMKD, ETHAUD, BTCUSD, ETHEUR, LTCUSD, XMRBTC, ETHXRP, LTCETH, OMGUSD, REPBTC, EOSBTC) and the very low limits for the free plan (5000 calls per month).

Great For

The site seems to be mainly aimed at app developers and does a good job catering to them. It is still important to point out that any meaningful use of the API will have to go through the paid plan.

Who It’s Not Good For

It does not make a lot of sense to use them if you are a trader or if you want to build a custom tool for your personal use.

BraveNewCoin

Site URL: https://bravenewcoin.com/

API Documentation: https://bravenewcoin.com/developers

Where to get support: https://bravenewcoin.com/contact#technical-support

Telegram: https://t.me/bravenewcoin

Twitter: https://twitter.com/bravenewcoin

Reddit: https://www.reddit.com/r/BraveNewCoin/

Facebook: https://www.facebook.com/bravenewcoin

Free plan: yes

Rate Limits with Free Plan: 300 requests per month

The Good

The pricing structure can be classified both as good and as bad. After you burn through your free quota (which is very low), you pay  $0.0005 per extra request. If you have an application, you don’t want it to just top running because you have reached a limit, but also you would not be happy to receive a huge bill at the end of the month either. In the end, it is leaning more towards the good side.

The Bad

It might be an issue on our side, but every time we open BraveNewCoin site it takes a second or two to load. It is not a huge problem per se, but something which is mildly annoying. The API also leaves a lot to be required. The documentation is somewhat scattered and hard to follow. The free tier query limits are absurdly low (300 requests per month).

Great For

Hard to say. It is not different from what most other APIs do and it does not stand out in any way.

Who It’s Not Good For

To be honest it is kind of OK for most use cases, but for every single use case we can think of – there seems to be a better API that can be used.

CoinAPI.io

Site URL: http://coinapi.io/

API Documentation: https://docs.coinapi.io/

API Status page: https://status.coinapi.io/

Where to get support: https://support.coinapi.io/hc/en-us/requests/new

Free plan: yes

Rate Limits with Free Plan: 100 requests per day

The Good

A very strong point is their software development kit (SDK), which can be found on GitHub – https://github.com/coinapi/coinapi-sdk. It covers all the major programming languages and from the looks of it – is quite easy to use (we checked out only the Python and JavaScript ones and both look very intuitive). They also have a WebSocket API for live data, but the really interesting part is their Financial Information eXchange (FIX) API, which is an electronic communications protocol for international real-time exchange of information related to the securities transactions and markets. They are also the only API which offers hsitorical order book data. Quant traders will probably be interested in that last two points. The RESTful API is quite standard, although it is very well structured and has an abundance of information. Overall a very interesting option, if you do not mind paying the price.

The Bad

CoinAPI would definitely not be a top choice for a free API, as the daily limits are absurdly low – just 100 requests per day. You probably cannot even get a good feeling of the service provided with such low limits. Their pricing structure is quite similar to that of CoinMarketCap (which is covered further down), however, this is not in the “plus” category either.

Great For

If you are looking for an easy integration through existing libraries and you don’t mind paying for it. Also good for people who are familiar with the FIX specification and would possibly have tools which already operate on top of it.

Who It’s Not Good For

If you are trying to do anything for free.

Coinigy

Site URL: https://www.coinigy.com/

API Documentation: https://coinigy.docs.apiary.io/#

Where to get support: https://support.coinigy.com/hc/en-us/requests/new

Telegram: https://t.me/coinigy

Twitter: https://twitter.com/coinigy

Facebook: https://facebook.com/coinigy

Free plan: trial only

Rate Limits with Free Plan: 2 requests per second

The Good

The first thing to note about Coinigy that technically it is not a market data aggregator site like the other ones listed here. It is trading aggregator site, which allows you to execute trades on various exchanges through their platform. The pricing, for what is supposed to be the personal access, is quite affordable (18.66 USD per month).

The Bad

The API which they offer is pretty basic – bids, asks, recently executed orders, executing orders and cancelling them. Note that we did not mention anything about historical OHLCV data – this is because this data is only available through their store for direct download, and the price for it is per month, per market. Data itself is only available as tab-delimited files. We are still trying to figure out why this is not part of the API and why is it so complicated. Also, the prices are quite significant – for a minute OHLCV data on a premium (high market capitalisation) market you would pay 27 USD for one month worth of data, for one currency. The second, and just as important, thing to note that there is no free plan. Technically speaking there is a 30 day trial period, but nothing that you could use long-term for free. And let’s be honest here, if you are developing anything more sophisticated than a basic portfolio tracker, through an API, it will likely take more than 30 days to develop (if it is for commercial use).

Great For

It is catering to traders and would say it is only good for them.

Who It’s Not Good For

Anyone else.

CoinLib

Site URL: https://coinlib.io/

API Documentation: https://coinlib.io/apidocs

Where to get support: info@coinlib.io

Twitter: https://twitter.com/coinlibio

Reddit: https://www.reddit.com/user/coinlib/

Free plan: yes

Rate Limits with Free Plan: 120 requests per hour

The Good

Unfortunately, the only good thing to say about the CoinLib API is that it is free.

The Bad

When looking at the CoinLib API it reminds us a lot of the CoinMarketCap v1 API – in the sense that it is very, very basic. You cannot get anything but the current prices some 24-hour statistics and the 1, 7 and 30-day change in price. It is nice that you can get the breakdown by exchange (on how the aggregate price was formed), but that is about it. The API is entirely free, but that being said it will require a registration (not quite sure why) and the limits are on the low side. This combined with the fact that the endpoints use pagination (summary one is 100 results per page, detailed one is 10 coins per call) and you can run out of limits quite fast if you are using this API for anything different than infrequent portfolio price updates.

Great For

Limited personal use for portfolio tracking.

Who It’s Not Good For

Anything else.

CoinMarketCap

Site URL: https://coinmarketcap.com/

API Documentation:

Personal: https://coinmarketcap.com/api/

Professional: https://pro.coinmarketcap.com/api/v1#section/Introduction

Where to get support: support is available only for the professional API

Telegram: https://t.me/coinmarketcapinfo

Twitter: https://twitter.com/CoinMarketCap

Reddit: https://www.reddit.com/r/CoinMarketCap/

Facebook: https://www.facebook.com/CoinMarketCap

Free plan: yes

Rate Limits with Free Plan: 10 000 requests per month

The Good

The major advantage of CoinMarketCap is that they were first movers in the space and that they support a large number of coins. While the latter is still valid, the former is no longer an advantage in any way, since there are a lot of other APIs out there. Another plus is that they are one of the few sites which offer an SLA for their paid services.

The Bad

Even though the controversy mentioned in the intro, CoinMarketCap remains one of the most famous and used crypto aggregator sites. That being said their (free) API is not that great. Earlier this year they migrated from v1 to v2 of the API, without introducing any significant new functionality. Actually, v2 was a bit harder to use as it had a limit on the number of cryptocurrencies which could be returned in a single call. Another huge problem was that they never had historical data in their API, which is really important for any kind of data analytics unless you are only interested in the current state of your portfolio. All that being said it has been always quite easy to crawl their site for historical data, even with formulas from google sheets. For example:

=IMPORTHTML(“https://coinmarketcap.com/currencies/bitcoin/historical-data/?start=20171024&end=20181024”,”table”,1)

… would get you Bitcoins historical data (daily high, low, open, close, market cap) for the period 2017-10-24 to 2018-10-24, with those parameters being easily changeable. As it turns out, there was probably a reason for limitations and lack of historical data, since all users are asked to migrate to their professional API by 4th of December 2018. The professional API still has a free tier, but all the good stuff is behind a huge paywall with the most basic historical data (1 month) plan costing 300 USD/month and the actually useful one (1 year) costing 700 USD/month.

Great For

Limited personal use for portfolio tracking. It is also good for developers if you do not mind the cost.

Who It’s Not Good For

Not rich people.

CryptoCompare

Site URL: https://www.cryptocompare.com/

API Documentation: https://min-api.cryptocompare.com/

Where to get support: https://cryptocompare.zendesk.com/hc/en-gb/requests/new

Twitter: https://twitter.com/CryptoCompare

Facebook: https://www.facebook.com/cryptocompare

Free plan: yes

Rate Limits with Free Plan: 8 000 requests per hour

The Good

Cryptocompare is another quite famous site for market data. Although they have been around for a while, it has always been in the shadow of CoinMarketCap – not sure why. Their API, on the other hand, is a different deal. Overall great documentation with a lot of examples, many endpoints and very generous limits. Some interesting things to point out:

The lowest limit is on their News API endpoint, which still sits at 5 requests per second – probably way more than you are going to need for this kind of endpoint. Most of their other endpoints are sitting at 50 requests per second limit.

  • They have a variety of historical API endpoints, with different aggregation timeframes.
  • They do have a WebSocket connection (apart from the standard RESTful API) in case you really need to fetch live data.
  • Their News API is also quite interesting, especially for people who like to trade based on the news sentiment.
  • They support a huge number of coins.

Last but not least their API is free.

The Bad

There is a small catch – the API is free as long as you do not use it for commercial purposes. In case you start making money with it – you will be expected to pay for the data.

Great For

Great all-around API.

Who It’s Not Good For

Apps with many requests and a commerical use.

Nomics.com

Site URL: https://nomics.com/

API Documentation:  http://docs.nomics.com/

Where to get support: https://p.nomics.com/contact

Telegram: https://t.me/cryptocurrencyapi

Twitter: https://twitter.com/nomicsfinance

Facebook: https://www.facebook.com/nomicsfinance/

Free plan: yes

Rate Limits with Free Plan: unlimited

The Good

The Nomics API has it all – from the most diverse selection of information – pretty much anything you can think of (order books, trade data, aggregated metadata for any time period and any aggregation level), to great documentation and unlimited requests. One great thing about Nomics.com, right off the bat, is that you can pass a “format=csv” to all their API calls, which makes the return format of the data, not JSON, but CSV. This means that even if you can’t code to save your life, getting information is as easy as adding a google sheets formula like:

=importdata(“https://api.nomics.com/v1/prices?key=2018-09-demo-dont-deploy-b69315e440beb145&format=csv”)

… the one thing we cannot figure out is why have they obscured it at the end of their FAQ since this is a major selling point for anyone who would want to create their own personalised tool for portfolio tracking. Their second major selling point is that they claim to be the only product that provides gapless (and historical) normalized raw trade/tick data (although this is part of their paid subscription tier). While it does sound impressive and they claim that the major focus of this is machine learning and quantitative traders, it is important to point out that some data loss (<5%) would not have a huge impact on a machine learning model, to begin with and that if someone is executing trades based on such models, it is much more likely that he or she are using the API of the exchange on which the model is running. All that beings said – there is definitely nothing wrong with having all the data – quite the opposite, the more, the better. One questionable thing is that all endpoints require a key/registration, but this is not that big of an issue since it is fast and easy to get. The RESTful API itself is definitely one of the better ones, with plenty of historical data, aggregations and endpoints focused on charting. Having no rate limits (for both the free and the paid plans) is also a big selling point. The free tier which they provide should be more than enough for most of your needs.

The Bad

One of the few APIs where we really have no concerns about the service offered.

Great For

Pretty much everything and everyone. It especially caters to traders and analysts (hedge funds, machine learning models’ creators).

Who It’s Not Good For

Some very niche scenarios, for example, you really need a FIX API or you really need an integration library.

CoinMetrics.io

Site URL: https://coinmetrics.io/

API Documentation: https://coinmetrics.io/api/

Where to get support: https://twitter.com/coinmetrics

Twitter:  https://twitter.com/coinmetrics

Free plan: yes

Rate Limits with Free Plan: no information available

The Good

CoinMetrics is different from all other sites in this category for several reasons. For one – it focuses almost exclusively on on-chain data (while none of the other aggregator sites reviewed here offers such service). They do have also price data, however, they are just using CoinMarketCap for this. Second, it is one of the few sites which offers the possibility for the data to be directly downloaded in CSV. So essentially, if you do not feel like coding API calls and parsing JSON files, you can just open a google sheet and ether the following in the formula bar:

=IMPORTDATA(“https://coinmetrics.io/data/eth.csv”)

… and this will fetch you all the data which they have on Ethereum in a nice and tidy table. There is no mention of limits, so we would assume that there just aren’t any, neither are there any plans – everything is free. Then again, all the data is on a daily aggregation level, so it does not make a lot of sense to pull anything more than once per day. At this point, you probably are thinking – well, why would I need this data in the first place? Actually, there are several use cases for this (like calculating the Velocity of different coins or the network value to transaction ratio, the latter being the focus of this site) and getting this data through a node directly is not that easy.

The Bad

Taking into account that what they offer is very niche and actually not really a lot to go on, the API documentation is still practically non-existent. Also, it would have been nice if data was available more frequently than once per day.

Great For

Crypto economists, trying to understand the behaviour of coins in the context of their on-chain transactions.

Who It’s Not Good For

Not quite sure why this is an API (instead of just raw data files) in the first place, but maybe there are some niche cases where a continuous integration would be needed. It is hard to imagine using this API as standalone for any task. It is better suited to serve as supporting data in an analysis.  

Simplicify.io

Site URL: https://simplicify.io/

API Documentation: not available

Where to get support: contact@simplicify.io

Twitter: https://twitter.com/Simplicify

Free plan: no

The Good

Cannot really say.

The Bad

Simplicity seems to be aimed at traders mainly since they are integrated with just 6 exchanges and offer trading via their API. That being said it is very hard to get a good feeling about what exactly they offer, as the information on their site is more than scarce. All that you can get (as information) is:

  • 6 exchanges
  • 13 691 MM data points
  • 13 670 MM order book points
  • 20 986 OHLCV points

… and this is pretty much it. If you would like anything more, you would have to contact them. To be honest we are not huge fans of this approach, first because it suggests that there are no free options (might be wrong though) and second because it is quite normal to first browse before you go shopping. Anyway, we tried to reverse engineer the 13 691 data points, and this would translate to roughly 37 trade pairs if the data available was for two years, and the data points were at each second. Seems a bit on the high side, but then again, this is only a best guess estimate.

Great For

Cannot really say.

Who It’s Not Good For

Cannot really say.

Exchange APIs are specific to a platform. Normally each large cryptocurrency exchange has its own API in order to allow traders to execute trades automatically or withdraw funds from their accounts. You would generally use such API if you have funds deposited on the exchange or you need to know the platform-specific prices and data (for executing arbitrage trades, for example). It is very unlikely that any exchange API (even more so those of large exchanges like the ones on the list) would not have the market data which you need. As a result, in this section, we will focus more on the overall utility of the API rather than the data itself.

Binance

Site URL: https://www.binance.com/en

API Documentation: https://github.com/binance-exchange/binance-official-api-docs

API Status page: https://t.me/binance_api_announcements

Where to get support: https://t.me/binance_api_english

Telegram: https://t.me/BinanceExchange

Twitter: https://twitter.com/binance

Reddit: https://www.reddit.com/r/binanceexchange

Facebook: https://www.facebook.com/binanceexchange

Rate Limits: 100,000 requests per day

General Comments About The Exchange

Binance is (and has been for a while) one of the largest exchanges around, both in terms of the number of markets and trading volume. Its founder Changpeng Zhao is known for building some of the fastest high-frequency trading systems for traditional brokers. It is also a plus that Binance has the important stuff like, take profit and stop loss limit orders, which some other APIs lack. They also made the news some time ago, with their machine learning risk management system, blocking some scammers from withdrawing money from the exchange. A big plus is that you can execute test orders (testing with real money is never fun). All that being said, the limits on Binance are a bit confusing. Sometimes you can get a temporary ban (you get those for executing too much trades or for having bad “weight” – a ratio between executed and total orders) for no apparent reason.

The Good

The exchange/API have an amazing uptime and the API is quite intuitive and easy to work with. It also has all the data which you might need and in all the formats in which you need it.  They have OHLC at 1-minute intervals (which is better than most other exchanges) and they cover a large number of coins.

The Bad

One minor annoyance is that you cannot get more than 1000 candlestick data points with one request. Also if you are using the API for market data, getting the information in CSV would have been nice.

Great For

People with large portfolios, having multiple coins.

Who It’s Not Good For

Applications which need to make a lot of requests to the API.

Bitfinex

Site URL: https://www.bitfinex.com/

API Documentation: http://docs.bitfinex.com/

API Status page: https://bitfinex.statuspage.io/

Where to get support: https://www.bitfinex.com/support

Telegram: https://t.me/bfxtelegram

Twitter: https://twitter.com/bitfinex

Reddit: https://www.reddit.com/r/bitfinex/

Facebook: https://www.facebook.com/bitfinex

Rate Limits: 10 requests per minute

General Comments About The Exchange

Bitfinex is another exchange which has been around for quite a while. It was also one of the first exchanges (together with Poloniex) to offer margin trading, and more importantly margin lending both available via the API. Now, there has been a lot of controversy around Bitfinex and their connections with Tether (the stable coin), with allegations of Tether being created without backing in order to execute trades (buy Bitcoin) on Bitfinex. Some people believe that this is what was behind the huge price hike of the crypto market in late 2017. If this is true or not (and what are the implications) only time will tell, however, it is best to act on the side of caution for now.

The Good

Regarding the API itself, we have only good things to say – easy to use, good documentation, has all the endpoints with you might need. Version 1 of their API has no candlestick starts, but this is fixed in version 2 (currently in beta). It is one of the few exchanges where you can get funding rates information, which can be used for additional variables in prediction models.

The Bad

The rate limits are on the low side, but they should suffice for market data.

Great For

Quant traders/analysts, looking to have more information for price modelling.

Who It’s Not Good For

If you are really concerned about Tether and by extension, the validity of the reported data – best not to use them. Applications which need to make a lot of requests to the API.

Bitmex

Site URL: https://www.bitmex.com/

API Documentation:  https://www.bitmex.com/app/apiOverview

API Status page: not available

Where to get support: https://bitmex.freshdesk.com/support/home

Twitter: https://twitter.com/BitMEXdotcom

Reddit: https://www.reddit.com/r/BitMEX/

Facebook: https://webchat.freenode.net/?channels=bitmex

Rate Limits: 300 requests per 5 minutes

General Comments About The Exchange

Bitmex is possibly the most sophisticated exchange (instrument-wise) out there. It is most famous for offering futures contracts on Bitcoin and several other coins as well as swaps for Bitcoin and Ether. The main differences, from a trader’s point of view, is that on one side you can take a rebate for market making (negative fee) and that you can have huge leverage up to 100x (while for example on Bitfinex you can obtain a maximum leverage of 3.3x).

The Good

The API itself is quite good and the limits are very reasonable at around 1 request/second. Also, it is quite complete – everything which you need form spot data to candlestick data to overall exchange statistics. It is also one of the few exchanges where you can fetch data in CSV format.

It is great that they have a fully functioning test version where you can extensively test everything before switching to the live one (although this is more relevant to trading than to market data). Another thing is that this is one of the few APIs where you can get various indices related to the price of the trading pairs.

The Bad

The very low number of trading products available compared to other exchanges.

Great For

Quant traders/analysts and hedge fund managers, who have a narrow focus on BTC (and a few other currencies) and want to take into account all possible price information.

Who It’s Not Good For

People with wide portfolios.

Bittrex

Site URL: https://bittrex.com/

API Documentation: https://support.bittrex.com/hc/en-us/articles/115003723911

API Status page: https://bittrex.com/Status

Where to get support: https://support.bittrex.com/hc/en-us

Twitter: https://twitter.com/bittrexintl

Reddit: https://www.reddit.com/r/Bittrex/

Facebook: https://www.facebook.com/BittrexIntl

Rate Limits: no information available

General Comments About The Exchange

Bittrex was one of the first (if not the first) exchange which offered a wide selection of pairs to trade with. Approximately year and a half ago, they had around 200 trading pairs, while other exchanges had 10-15 at maximum. This brought its own fair share of problems, where multiple coins have been delisted from the exchange since (new ones added on their place of course) and the exchange management has been questioned about their due diligence when adding a new coin on the exchange.

The Good

Offers a wide selection of coins.

The Bad

The API is quite basic – you can get spot rates and order book data, but there is no candlestick data. Also, it is one of the few exchanges, where you cannot get historical trades information, which is generally critical if you are building a machine learning model for trading.

Great For

People with wide portfolios, having multiple coins.

Who It’s Not Good For

Quant traders/analysts and hedge fund managers, who would need trade level information for predictive model building.

Coinbase Pro

Site URL: https://pro.coinbase.com/

API Documentation: https://docs.pro.coinbase.com/

API Status page: https://status.pro.coinbase.com/

Where to get support: https://support.pro.coinbase.com/

Telegram: https://t.me/coinbase_chat

Twitter: https://twitter.com/CoinbasePro

Reddit: https://www.reddit.com/r/CoinBase/

Facebook: https://www.facebook.com/coinbase/

Rate Limits: 5 requests per second

General Comments About The Exchange

Coinbase Pro is a version of the site aimed at professional traders. It is worth noting that it is opened only to customers form certain jurisdictions, so before choosing it, you might want to check out if your country is included: https://support.pro.coinbase.com/customer/en/portal/articles/2945308-locations-and-trading-pairs. We had some issues registering, as even though we are from a supported jurisdiction, there were issues with processing the utility bill for address verification.

The Good

It is worth noting that Coinbase Pro is one of the few exchanges offering a FIX (Financial Information eXchange protocol) API. It also has one of the best API documentation around and this is always important. Not only this but also one of the most exhaustive APIs, having all the endpoints with you might need. If all this wasn’t enough, they also have libraries for 9 different languages (3 official and 6 unofficial), rounding off one of the best-structured APIs which I have seen. Their rate limits are also great.

The Bad

The low number of trading pairs might be a problem for people with wider portfolios.

Great For

Overall great API if you don’t mind the low number of trading pairs.

Who It’s Not Good For

People who want exposure to a wider selection of coins, or people from non-supported jurisdictions.

Gemini

Site URL: https://gemini.com/

API Documentation: https://docs.gemini.com/rest-api/

API Status page: https://status.gemini.com/

Where to get support: https://gemini24.zendesk.com/hc/en-us/requests/new

Twitter: https://twitter.com/gemini

Reddit: https://www.reddit.com/r/Gemini/

Facebook: https://www.facebook.com/GeminiTrust/

Rate Limits: 2 requests per second

General Comments About The Exchange

Gemini was founded in 2014, by Cameron and Tyler Winklevoss. As they are both public figures and longtime cryptocurrency proponents, it is unlikely that the exchange will be going away anytime soon.

The Good

Gemini is also quite flexible with the limits, offering some leeway even if you exceed your limits for a short amount of time, which is definitely nice. They also have a FIX API and batch operations witch a lot of other exchanges lack. The  API is overall great – good documentation, exhaustive endpoints and examples. The only thing which stands between the current state of the API and it being the best out there, is that it would be great if it had libraries for easier integration. Another good thing is that Gemini has a sandbox site: https://exchange.sandbox.gemini.com/ which enables you to test your scripts with using test funds and simulated exchange activity. More exchanges should offer this.

The Bad

Support for only 15 trading pairs, the lowest form all exchanges on this list. Also, they lack candlestick data endpoint, which can be a problem for some users.

Great For

Overall great API if you don’t mind the low number of trading pairs.

Who It’s Not Good For

People who want exposure to a wider selection of coins.

IDEX

Site URL: https://idex.market/eth/aura

API Documentation: https://github.com/AuroraDAO/idex-api-docs

API Status page: not available

Where to get support: https://idex.market/contact

Twitter: https://twitter.com/aurora_dao

Reddit: https://www.reddit.com/r/auroradao/

Discord: https://discordapp.com/invite/UHAGGBz

Rate Limits: no information available

General Comments About The Exchange

IDEX is probably the biggest and best-known decentralized exchange for Ethereum based tokens. Discussing the pros and cons of decentralized exchanges is not within the scope of this article, but definitely make sure you understand the differences before you pick one or the other. One thing to note here is that in case you have experience integrating with standard exchanges, here you will have an additional level of complexity associated with providing private key signatures for the transactions which have to be compliant with the web3 standard for Ethereum. The documentation does a fairly good job explaining what you need to do, but it still can be daunting the first time.

The Good

They support the largest number of markets for all exchanges on this list, however, it is worth pointing out that, since all of them are Ethereum based tokens, a lot of them are a very low cap.

The Bad

The API itself is fairly basic, it has most of the endpoints which you might need, but nothing fancy. One thing which pops out though is the lack of candlestick data endpoint.

Great For

People who value decentralization above all else.

Who It’s Not Good For

People who want information for other things than Ethereum based tokens.

Kraken API

Site URL: https://www.kraken.com/

API Documentation: https://www.kraken.com/en-us/help/api

API Status page: https://status.kraken.com/

Where to get support: https://support.kraken.com/hc/en-us

Twitter: https://twitter.com/krakenfx

Reddit: https://www.reddit.com/r/Kraken/

Facebook: https://www.facebook.com/KrakenFX/

Rate Limits: 1 request per 3 seconds

General Comments About The Exchange

Kraken has been around for a while. However, they do not have the best reputation for stability and accessibility, as the exchange usually suffers during cryptocurrency rallies. While this can be said for most exchanges, it seems to affect Kraken more than others.

The Good

They have integration libraries in 9 different languages (10 if we count Python 2 and Python 3 as separate). It is also one of the few exchanges where you can fetch data in CSV format.

The Bad

The rate limits are a bit on the low side. They are dependent on what tier user you are, with the highest tier getting one request per second (actually a bit less as some requests count as two). The documentation also is a bit strange, rather than providing examples of return and query values in the actual format itself, it just provides them as a list. To me at least this is less convenient. Apart from this, the API is pretty standard – should have most of the things which you might need, however, there is no historical trade data.

Great For

Easier than average integration.

Who It’s Not Good For

Quant traders/analysts and hedge fund managers, who would need trade level information for predictive model building.

OKEx

Site URL: https://www.okex.com/

API Documentation: https://www.okex.com/docs/en/

API Status page: not available

Where to get support: support@okex.com

Telegram: https://t.me/okexofficial_en

Twitter: https://twitter.com/OKEx

Reddit: https://www.reddit.com/r/OKEx/

Facebook: https://www.facebook.com/OKExOfficial/?ref=br_tf

Rate Limits: 6 requests per second

General Comments About The Exchange

As mentioned earlier in this article, OKEx was in the news earlier this year, because of allegations for reporting fake trading volumes. Another thing is that OKEx data centres are located in Hong Kong, so make sure your ISP can communicate smoothly there.

The Good

OKEx’s API itself is rather good, having all the standard endpoints. The rate limits are also fairly decent at between 6 and 10 requests per second. The API also has margin and futures information and offers one of the widest selections of trading pairs around. It is also one of the few exchanges where you can fetch data in CSV format.

The Bad

Cannot really classify anything as bad. If we had to nitpick, it would be nice to have a test environment.

Great For

Pretty much everyone.

Who It’s Not Good For

If you are concerned with the fake trade volume allegations and by extension the validity of the data.

Poloniex

Site URL: https://poloniex.com/

API Documentation: https://poloniex.com/support/api/

API Status page: not available

Where to get support: https://poloniex.com/support/

Twitter: http://twitter.com/poloniex

Reddit: https://www.reddit.com/r/poloniex/

Rate Limits: no information available

General Comments About The Exchange

Poloniex used to be one of the major (top 3 ) exchanges one or two years ago. Then at the start of 2017, they ran into some severe performance and subsequently liquidity issues and people were unable to withdraw from them for a certain period of time. Since then the site got a facelift (UI was redone), not sure if the performance issues were also addressed. One other thing I like about Poloniex is the s the possibility to create linked accounts, thus compartmentalizing your trading (you could have your funds split across two accounts, which were essentially liked, but you could monitor and trade with them separately).

The Good

The API is pretty well documented and has everything which you need. Also, on the plus side, they have Python and PHP wrappers for easier integration (I would have expected JavaScript instead of the PHP one). It is also one of the few exchanges where you can fetch data in CSV format.

The Bad

The API limits are not part of the API… or even part of the documentation. Some info for this can be found here: https://github.com/dutu/poloLender/issues/11. Also, the lowest interval on the candlestick data is 5 minutes (although this is not that big of an issue).

Great For

Quant traders/analysts, looking to have more information for price modeling.

Who It’s Not Good For

It seems they are progressively getting outclassed by other exchanges so you might need to migrate from them in the not-so-distant future.

… the best API for quantitative traders

The best API for quantitative traders …is the API of the exchange which they are using to trade. If you are not really concerned with the number of coins offered – pick Coinbase Pro due to having a FIX API, great rate limits, 0% maker fee and outstanding documentation. In case you do need to trade a lot of currencies – Binance. If you are looking for more advanced tools such as margin trading, margin funding, swaps and futures and would like to obtain information for price indices and funding rates – go for BitMex.

… the best API for analytics and machine learning

This category has a certain degree of overlap with the above one. Any time when you are creating a trading strategy (or a machine learning / statistical model), you need to take and analyse historical data, develop the model and then test it on out-of-sample data. Normally you would like to build the model using the same source data which you will use for trading (live data). So, the natural course of action is to use historical data from the exchange where you want to trade.

All that being said, Nomics have done a great job of collecting data from various exchanges and pre-processing it (making it gapless) which can significantly simplify your data collection and processing. Anyone who has developed machine learning models knows that it is pretty much “garbage in – garbage out” when it comes to data and data collection and pre-processing is usually 80% of the work for creating a model. We can definitely see Nomics being used in situations where either a more high-level model or analysis is needed (maybe one which does not go to production) or in situations where cross-exchange data is involved (arbitrage models for example).

… the best API for app developers

This category is highly dependent on the type of app being developed, so let’s pick one aggregator and one exchange API.

For the aggregator API, it is a toss-up between BitcoinAverage and Nomics. You really want unlimited API calls (especially if you are planning for the app to call the API directly, without communicating with a backend on your side) and both APIs offer this. BitcoinAverage offers integration libraries and support forum which is always great when you need help. It also is one of the most competitively priced APIs. On the other hand, Nomics offers a lot more data in terms of supported currencies, however, if you cannot make the free tier work, it is a lot more expensive also. They do not offer integration libraries but tries to make up for it with the quality of their documentation.

For the exchange API recommendation, it will need to be based entirely on the quality of documentation and ease of integration. Reason for this is – if a user likes a particular exchange, they will naturally look for an app which offers integration with it, regardless of the shortcomings of the API. This leans towards Coinbase Pro with their great documentation, integration libraries and test environment.   

… the best API for pricing your portfolio

If you want to price your portfolio, its unlikely you would want to build an app for this yourself. It would be a lot easier to either use an existing one or to use a spreadsheet application like Google Sheets (also the people having the ability to write a 20 character formula are a lot more than the ones having the ability to code a full application). As such, any API which offers you the possibility to fetch data via an “IMPORTDATA” formula, is a good enough API to price your portfolio. Those APIs are CoinLib, CryptoCompare, Nomics and CoinMetrics.  If you are willing to jump through a few more hoops – also CoinMarketCap (although in this scenario you will not be calling the API, but rather crawling the page). Out of those, you can pick anyone which best serves your specific data needs.

…. the best free API

The best free API will have to go to Nomics, because… well, nothing beats unlimited requests when it comes to getting something for free. They also have very comprehensive data for the free tier and quite frankly are the site, where the API is the clear focus (while in some other cases it is more of a supplementary feature). If we had to give a “best overall” recommendation, it would likely be them as well, so don’t be surprised if they are also first in other categories.

The only reason why you might want to use another API is if the available data is not covering your needs (you need data from specific exchanges or some more exotic currencies). In this scenario, you might want to look at CryptoCompare or CoinMarketCap, as they are offering a wider selection of coins and exchanges.

… the best API for on-chain data

There is not much competition here, as the best API for on-chain data is also the only API which offers on-chain data on this list – CoinMetrics. That being said, they still do a very good job doing so, covering 73 currencies. The format of the response leaves a lot to be desired, but still, using them beats having to run your own node or querying an existing node multiple times, by miles.

Compared features: rate limits, data update frequency, data availability, quality of documentation

As promised earlier, we will provide a short example of connecting to an API via Google Sheets. We are assuming you are familiar with the product (or with Excel, as there is more than 90% overlap in the functionality). The reason why we are going for Google’s product instead of Excel is that this way, we will be able to schedule our API calls to be executed, even when our computer is not running. We have already touched briefly on fetching data in Google Sheets via formulas:

=importdata(“https://api.nomics.com/v1/prices?key=2018-09-demo-dont-deploy-b69315e440beb145&format=csv”)

In this section, we will show how to achieve this via a direct API call. In order to do this, we will call an API, which does not support a data fetch in CSV (for example Binance) and we will call an endpoint which requires parameters, for example, the market depth (/api/v1/depth) which requires us to specify the trading symbol for the market.

Setting up the spreadsheet:

  • Open your google drive (you need to have a google account for this) at https://drive.google.com/drive/my-drive
  • On the top left corner, click the (+ New) button and select “Google Sheets”. This will create a blank spreadsheet.
  • From the menu on the top select Tools -> Script Editor. This is a Javascript-based scripting tool (similar to Excel’s VBA macros) which lets you manipulate your spreadsheets and all other documents in your Google Drive.

At this point, you should see a Code.gs tab with an empty function named “myFunction()”. Delete it and replace it with the code below (please note that the code below is kept as simple as possible for the purpose of this demonstration, it is not intended to show best coding practices):

function binanceFetch() {

 //Let’s define the core API address

 var url = “https://api.binance.com”;

 //The endpoint we want to fetch

 var path = “/api/v1/depth”;

 //The symbol we want to get

 var symbol = “BTC USDT”;

 //Construct our query

 var query = url+path”?symbol=”+symbol;

 //Send the query to the Binance API

 var httpResp = UrlFetchApp.fetch(query);

 //Convert the response to a Javascript object

 var obj = JSON.parse(httpResp.getContentText());

 //Output the object in the Log so we can examine it

 Logger.log(obj);

}

Then click the Run button on the menu. The script will ask you for some permissions (querying an external service) and after that, it will run. You can examine the output by going to “View -> Logs” from the menu on the top. You can extend the code above in order to do something with the data obtained – create a bot to execute automatic trades (for example). We have left out the recording of the result within the Google spreadsheet on purpose, as Google gives some very stark warnings when trying to record something on a spreadsheet (although, as long as you understand how the code works, it is perfectly safe).

The interesting thing is that, after you have developed the logic which you need, you can click the clock icon on the top menu and this will open the triggers menu. From here you can schedule your code to run every hour or every minute if you’d like – executing even when your computer is shut down (it runs from Google’s servers directly). Please keep in mind that there are some quotes on the maximum execution time (https://developers.google.com/apps-script/guides/services/quotas), but in general they are quite sparse.

There are many great APIs out there, offering different data, functionality and features. Which is the best one depends on your budget, your needs and your familiarity with querying different kinds of data. All that being said, there are several questions which you should ask yourself before picking a crypto data API:

  • Is this the company’s core business? If it is, it’s much more likely for them to react fast to new data sources or data changes and keeping their product up to date.
  • Is there a paid plan? While you might start small, you should always account for the possibility that your project can grow and eventually you will need dedicated support and a reliable partner. Things such as having an SLA should be part of the consideration.  Also, if there is a paid plan it is much more likely that the site has to keep their API updated.
  • Can it scale? Similar to the above point – you might scale and need more support, but you might also scale and need a lot larger bandwidth for the requests. In this scenario, you want to be sure that the API will not bottleneck your growth.
  • Does it have all the data I might need in the future? Even if the API is covering all your current needs, you might need to consider what data you might need a year from now.

If the answer to all of the above is “Yes” you might have just found the best API for your needs.

—————————–

API stands for Application Programming Interface. In a nutshell and API is the language in which one program communicates with another. A very simple example of an API, which probably everyone is using on a daily basis, without realizing it, is an API which provides weather information. When your favourite news site or your phone, provide you with an information for the expected weather in your region – this is not achieved by someone manually updating the information for each region, but rather by an API which knows your location and provides you with relevant information.

DEJA UNA RESPUESTA

Please enter your comment!
Please enter your name here