Public API

CoinCalculators provides a free public API for accessing mining profitability data. No API key required.

Base URL
https://coincalculators.io/api/

All endpoints return application/json. CORS is enabled for all origins.

Endpoints

GET /api/coins.json  — All mineable coins with live data

Returns all tracked cryptocurrencies with current network statistics and pricing.

Example Request
curl https://coincalculators.io/api/coins.json
Response Fields
FieldTypeDescription
tagstringCoin ticker symbol (e.g. "ETC")
algorithmstringMining algorithm name
nethashnumberNetwork hash rate in h/s
difficultynumberCurrent difficulty
difficulty24number24h average difficulty
block_timenumberAverage block time in seconds
block_rewardnumberCurrent block reward
exchange_ratenumberPrice in BTC
market_capstringMarket capitalisation (USD)
volumestring24h trading volume
profitability24numberProfitability relative to top coin (100 = top)
Example Response
{
  "coins": {
    "Ethereum Classic": {
      "id": 162,
      "tag": "ETC",
      "algorithm": "Ethash",
      "nethash": 186000000000000,
      "difficulty": "3.04P",
      "block_time": "13.29",
      "block_reward": 2.56,
      "exchange_rate": 0.000425,
      "exchange_rate_curr": "BTC",
      "market_cap": "$3.1B",
      "volume": "$210M",
      "profitability24": 100
    }
  }
}
GET /api/proxy.php  — WhatToMine mirror proxy

Proxies the WhatToMine coins.json endpoint with CORS headers. Useful if your client is blocked by WhatToMine's CORS policy.

curl https://coincalculators.io/api/proxy.php

Response is identical to whattomine.com/coins.json. Cached for 60 seconds.

Client Example (JavaScript)

// Fetch all coin data and calculate daily profit for your miner
const response = await fetch('https://coincalculators.io/api/proxy.php');
const { coins } = await response.json();

const myHashrateHs = 98e6;  // 98 Mh/s (RTX 3080 on Ethash)
const myWatt = 225;
const elecPrice = 0.10;     // $/kWh
const btcUSD = 50000;       // fetch from CoinGecko

for (const [name, coin] of Object.entries(coins)) {
    if (coin.algorithm !== 'Ethash') continue;
    const nethash = parseFloat(coin.nethash);
    const blockTime = parseFloat(coin.block_time);
    const blockReward = parseFloat(coin.block_reward24 || coin.block_reward);
    const priceUSD = parseFloat(coin.exchange_rate) * btcUSD;

    const dailyCoins = (myHashrateHs / nethash) * (86400 / blockTime) * blockReward;
    const dailyRevenue = dailyCoins * priceUSD;
    const dailyCost = (myWatt / 1000) * 24 * elecPrice;
    const dailyProfit = dailyRevenue - dailyCost;

    console.log(`${name}: $${dailyProfit.toFixed(2)}/day`);
}

Rate Limiting

No rate limiting is currently enforced. Please cache responses on your end — the underlying data updates approximately every 5 minutes.

Support

API questions? Contact us.