Виджет на js для с ценами криптовалют с coinmarketcap

Необходим виджет, который будет показывать цену с коинмаркета. Подскажите каким способом это возможно реализовать? Я знаю что у него есть API для получения цен, но не понял как он работает. В идеале я хочу по интервалу получать JSON и брать из него необходимую информацию.


Ответы (1 шт):

Автор решения: Acri

Вы можете воспользоваться AJAX для отправки запроса на этот сайт. У этого сайта есть API документация где написаны ссылки на разные разделы сайта. Основная ссылка (та которая видимо вам нужна): https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest. Для начала заходите на API регистрацию и нажимаете GET YOUR TOKEN API NOW, затем после входа вам будет доступен токен, просто копируете его и пользуетесь для отправки запросов. (Не забудьте подключить библиотеку JQuery)

Пример запроса:

$.ajax({
    method: 'GET',
    url: "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest",
    headers: {'X-CMC_PRO_API_KEY': 'Ваш токен'},
    dataType: 'json',
    success: function(data){
        //возвращает массив с курсом всех валют
    },
    error: function(jqXHR, textStatus, errorThrown){
        //обработчик ошибок
    }
});

Этот код возвращает объект с данными:

{
    "status": {
        "timestamp": "2021-05-21T12:48:08.337Z",
        "error_code": 0,
        "error_message": null,
        "elapsed": 16,
        "credit_count": 1,
        "notice": null,
        "total_count": 5248
    },
    "data": [
        {
            "id": 1,
            "name": "Bitcoin",        //<----------- Название валюты
            "symbol": "BTC",
            "slug": "bitcoin",
            "num_market_pairs": 9586,
            "date_added": "2013-04-28T00:00:00.000Z",
            "tags": [
                "mineable",
                "pow",
                "sha-256",
                "store-of-value",
                "state-channels",
                "coinbase-ventures-portfolio",
                "three-arrows-capital-portfolio",
                "polychain-capital-portfolio",
                "binance-labs-portfolio",
                "arrington-xrp-capital",
                "blockchain-capital-portfolio",
                "boostvc-portfolio",
                "cms-holdings-portfolio",
                "dcg-portfolio",
                "dragonfly-capital-portfolio",
                "electric-capital-portfolio",
                "fabric-ventures-portfolio",
                "framework-ventures",
                "galaxy-digital-portfolio",
                "huobi-capital",
                "alameda-research-portfolio",
                "a16z-portfolio",
                "1confirmation-portfolio",
                "winklevoss-capital",
                "usv-portfolio",
                "placeholder-ventures-portfolio",
                "pantera-capital-portfolio",
                "multicoin-capital-portfolio",
                "paradigm-xzy-screener"
            ],
            "max_supply": 21000000,
            "circulating_supply": 18713700,
            "total_supply": 18713700,
            "platform": null,
            "cmc_rank": 1,
            "last_updated": "2021-05-21T12:47:02.000Z",
            "quote": {
                "USD": {
                    "price": 41037.9755693302,    //<----------- Цена валюты
                    "volume_24h": 69287722347.89873,
                    "percent_change_1h": 0.2964171,
                    "percent_change_24h": -2.04957698,
                    "percent_change_7d": -18.67165192,
                    "percent_change_30d": -25.95330445,
                    "percent_change_60d": -28.44934,
                    "percent_change_90d": -28.63609647,
                    "market_cap": 767972363411.7745,
                    "last_updated": "2021-05-21T12:47:02.000Z"
                }
            }
        },  
//..........    СЛЕДУЮЩИЕ ВАЛЮТЫ

Пример рабочего кода:

var currency = {name: '', price: ''};
$.ajax({
    method: 'GET',
    url: "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest",
    headers: {'X-CMC_PRO_API_KEY': 'Ваш токен'},
    dataType: 'json',
    success: function(data){
        currency.name = data.data[0].name;
        currency.price = data.data[0].quote.USD.price;
        console.log(currency);
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert("ERROR");
    }
});

Возвращает этот объект:

{
    "name": "Bitcoin",
    "price": 40938.93231245679
}

!!!ВАЖНО!!!

API этого сайта ограничивает количество запросов за день и за месяц. За день максимум 333 запроса а за месяц 10 000 (Если выбирать план BASIC у аккаунта при регистрации). То есть вы сможете отправлять запрос в течении дня только каждые 4 минуты не меньше (чтоб виджет работал на протяжении суток без перерыва). И даже если так, то в месяце в котором 31 день в сумме получится 10 323 запроса, то есть последний день запросы будут блокироваться.

→ Ссылка