List Your Pool

Expose one JSON endpoint on your domain — we do the rest automatically.

Fast, human review. Once your API endpoint passes our automatic check, we approve new pools by hand — usually within a day. We refresh data every 10 minutes directly from your API — no scraping, no Cloudflare issues.

How it works

Mining Scan reads pool data directly from your pool's API, not from screen-scraping. Your stats refresh on a ~10-minute cycle while our collectors are healthy — every number carries its own timestamp, and anything stale is labeled stale rather than shown as live. We support the industry-standard Miningcore API format, which is already built into popular pool software.

3 steps to listing

1

Expose GET /api/pools on your domain

If you run Miningcore, Ergo, or compatible software — you already have this. Otherwise implement the endpoint using our spec below. Takes ~30 minutes.

2

Submit your domain via our form

Tell us your domain and API URL. We automatically verify the endpoint is reachable and returns valid data.

3

Reviewed & listed

Verification passes → we review your submission and add your pool to the directory. We poll your /api/pools every 10 minutes to keep all stats fresh.

Requirements

API Standard

We use the Miningcore API format — the most widely adopted standard in the mining pool industry. If your pool runs Miningcore, Abelian Pool, Ergo Pool, or any compatible software, you already comply.

GET /api/pools

The primary endpoint. Returns configuration and live stats for all coins your pool supports.

{
  "pools": [
    {
      "id": "btc",                        // unique slug for this coin pool
      "coin": {
        "type": "BTC",                    // ticker symbol (REQUIRED)
        "name": "Bitcoin",               // full name (optional)
        "algorithm": "SHA256"            // mining algorithm (optional)
      },
      "ports": {
        "3333": { "varDiff": true },     // stratum port(s)
        "3334": { "varDiff": false, "difficulty": 512 }
      },
      "paymentProcessing": {
        "enabled": true,
        "minimumPayment": 0.001,         // in coin units
        "payoutScheme": "PPLNS"          // PPLNS / PROP / SOLO / PPS / FPPS
      },
      "poolFeePercent": 1.0,             // % fee (REQUIRED)
      "address": "bc1q...",              // pool wallet (optional)
      "poolStats": {
        "connectedMiners": 150,          // active miners (REQUIRED)
        "connectedWorkers": 310,
        "poolHashrate": 15000000000000,  // H/s (REQUIRED)
        "sharesPerSecond": 42.5
      },
      "networkStats": {
        "networkType": "mainnet",
        "networkHashRate": 993000000000000000,
        "networkDifficulty": 123456789012,
        "blockHeight": 954578,           // current block height (REQUIRED)
        "connectedPeers": 42,
        "rewardType": "POW"
      },
      "totalBlocks": 87,                 // all-time blocks found
      "totalPaid": 1.305,               // all-time paid out (coin units)
      "lastPoolBlockTime": "2026-06-21T00:30:00Z"  // ISO 8601
    }
  ]
}

Required vs optional fields

FieldRequiredDescription
coin.typeRequiredTicker symbol, uppercase (BTC, XMR, KAS…)
poolFeePercentRequiredFee in percent, e.g. 1.0 for 1%
poolStats.connectedMinersRequiredCurrent active miners count
poolStats.poolHashrateRequiredCurrent pool hashrate in H/s
networkStats.blockHeightRequiredCurrent network block height
paymentProcessing.payoutSchemeRecommendedPPLNS / PROP / SOLO / PPS / FPPS
lastPoolBlockTimeRecommendedTimestamp of last block found by pool
totalBlocksOptionalTotal blocks found all-time
portsOptionalStratum ports configuration
addressOptionalPool wallet address

GET /api/pools/{id}/blocks

Optional but recommended — enables block history display on your pool page.

{
  "pageCount": 5,
  "items": [
    {
      "blockHeight": 954578,
      "networkDifficulty": 123456789012,
      "status": "confirmed",             // pending / confirmed / orphaned
      "effort": 0.94,                   // 0.94 = 94% effort
      "reward": 3.125,
      "miner": "bc1q...",               // miner who found it (optional)
      "created": "2026-06-21T00:30:00Z"
    }
  ]
}

GET /api/pools/{id}/payments

Optional — enables payment history on your pool page.

{
  "pageCount": 12,
  "items": [
    {
      "coin": "BTC",
      "address": "bc1q...",
      "amount": 0.00315,
      "transactionConfirmationData": "txhash...",
      "created": "2026-06-21T01:00:00Z"
    }
  ]
}

Simple format (alternative)

If you don't run Miningcore and implementing the full spec seems complex, you can use our minimal format instead. Just expose any URL that returns this JSON:

{
  "pool_name": "My Awesome Pool",
  "website": "https://mypool.com",
  "coins": [
    {
      "symbol": "KAS",
      "algorithm": "kHeavyHash",
      "hashrate": 500000000000,        // H/s
      "miners": 42,
      "fee_percent": 1.0,
      "payout_scheme": "PPLNS",
      "min_payout": 50.0,
      "block_height": 465756033,
      "last_block_found": "2026-06-21T00:30:00Z",
      "stratum": "stratum+tcp://mypool.com:5555"
    }
  ]
}

📌 Tip: You can host this as a static JSON file at https://yourpool.com/mining-scan.json — no server code needed. Just update it with a cron job every few minutes.

Using Miningcore software

If you use Miningcore as your pool backend, you already have the /api/pools endpoint built in. It runs on port 4000 by default. Just make sure it's publicly accessible:

# Miningcore exposes the API on port 4000 by default
# Make sure nginx/caddy proxies it:

location /api/ {
    proxy_pass http://127.0.0.1:4000;
    proxy_set_header Host $host;
}

Example: https://smoozypool.es/api/pools — a real Miningcore-compatible endpoint already listed on Mining Scan.

Validate your endpoint

Before submitting, test that your endpoint returns valid data:

Submit your pool

Once your endpoint is working, submit your pool here →

After submission we verify your endpoint automatically. If it passes, we review your submission and list your pool.

Questions?

Use the contact form → for any questions, listing issues, or advertising inquiries.