# Bitcoin Mining Pool Tracker — Hashrate, Nakamoto Coefficient (`gochujang/bitcoin-mining-pool-tracker`) Actor

Bitcoin mining pool tracker: hashrate distribution, block counts, and pool dominance (Nakamoto coefficient). Covers Foundry USA, AntPool, F2Pool and 14+ pools. Monitor mining centralization risk. No API key. $0.005/run.

- **URL**: https://apify.com/gochujang/bitcoin-mining-pool-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Bitcoin Mining Pool Tracker do?

**Bitcoin Mining Pool Tracker** fetches live and historical **Bitcoin mining pool** data from mempool.space and computes network-level decentralization metrics including the **Nakamoto coefficient**, **hashrate distribution**, **pool luck**, geographic risk, and per-pool block share for Foundry USA, AntPool, F2Pool, SpiderPool, ViaBTC, and 12+ other pools. It supports configurable time windows from 24 hours to 3 years, letting you track **mining pool dominance** trends over any period. No API key is required.

### Why use Bitcoin Mining Pool Tracker?

- **Nakamoto coefficient computed automatically** — the single most important decentralization metric (minimum number of pools that together control >50% hashrate) is calculated for you on every run without any manual data aggregation.
- **Geographic risk analysis** — pools are mapped to their home country (US, CN, JP, CZ, etc.) and the actor flags if any single country controls more than 50% of Bitcoin's hashrate — a regulatory and 51%-attack risk signal.
- **Pool-level luck and trend tracking** — `pool_luck_pct` compares actual blocks mined to statistically expected blocks, and `pool_trend` (growing / shrinking / stable) compares the selected period against the 7-day baseline.
- **Flexible time windows** — analyze the last 24h for daily snapshots or go back 3 years to study long-term concentration shifts; the same actor handles both use cases.
- **Empty block and coinbase address monitoring** — `empty_block_rate_pct` and `coinbase_address_reuse_count` expose pool operational quality signals that most block explorers do not surface.

### How to use Bitcoin Mining Pool Tracker

