88poolBTC Solo
How to ConnectAPIJoin Telegram

Success

Always free, always open source.

Donations: bc1qz9vvexjmexe8pr2aueuz6x0v94ulkx2m2sp6lr

API

← Back to stats

Public JSON endpoints behind this dashboard. No key, no signup — the same data the pages use.

Base URL
http://solo.88pool.com
All paths below are relative to this host.
Authentication
None. Every endpoint is open.
CORS
The two read-only feeds send Access-Control-Allow-Origin: *, so browsers can fetch them directly. The POST endpoints do not — call those from a server.
GET/api/statsPool summaryOpen ↗

Everything at a glance in one call: how many addresses and workers, how many are online, aggregated hashrate, and the blocks found with their payout addresses.

Parameters
blocksintegerHow many recent blocks to include. 0–50, default 10.
Request
curl "http://solo.88pool.com/api/stats?blocks=3"
Response
{
  "users": 1,
  "workers": 10,
  "online": 8,
  "idle": 1,
  "offline": 1,
  "hashrate1m": 6100000000,
  "hashrate1hr": 13200000000,
  "hashrate1d": 2470000000,
  "blocks": {
    "confirmed": 1752,
    "rejected": 37,
    "recent": [
      {
        "height": 1752,
        "address": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm",
        "worker": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm.default",
        "proto": "SV1",
        "time": "2026-10-31 03:41:02",
        "ageSec": 128
      }
    ]
  },
  "at": 1793414128000
}
Response fields
usersnumberDistinct payout addresses with at least one worker.
workersnumberTotal workers.
onlinenumberSubmitted a share within the last 60 seconds.
idlenumberLast share 60–300 seconds ago.
offlinenumberNo share for more than 300 seconds.
hashrate1m / 1hr / 1dnumberSummed hashrate in H/s.
blocks.confirmednumberBlocks this pool solved.
blocks.rejectednumberBlocks submitted but rejected.
blocks.recentarrayNewest blocks: height, address, worker, proto, time, ageSec.
GET/api/blocks/recentRecent blocksOpen ↗

Blocks this pool has solved, newest first. Powers the homepage block ticker.

Parameters
limitintegerHow many to return. 1–30, default 12.
Request
curl "http://solo.88pool.com/api/blocks/recent?limit=3"
Response
{
  "blocks": [
    {
      "key": "h1746",
      "height": 1746,
      "worker": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm.default",
      "address": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm",
      "proto": "SV1",
      "ageSec": 418
    }
  ],
  "at": 1793411571133
}
Response fields
heightnumber | nullBlock height, null if the log line lacked it.
workerstringFull worker name: address plus worker extension.
addressstringThe payout address, worker extension stripped.
protostringSV1 or SV2.
ageSecnumberSeconds since the block was found, computed server-side.
atnumberServer timestamp (ms) when the response was built.
GET/api/miners/recentRecent minersOpen ↗

Miners that authorised recently, one entry per address. Reconnects are not counted as new.

Parameters
limitintegerHow many to return. 1–30, default 12.
Request
curl "http://solo.88pool.com/api/miners/recent?limit=3"
Response
{
  "miners": [
    {
      "key": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm",
      "address": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm",
      "workers": 3,
      "names": ["default", "extprobe", "probe"],
      "hashrate": "15.6G",
      "ageSec": 610
    }
  ],
  "at": 1793412345925
}
Response fields
addressstringPayout address.
workersnumberDistinct worker names seen for this address.
namesstring[]Those worker names.
hashratestringOne-hour hashrate as reported by the pool, e.g. "15.6G". Empty if unknown.
ageSecnumberSeconds since the latest authorisation.
POST/api/usersTrack an address

Adds a miner address to the database and pulls its current stats from the pool right away.

Parameters
addressstringBody field. Bitcoin address — mainnet, testnet or regtest all validate.
Request
curl -X POST "http://solo.88pool.com/api/users" \
  -H "Content-Type: application/json" \
  -d '{"address":"bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm"}'
Response
{
  "address": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm",
  "isActive": true,
  "isPublic": true,
  "createdAt": "2026-10-31T02:14:05.000Z"
}
Response fields
addressstringThe address stored.
isActivebooleanWhether the updater keeps refreshing it.
isPublicbooleanWhether the stats page is visible to others.
createdAtstringISO timestamp.
400 invalid address · 409 already tracked · 429 more than 10 new addresses in 3 minutes.
POST/api/users/togglePrivacy?address=Toggle privacy

Flips whether this address shows up publicly. Returns the new value.

Parameters
addressstringQuery parameter. Required.
Request
curl -X POST "http://solo.88pool.com/api/users/togglePrivacy?address=bcrt1q2r0w..."
Response
{
  "message": "User privacy setting updated successfully",
  "isPublic": false
}
400 missing address.
POST/api/resetUser?address=Re-activate an address

Sets isActive back to true so the updater starts tracking this address again.

Parameters
addressstringQuery parameter. Required.
Request
curl -X POST "http://solo.88pool.com/api/resetUser?address=bcrt1q2r0w..."
Response
{
  "message": "User reset successfully",
  "user": "bcrt1q2r0w0tth9803vxj4wq9k63prtumsuw8txk2tzm"
}
400 missing address.