This library provides convenient way to use Coinpaprika.com API in Swift.
Coinpaprika delivers full market data to the world of crypto: coin prices, volumes, market caps, ATHs, return rates and more.
import Coinpaprika
Coinpaprika.API.global().perform { (response) in
switch response {
case .success(let stats):
// Successfully downloaded GlobalStats
// stats.marketCapUsd - Market capitalization in USD
// stats.volume24hUsd - Volume from last 24h in USD
// stats.bitcoinDominancePercentage - Percentage share of Bitcoin MarketCap in Total MarketCap
// stats.cryptocurrenciesNumber - Number of cryptocurrencies available on Coinpaprika
case .failure(let error):
// Failure reason as error
}
}import Coinpaprika
Coinpaprika.API.coins().perform { (response) in
switch response {
case .success(let coins):
// Successfully downloaded [Coin]
// coins[0].id - Coin identifier, to use in ticker(id:) method
// coins[0].name - Coin name, for example Bitcoin
// coins[0].symbol - Coin symbol, for example BTC
case .failure(let error):
// Failure reason as error
}
}import Coinpaprika
Coinpaprika.API.tickers(quotes: [.usd, .btc]).perform { (response) in
switch response {
case .success(let tickers):
// Successfully downloaded [Ticker]
// tickers[0] - see the next method for Ticker properties
case .failure(let error):
// Failure reason as error
}
}import Coinpaprika
Coinpaprika.API.ticker(id: "bitcoin-btc", quotes: [.usd, .btc]).perform { (response) in
switch response {
case .success(let ticker):
// Successfully downloaded Ticker
// ticker.id - Coin identifier, to use in ticker(id:) method
// ticker.name - Coin name, for example Bitcoin
// ticker.symbol - Coin symbol, for example BTC
// ticker.rank - Position in Coinpaprika ranking (by MarketCap)
// ticker.circulatingSupply - Circulating Supply
// ticker.totalSupply - Total Supply
// ticker.maxSupply - Maximum Supply
// ticker.betaValue - Beta
// ticker.lastUpdated - Last updated date
//
// Each Ticker could contain several Ticker.Quote (according to provided quotes parameter). To access to quote for given currency, use subscripting like:
// - ticker[.usd] - Ticker.Quote in USD
// - ticker[.btc] - Ticker.Quote in BTC
// etc...
//
// So how to get this cryptocurrency price in USD and BTC?
// - ticker[.usd].price - Coin price in USD
// - ticker[.btc].price - Coin price in BTC
//
// Ticker.Quote contains following properties:
// let currency: QuoteCurrency = .usd
// - ticker[currency].price - Price
// - ticker[currency].volume24h - Volume from last 24h
// - ticker[currency].volume24hChange24h - Volume change in last 24h
// - ticker[currency].marketCap - Market capitalization
// - ticker[currency].marketCapChange24h - Market capitalization in last 24h
// - ticker[currency].percentChange1h - Percentage price change in last 1 hour
// - ticker[currency].percentChange12h - Percentage price change in last 12 hour
// - ticker[currency].percentChange24h - Percentage price change in last 24 hour
// - ticker[currency].percentChange7d - Percentage price change in last 7 days
// - ticker[currency].percentChange30d - Percentage price change in last 30 days
// - ticker[currency].percentChange1y - Percentage price change in last 1 year
// - ticker[currency].athPrice - ATH price
// - ticker[currency].athDate - ATH date
// - ticker[currency].percentFromPriceAth - Percentage price change from ATH
// - ticker[currency].volumeMarketCapRate - Volume/MarketCap rate
case .failure(let error):
// Failure reason as error
}
}import Coinpaprika
Coinpaprika.API.search(query: "bitcoin", categories: [.currencies, .exchanges, .icos, .people, .tags], limit: 20).perform { (response) in
switch response {
case .success(let searchResults):
// Successfully downloaded SearchResults
// searchResults.currencies - list of matching coins as [Search.Coin]
// searchResults.icos - list of matching ICOs as [Search.Ico]
// searchResults.exchanges - list of matching exchanges as [Search.Exchange]
// searchResults.people - list of matching people as [Search.Person]
// searchResults.tags - list of matching tags as [Search.Tag]
case .failure(let error):
// Failure reason as error
}
}To use paid Coinpaprika API plans, set the API key and the api-pro base URL once at app launch:
import Coinpaprika
Configuration.apiKey = "your-api-key"
Configuration.baseUrl = URL(string: "https://api-pro.coinpaprika.com/v1/")!Every static Coinpaprika.API.* call then sends the bare key on the Authorization header. Set Configuration.apiKey = nil to go back to free-tier requests.
Free tier:
| Path | Swift method |
|---|---|
/global |
global() |
/coins |
coins(additionalFields:) |
/coins/{id} |
coin(id:) |
/coins/{id}/twitter |
coinTweets(id:) |
/coins/{id}/events |
coinEvents(id:) |
/coins/{id}/exchanges |
coinExchanges(id:) |
/coins/{id}/markets |
coinMarkets(id:quotes:) |
/coins/{id}/ohlcv/latest |
coinLatestOhlcv(id:quote:) |
/coins/{id}/ohlcv/today |
coinTodayOhlcv(id:quote:) |
/coins/{id}/ohlcv/historical |
coinHistoricalOhlcv(id:start:end:limit:quote:) |
/people/{id} |
person(id:) |
/tags, /tags/{id} |
tags(additionalFields:), tag(id:additionalFields:) |
/tickers, /tickers/{id} |
tickers(quotes:page:), ticker(id:quotes:) |
/tickers/{id}/historical |
tickerHistory(id:start:end:limit:quote:interval:) |
/exchanges, /exchanges/{id}, /exchanges/{id}/markets |
exchanges(quotes:), exchange(id:quotes:), exchangeMarkets(id:quotes:) |
/contracts |
contractPlatforms() |
/contracts/{platform} |
contracts(platformId:) |
/contracts/{platform}/{address} |
tickerByContract(platformId:address:quotes:) |
/contracts/{platform}/{address}/historical |
tickerHistoryByContract(platformId:address:start:end:limit:quote:interval:) |
/search |
search(query:categories:modifier:limit:) |
/price-converter |
priceConvert(baseCurrencyId:quoteCurrencyId:amount:) |
Paid tier (require Configuration.apiKey):
| Path | Swift method | Plan |
|---|---|---|
/key/info |
keyInfo() |
Starter+ |
/coins/mappings |
coinMappings(by:) |
Business+ |
/changelog/ids |
changelogIds(page:) |
Starter+ |
Other endpoints could be found in CoinpaprikaAPI reference.
CoinpaprikaAPI is available through SPM. To install it, simply add the following dependency (for example in Xcode 11 built-in manager):
https://github.com/coinpaprika/coinpaprika-api-swift-client
CoinpaprikaAPI is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'CoinpaprikaAPI'Run pod install to integrate CoinpaprikaAPI with your workspace.
CoinpaprikaAPI is available through Carthage. To install it, simply add the following line to your Carthage file:
github "coinpaprika/coinpaprika-api-swift-client"
Run carthage update to build the framework and drag the built CoinpaprikaAPI.framework into your Xcode project.
CoinpaprikaAPI is available under the MIT license. See the LICENSE file for more info.