npm package: @stevenxu/coinmarketcap-api
Description: CoinMarketCap API wrapper for node
Author: Tiaan du Plessis
Latest version: 3.1.1

# coinmarketcap-api

[![Greenkeeper badge](https://badges.greenkeeper.io/tiaanduplessis/coinmarketcap-api.svg)](https://greenkeeper.io/) [![npm package version](https://img.shields.io/npm/v/coinmarketcap-api.svg?style=flat-square)](https://npmjs.org/package/coinmarketcap-api)
[![npm downloads](https://img.shields.io/npm/dm/coinmarketcap-api.svg?style=flat-square)](https://npmjs.org/package/coinmarketcap-api) [![Standard JS linter](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard) [![Codecov](https://codecov.io/gh/tiaanduplessis/coinmarketcap-api/branch/master/graph/badge.svg?style=flat-square)](https://codecov.io/gh/tiaanduplessis/coinmarketcap-api)  [![travis ci build status](https://img.shields.io/travis/tiaanduplessis/coinmarketcap-api.svg?style=flat-square)](https://travis-ci.org/tiaanduplessis/coinmarketcap-api)  [![project license](https://img.shields.io/npm/l/coinmarketcap-api.svg?style=flat-square)](https://github.com/tiaanduplessis/coinmarketcap-api/blob/master/LICENSE) [![make a pull request](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)  

> CoinMarketCap API wrapper for node

This wrapper is based on the free tier of [the CoinMarketCap Professional API](https://pro.coinmarketcap.com/api/v1#section/Introduction).
You can get your API key [here](https://pro.coinmarketcap.com/pricing).

## Table of Contents

-   [Install](#install)
-   [Usage](#usage)
-   [API](#api)
-   [Contribute](#contribute)
-   [License](#license)

## Install

```sh
$ npm install coinmarketcap-api
# OR
$ yarn add coinmarketcap-api
```

## Usage

```js
const CoinMarketCap = require('coinmarketcap-api')

const apiKey = 'api key'
const proxy = 'http://127.0.0.1:1087' // 代理配置
const client = new CoinMarketCap(apiKey, { proxy: proxy })

client.getTickers().then(console.log).catch(console.error)
client.getGlobal().then(console.log).catch(console.error)
```

Check out the [CoinMarketCap Pro API documentation](https://pro.coinmarketcap.com/api/v1#section/Introduction) for more information!

## API

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

#### Table of Contents

-   [constructor](#constructor)
    -   [Parameters](#parameters)
-   [getIdMap](#getidmap)
    -   [Parameters](#parameters-1)
    -   [Examples](#examples)
-   [getMetadata](#getmetadata)
    -   [Parameters](#parameters-2)
    -   [Examples](#examples-1)
-   [getCategories](#getcategories)
    -   [Parameters](#parameters-3)
    -   [Examples](#examples-2)
-   [getCategory](#getcategory)
    -   [Parameters](#parameters-4)
    -   [Examples](#examples-3)
-   [getTickers](#gettickers)
    -   [Parameters](#parameters-5)
    -   [Examples](#examples-4)
-   [getQuotes](#getquotes)
    -   [Parameters](#parameters-6)
    -   [Examples](#examples-5)
-   [getGlobal](#getglobal)
    -   [Parameters](#parameters-7)
    -   [Examples](#examples-6)

### constructor

#### Parameters

-   `apiKey` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** API key for accessing the CoinMarketCap API
-   `Options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Options for the CoinMarketCap instance (optional, default `{}`)
    -   `Options.proxy`  
    -   `Options.fetcher`   (optional, default `fetch`)
    -   `Options.config`   (optional, default `{}`)

### getIdMap

Get a paginated list of all cryptocurrencies by CoinMarketCap ID.

#### Parameters

-   `args`   (optional, default `{}`)
-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Options for the request:
    -   `options.listingStatus` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** active or inactive coins (optional, default `"active"`)
    -   `options.start` **([Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** Return results from rank start and above (optional, default `1`)
    -   `options.limit` **([Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))?** Only returns limit number of results
    -   `options.symbol` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))?** Comma separated list of symbols, will ignore the other options
    -   `options.sort` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Sort results by the options at <https://coinmarketcap.com/api/documentation/v1/#operation/getV1CryptocurrencyMap> (optional, default `"id"`)

#### Examples

```javascript
const client = new CoinMarketCap('api key')
client.getIdMap().then(console.log).catch(console.error)
client.getIdMap({listingStatus: 'inactive', limit: 10}).then(console.log).catch(console.error)
client.getIdMap({symbol: 'BTC,ETH'}).then(console.log).catch(console.error)
client.getIdMap({symbol: ['BTC', 'ETH']}).then(console.log).catch(console.error)
client.getIdMap({sort: 'cmc_rank'}).then(console.log).catch(console.error)
```

### getMetadata

Get static metadata for one or more cryptocurrencies.
Either id or symbol is required, but passing in both is not allowed.

#### Parameters

-   `args`   (optional, default `{}`)
-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Options for the request:
    -   `options.id` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) \| [Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number))?** One or more comma separated cryptocurrency IDs
    -   `options.symbol` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** One or more comma separated cryptocurrency symbols

#### Examples

```javascript
const client = new CoinMarketCap('api key')
client.getMetadata({id: '1'}).then(console.log).catch(console.error)
client.getMetadata({id: [1, 2]}).then(console.log).catch(console.error)
client.getMetadata({symbol: 'BTC,ETH'}).then(console.log).catch(console.error)
client.getMetadata({symbol: ['BTC', 'ETH']}).then(console.log).catch(console.error)
```

### getCategories

Get information about all coin categories available on CoinMarketCap. Includes a paginated list of cryptocurrency quotes and metadata from each category.
Either id or symbol or slug is required, but passing in both is not allowed.

#### Parameters

-   `args`   (optional, default `{}`)
-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Options for the request:
    -   `options.id` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) \| [Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number))?** One or more comma separated cryptocurrency IDs
    -   `options.symbol` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** One or more comma separated cryptocurrency symbols
    -   `options.slug` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** One or more comma separated cryptocurrency slug

#### Examples

```javascript
const client = new CoinMarketCap('api key')
client.getCategories({id: '6051a82166fc1b42617d6dc1'}).then(console.log).catch(console.error)
client.getCategories({id: ['6051a82166fc1b42617d6dc1', '6051a82266fc1b42617d6dc2']}).then(console.log).catch(console.error)
client.getCategories({symbol: 'BTC,ETH'}).then(console.log).catch(console.error)
client.getCategories({symbol: ['BTC', 'ETH']}).then(console.log).catch(console.error)
client.getCategories({slug: 'Gaming,Spartan Group'}).then(console.log).catch(console.error)
client.getCategories({slug: ['Gaming','Spartan Group']}).then(console.log).catch(console.error)
```

### getCategory

Get information about a single coin category available on CoinMarketCap. Includes a paginated list of the cryptocurrency quotes and metadata for the category
id is required.

#### Parameters

-   `args`   (optional, default `{}`)
-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Options for the request:
    -   `options.id` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) \| [Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number))?** One or more comma separated cryptocurrency IDs
    -   `options.convert` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** Return info in terms of another currency

#### Examples

```javascript
const client = new CoinMarketCap('api key')
client.getCategory({id: '6051a82166fc1b42617d6dc1'}).then(console.log).catch(console.error)
client.getCategory({id: '6051a82166fc1b42617d6dc1', convert: ['USD','ETH']}).then(console.log).catch(console.error)
```

### getTickers

Get information on all tickers.
Start and limit options can only be used when currency or ID is not given.
Currency and ID cannot be passed in at the same time.

#### Parameters

-   `args`   (optional, default `{}`)
-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Options for the request
    -   `options.start` **([Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** Return results from rank start and above (optional, default `1`)
    -   `options.limit` **([Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** Only returns limit number of results [1..5000] (optional, default `100`)
    -   `options.convert` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** Return info in terms of another currency (optional, default `"USD"`)
    -   `options.sort` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Sort results by the options at <https://pro.coinmarketcap.com/api/v1#operation/getV1CryptocurrencyListingsLatest> (optional, default `"market_cap"`)
    -   `options.sortDir` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** Direction in which to order cryptocurrencies ("asc" | "desc")
    -   `options.cryptocurrencyType` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of cryptocurrency to include ("all" | "coins" | "tokens") (optional, default `"all"`)

#### Examples

```javascript
const client = new CoinMarketCap('api key')
client.getTickers({limit: 3}).then(console.log).catch(console.error)
client.getTickers({convert: 'EUR'}).then(console.log).catch(console.error)
client.getTickers({start: 0, limit: 5}).then(console.log).catch(console.error)
client.getTickers({sort: 'name'}).then(console.log).catch(console.error)
```

### getQuotes

Get latest market quote for 1 or more cryptocurrencies.

#### Parameters

-   `args`   (optional, default `{}`)
-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** Options for the request:
    -   `options.id` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) \| [Number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number))?** One or more comma separated cryptocurrency IDs
    -   `options.symbol` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))?** One or more comma separated cryptocurrency symbols
    -   `options.convert` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** Return quotes in terms of another currency (optional, default `"USD"`)

#### Examples

```javascript
const client = new CoinMarketCap('api key')
client.getQuotes({id: '1'}).then(console.log).catch(console.error)
client.getQuotes({id: [1, 2], convert: 'USD,EUR'}).then(console.log).catch(console.error)
client.getQuotes({symbol: 'BTC,ETH'}).then(console.log).catch(console.error)
client.getQuotes({symbol: ['BTC', 'ETH']}).then(console.log).catch(console.error)
```

### getGlobal

Get global information

#### Parameters

-   `convert`  
-   `options` **([Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object) \| [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))?** Options for the request:
    -   `options.convert` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))** Return quotes in terms of another currency (optional, default `"USD"`)

#### Examples

```javascript
const client = new CoinMarketCap()
client.getGlobal('GBP').then(console.log).catch(console.error)
client.getGlobal({convert: 'GBP'}).then(console.log).catch(console.error)
```

## Contributing

Contributions are welcome!

1.  Fork it.
2.  Create your feature branch: `git checkout -b my-new-feature`
3.  Commit your changes: `git commit -am 'Add some feature'`
4.  Push to the branch: `git push origin my-new-feature`
5.  Submit a pull request :D

Or open up [a issue](https://github.com/dugusanfeng/coinmarketcap-api/issues).

## License

Licensed under the MIT License.