1. Go to the [Apify Store](https://apify.com/store) and find **Bitcoin Mining Pool Tracker**.
2. Click **Try for free** to open the actor in Apify Console.
3. Set the `period` input to your desired time window: `24h`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, or `3y`.
4. Click **Start** — the run completes in under 15 seconds.
5. Download results as JSON or CSV, or connect your dataset to a dashboard via the Apify API.

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `period` | string | `1w` | Time window for pool statistics. Options: `24h`, `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `3y`. |

### Output

```json
[
  {
    "type": "network_summary",
    "period": "1w",
    "total_blocks": 1008,
    "pool_count": 18,
    "network_hashrate_ehs": 712.4,
    "nakamoto_coefficient": 3,
    "top3_pool_concentration_pct": 61.7,
    "decentralization_score": 74.2,
    "top_pool_risk": "moderate",
    "pool_geographic_risk": {
      "country_shares": { "US": 34.1, "CN": 45.2, "CZ": 6.3, "Unknown": 14.4 },
      "dominant_country": "CN",
      "risk_flagged": false
    },
    "solo_vs_pool_ratio": { "solo_blocks": 15, "pool_blocks": 993, "solo_pct": 1.49, "pool_pct": 98.51 },
    "network_empty_block_rate_pct": 0.8,
    "fetched_at": "2026-09-02T08:00:00Z"
  },
  {
    "rank": 1,
    "pool_name": "Foundry USA",
    "slug": "foundryusa",
    "link": "https://foundrydigital.com/",
    "blocks_in_period": 298,
    "share_pct": 29.563,
    "hashrate_ehs": 210.6,
    "empty_blocks": 1,
    "empty_block_rate_pct": 0.34,
    "avg_match_rate_pct": 99.2,
    "pool_luck_pct": 101.4,
    "coinbase_address_reuse_count": 0,
    "mining_revenue_per_ph": 0.000216,
    "pool_trend": "stable",
    "period": "1w",
    "fetched_at": "2026-09-02T08:00:00Z"
  }
]
```

### Data fields

**Network summary record:**

| Field | Description |
|-------|-------------|
| `nakamoto_coefficient` | Minimum pools needed to control >50% hashrate |
| `top3_pool_concentration_pct` | Combined block share of the top 3 pools (%) |
| `decentralization_score` | 0–100 HHI-based score; 100 = fully decentralized |
| `top_pool_risk` | Largest-pool dominance risk: healthy / moderate / high / critical |
| `pool_geographic_risk` | Per-country hashrate shares and dominant country flag |
| `solo_vs_pool_ratio` | Estimated solo-mined vs pool-mined block breakdown |
| `network_empty_block_rate_pct` | % of recent blocks with ≤1 transaction |
| `network_hashrate_ehs` | Total Bitcoin network hashrate in EH/s |
| `total_blocks` | Blocks mined in the selected period |

**Per-pool records:**

| Field | Description |
|-------|-------------|
| `rank` | Pool rank by block share (1 = largest) |
| `pool_name` | Pool name (Foundry USA, AntPool, F2Pool, etc.) |
| `share_pct` | Percentage of blocks mined in the period |
| `hashrate_ehs` | Pool hashrate in EH/s |
| `empty_blocks` | Number of empty blocks mined by this pool |
| `empty_block_rate_pct` | Percentage of this pool's blocks that were empty |
| `avg_match_rate_pct` | Average transaction match rate vs mempool |
| `pool_luck_pct` | Actual blocks / expected blocks × 100 |
| `coinbase_address_reuse_count` | Times this pool reused a coinbase address |
| `mining_revenue_per_ph` | Estimated daily BTC earned per PH/s of hashrate |
| `pool_trend` | Trend vs 7-day baseline: growing / shrinking / stable |

### Cost estimation

| Scenario | Frequency | Monthly cost |
|----------|-----------|--------------|
| Daily snapshot (1 run/day) | 30 runs/month | $0.15 |
| Hourly monitoring (24h period) | 720 runs/month | $3.60 |
| One-off research (3y historical) | 1 run | $0.005 |

All scenarios are billed at a flat **$0.005 per run** regardless of the period selected or number of pools returned.

### FAQ

**What is the Nakamoto coefficient and why does it matter?**
The Nakamoto coefficient is the minimum number of independent mining pools that together control more than 50% of Bitcoin's hashrate. A value of 1–2 indicates severe centralization and elevated 51%-attack risk; 6+ is relatively decentralized. This actor computes it automatically from the block distribution data so you do not need to sum shares manually.

**Is the hashrate data real-time?**
The actor fetches live data from mempool.space's public API. For the `24h` period, data reflects the last 24 hours up to the moment of the run. For longer periods, the API returns aggregated historical data.

**Can I track a specific pool over time?**
Yes — schedule the actor to run daily or hourly, then filter the resulting dataset by `pool_name`. Use Apify's dataset API to export a time series for any pool's `share_pct`, `hashrate_ehs`, or `pool_luck_pct`.

**Disclaimer:** This actor provides data for informational and research purposes only. Mining pool statistics are sourced from mempool.space and reflect observed block attribution which may not be perfectly accurate. Pool geographic assignments are approximate. Nothing here constitutes financial or investment advice.

Keywords: Bitcoin mining pools, hashrate distribution, Nakamoto coefficient, pool dominance tracker, Foundry AntPool F2Pool hashrate, Bitcoin centralization risk, mining pool share, BTC network hashrate, pool luck, Bitcoin decentralization

***

### Related actors

- [Bitcoin On-Chain Metrics](https://apify.com/gochujang/bitcoin-onchain-metrics) — MVRV, NUPL, exchange netflow, and hash ribbon to pair with mining pool dominance data
- [BTC Miner Revenue Tracker](https://apify.com/gochujang/btc-miner-revenue-tracker) — Miner revenue, fees, and coinbase subsidy to understand pool economic incentives
- [Bitcoin Mempool Analytics](https://apify.com/gochujang/bitcoin-mempool-analytics) — Mempool congestion and fee market data that determines mining profitability per pool

### Feedback

If this actor powers your Bitcoin mining research, a review helps others find it: [Leave a review on Apify Store](https://apify.com/gochujang/bitcoin-mining-pools#reviews)

# Actor input Schema

## `period` (type: `string`):

Time window for pool statistics: 24h, 1w, 1m, 3m, 6m, 1y, 2y, 3y.

## Actor input object example

```json
{
  "period": "1w"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/bitcoin-mining-pool-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("gochujang/bitcoin-mining-pool-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call gochujang/bitcoin-mining-pool-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/bitcoin-mining-pool-tracker"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PmJeLJaxeiCT7XSW4/builds/PNbcokKrOcvbRBgTH/openapi.json
