Data API

Download the live mining pool & coin directory as JSON or CSV — free, no key required.

Read-only and free. No sign-up, no API key. Every response carries a freshness and coverage marker so you always know how current the data is — and blank never means zero.

Overview

Mining Scan tracks a directory of mining pools and the coins they mine, refreshed directly from each pool's own API. The Data API exposes that same directory for programmatic use — the identical data shown on the site, wrapped in a small envelope that states, on every response, how fresh and how trustworthy it is right now.

Two endpoints, both GET, both returning json (default) or csv via ?format=csv:

EndpointReturns
/api/export/poolsEvery pool with its coins, fee, hashrate, miners, block counts and per-row freshness timestamps.
/api/export/coinsEvery coin with its pool count, algorithm, network hashrate, miners and block activity.

How we keep it honest

This directory is only useful if you can trust the numbers — so the API refuses to dress up stale or missing data as live:

See the raw honesty report any time at /api/status.

GET /api/export/pools

The full pool directory. Optional limit (default and max 5000) and format (json|csv).

# JSON
curl -s "https://mining-scan.com/api/export/pools" | jq '.meta.honesty_index, (.data | length)'

# CSV, saved to a dated file
curl -sJO "https://mining-scan.com/api/export/pools?format=csv"

Response envelope (JSON)

{
  "meta": {
    "generated_at": "2026-07-24T09:31:07Z",
    "honesty_index": 100,          // same 0-100 as /status
    "state": "operational",        // operational | partial | impaired | down
    "stale": false,                // true if last rescan > 30 min ago
    "scanner_age_sec": 154,
    "scanner_age_human": "2 min ago",
    "row_count": 874,
    "coverage_boundary": {
      "pools_seen_48h": 821, "with_block_detail": 140,
      "aggregate_only": 45, "no_block_data": 636, "note": "..."
    },
    "flags": [],
    "caveat": "Blank/null fields mean the pool did not report that value — never zero.",
    "source": "https://mining-scan.com",
    "terms": "Free for any use with attribution to mining-scan.com.",
    "status_url": "https://mining-scan.com/status"
  },
  "data": [
    {
      "domain": "smoozypool.es", "name": "SmoozyPool", "status": "confirmed",
      "coin_count": 2, "coins": ["KAS", "XEL"],
      "fee": 1.0, "avg_fee": 1.0, "payout_schemes": ["PPLNS"],
      "miners": 34, "best_hashrate": 12.4, "best_hashrate_unit": "TH/s",
      "blocks_found": 12, "blocks_24h": 3,
      "last_metric_at": "2026-07-24T09:29:41Z",
      "last_scan_at": "2026-07-24T09:29:41Z", "last_block_at": "2026-07-24T08:02:10Z"
    }
  ]
}

Pool fields

FieldMeaning
domainPool's normalized domain (its identity in the directory).
namePool name, or null if unknown.
statusDirectory status (e.g. confirmed, candidate).
coinsArray of coin symbols the pool mines.
fee / avg_feeMinimum and average pool fee percent across the pool's coins.
payout_schemesDistinct payout schemes seen (e.g. PPLNS, SOLO).
minersLive miner count (last 48h), or null.
best_hashrate / _unitHighest live pool hashrate and its unit (e.g. TH/s).
blocks_foundPool's own confirmed lifetime blocks; null if the pool publishes no block count.
blocks_24hBlocks reported in the last 24h by pools that publish only a rolling count.
last_metric_atWhen we last read live metrics for this pool (per-row freshness).
last_block_atWhen this pool last reported finding a block.

GET /api/export/coins

The coin directory. Optional limit (default and max 1000) and format.

Coin fields

FieldMeaning
symbol / coin_nameTicker and display name.
algorithmMost-reported mining algorithm for the coin.
pool_countNumber of pools in the directory mining this coin.
total_blocksSum of live pools' blocks for the coin; null where unknown.
blocks_48hBlocks found across pools in the last 48h.
total_minersLive miners across pools mining the coin.
network_hashrate / _unitLatest network hashrate as reported by a live pool.
last_block_atMost recent block time seen for the coin.

CSV format

Add ?format=csv. The response is a plain, header-first CSV (arrays such as coins are ;-joined). An unknown value is an empty cell, never 0. The file is self-dating:

Rate limits & terms

Up to 300 requests per day per IP across the export endpoints. The dataset only changes about every 10 minutes, so one pull every few minutes is plenty. Over the limit returns HTTP 429 with a Retry-After header.

The data is free for any use — commercial or not — with attribution to mining-scan.com (a link back is appreciated). Advertising on the site never affects the numbers or ordering in this export; sponsored placement is separate and clearly marked on the site. Need a higher limit, historical data, or a keyed feed? Get in touch — those are on the roadmap.