Bitcoin Scraper — Fees, Mempool, Blocks, Address Balance avatar

Bitcoin Scraper — Fees, Mempool, Blocks, Address Balance

Pricing

from $1.40 / 1,000 result items

Go to Apify Store
Bitcoin Scraper — Fees, Mempool, Blocks, Address Balance

Bitcoin Scraper — Fees, Mempool, Blocks, Address Balance

Bitcoin on-chain data for agents: recommended fees, mempool size and congestion, latest blocks, block height, hashrate and difficulty, address balance and transactions, transaction status. Powered by mempool.space. No API key.

Pricing

from $1.40 / 1,000 result items

Rating

0.0

(0)

Developer

Samat Makatov

Samat Makatov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Live Bitcoin data from the public mempool.space API in clean JSON: recommended fees and congestion, mempool projections, address balances with transaction history, payment confirmation status (with RBF detection), blocks with pool and fee stats, mining pool shares, hashrate and difficulty, Lightning Network stats and BTC price (current and historical). Mainnet, testnet4, testnet3 and signet. No API key, no proxy, no browser.

Use cases

  • Payment confirmation — check whether a customer's BTC payment is confirmed, how many confirmations it has, or was replaced (RBF).
  • Fee optimisation — run before a batch payout to pick halfHourFee / economyFee; alert when congestion is high.
  • Treasury / cold wallet monitoring — daily balances plus everything received or sent since yesterday (sinceDate).
  • Accounting & audit — per-address incoming/outgoing flows for a period, with fees and counterparties.
  • Mining & market research — pool market share, hashrate trend, difficulty retargets, block fee share.
  • Lightning due diligence — look up a node by alias or pubkey: capacity, channels, location, age.

Input

FieldTypeDefaultAllowed values / notes
modestringoverviewoverview, fees, mempool, blocks, block, address, tx, mining, lightning, price (see Reference)
networkstringmainnetmainnet, testnet4, testnet (legacy testnet3), signet — the platform refuses any other value before the run starts
addressesstring[]— (prefill: an example address)mode=address: bc1q…, bc1p…, 1…, 3… (mainnet); tb1…, m…, n…, 2… (test networks). Invalid ones are skipped and listed in SUMMARY.errors (not charged)
txLimitinteger250–200 transactions per address, newest first (0 = balance only). With dates, only transactions inside the dates count
sinceDate / untilDatestring—YYYY-MM-DD or ISO 8601, UTC. A date-only untilDate keeps that whole day. Filters address transactions and blocks; paging stops at sinceDate; blocks starts at the block mined at untilDate (today or later: at the tip)
includeMempoolTxsbooleantrueInclude unconfirmed address transactions
includeUtxosbooleanfalseAttach unspent outputs (mempool.space refuses addresses with > 500 UTXOs)
txidsstring[][]mode=tx: 64-hex transaction ids
includeRbfbooleantruemode=tx: replacedBy / replaces
blocksstring[][]mode=block: heights and/or block hashes
blocksLimitinteger15mode=blocks: 1–150 (~144 blocks per day)
startHeightinteger—mode=blocks: walk back from this height instead of the tip
includeBlockTxids / blockTxidsLimitboolean / integerfalse / 25mode=block: attach tx ids (1–5000)
projectedBlocksinteger3overview/fees/mempool: upcoming mempool blocks to include (1–8)
recentTxLimitinteger10mode=mempool: newest unconfirmed txs (0–50)
includeReplacementsbooleanfalsemode=mempool: latest RBF replacements (up to 25)
intervalstring1wmode=mining: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y, all
poolsLimitinteger20mode=mining: 1–100 pools
lightningRankingstringcapacitymode=lightning: capacity, connectivity, age
lightningLimitinteger20mode=lightning: top nodes (0–100); also caps alias search results
lightningQueriesstring[][]mode=lightning: node aliases (ACINQ) or 66-hex public keys
currencystringUSDmode=price: USD, EUR, GBP, CAD, CHF, AUD, JPY
datesstring[][]mode=price: YYYY-MM-DD dates for historical prices
fieldsstring[][]Keep only these top-level fields, in this order (kind, id, network, found, sourceUrl, fetchedAt are always kept and come first unless listed). Letter case is forgiven; names the mode never outputs are ignored with a note; a list with none of the mode's fields is refused; a row with none of them is not saved (not charged)
requestDelayMsinteger100Minimum gap (0–5000 ms) between request starts; one lane per run, at most 2 requests at a time; a 429 doubles it (≥ 1 s)

Reference

Modes

ModeItemsWhat you get
overview1Fees + congestion, mempool size & fee histogram, projected blocks, difficulty epoch, hashrate, price in 7 currencies, last 10 blocks
fees1Compact fee snapshot (fastest / 30 min / 1 h / economy / minimum), next-block fees, difficulty epoch, USD price
mempool1Mempool size, fee histogram buckets, projected blocks, newest unconfirmed txs, optional RBF replacements
blocksNLatest (or from startHeight) blocks: pool, tx count, fullness, median fee, fees, reward
block1 per blockOne block by height/hash, optional tx ids
address1 per addressBalance, received/spent, tx & UTXO counts, unconfirmed balance, recent txs with direction/amount/fee/counterparties, window totals
tx1 per txidStatus (unconfirmed / confirmed / final ≥ 6 conf), confirmations, fee & fee rate, inputs/outputs, RBF
mining1Pool ranking with shares, hashrate series and change, difficulty adjustments, last-144-block reward & fee share
lightning1 + 1 per matched nodeNetwork stats (nodes, channels, capacity, fee rates), top nodes; node lookups (kind: lightning_node)
price1 + 1 per dateCurrent BTC price (all 7 currencies) and historical daily prices with exchange rates

Congestion levels (congestion)

Derived from fastestFee (sat/vB); conventional thresholds, not an official metric: low ≤ 5, moderate ≤ 30, high ≤ 100, extreme > 100.

Networks

ValueExplorerNotes
mainnethttps://mempool.spaceAll modes
testnet4https://mempool.space/testnet4No prices / Lightning
testnethttps://mempool.space/testnetLegacy testnet3
signethttps://mempool.space/signetNo prices / Lightning

Examples

1. Is the customer's payment confirmed?

{ "mode": "tx", "txids": ["f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16"], "includeRbf": true }

2. Treasury monitor: balance and movements since yesterday

{ "mode": "address", "addresses": ["bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"], "txLimit": 100, "sinceDate": "2026-09-12", "includeMempoolTxs": true }

3. Fee check before a batch payout (compact)

{ "mode": "fees", "projectedBlocks": 2, "fields": ["fastestFee", "halfHourFee", "hourFee", "economyFee", "congestion", "nextBlockMedianFee"] }

4. Mining pool market share over the last month

{ "mode": "mining", "interval": "1m", "poolsLimit": 10 }

5. A full day of blocks for fee research

{ "mode": "blocks", "blocksLimit": 144 }

6. Historical BTC/EUR prices for accounting

{ "mode": "price", "currency": "EUR", "dates": ["2025-01-01", "2026-06-01"] }

Output

mode: "address" (trimmed real example):

{
"network": "mainnet", "kind": "address", "id": "address:mainnet:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh", "found": true, "addressType": "p2wpkh",
"balanceBtc": 3.89219867, "balanceSats": 389219867, "receivedBtc": 16.76225706, "spentBtc": 12.87005839,
"txCount": 1134, "utxoCount": 743, "unconfirmedBalanceBtc": 0, "unconfirmedTxCount": 0,
"isActive": true, "lastTxAt": "2026-09-12T22:18:36.000Z",
"windowReceivedBtc": 0.20127066, "windowSentBtc": 0, "windowTxCount": 30, "windowComplete": true,
"recentTxs": [{ "txid": "…", "confirmed": true, "blockHeight": 966700, "confirmations": 93, "time": "2026-09-12T22:18:36.000Z", "direction": "in", "amountBtc": 0.00001, "netBtc": 0.00001, "feeSats": 141, "feeRateSatVb": 1, "counterparties": ["bc1q…"], "url": "https://mempool.space/tx/…" }],
"recentTxsPartial": false, "warnings": [],
"sourceUrl": "https://mempool.space/address/bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh", "fetchedAt": "2026-09-13T08:13:18.578Z"
}

mode: "overview" (trimmed real example): { "kind": "overview", "blockHeight": 966792, "fastestFee": 2, "halfHourFee": 1, "hourFee": 1, "economyFee": 1, "congestion": "low", "mempoolTxCount": 80379, "mempoolBlocksToClear": 39.71, "hashrateEh": 949.94, "difficultyChangePct": 4.73, "estimatedRetargetAt": "2026-09-19T05:39:50.512Z", "priceUsd": 77106, "minutesSinceLastBlock": 20.6, "latestBlocks": [ … ] }

FieldModesDescription
kind, id, network, foundallItem type, stable id (e.g. tx:mainnet:<txid>), network, lookup result (found: true on every item — inputs that were not found or failed are not items, see Limits)
fastestFee, halfHourFee, hourFee, economyFee, minimumFee, congestionoverview, fees, mempoolRecommended fees in sat/vB
projectedBlocks[], nextBlockMedianFee, nextBlockMinFeeoverview, fees, mempoolUpcoming blocks built from the mempool
mempoolTxCount, mempoolVsize, mempoolBlocksToClear, feeHistogram[]overview, mempoolMempool backlog
difficultyProgressPct, difficultyChangePct, nextRetargetHeight, estimatedRetargetAt, avgBlockTimeSecoverview, fees, miningDifficulty epoch
hashrateEh, pools[], hashrateSeries[], difficultyAdjustments[], last144Blocksoverview, miningMining data (EH/s)
balanceBtc, receivedBtc, spentBtc, txCount, utxoCount, lastTxAt, recentTxs[], utxos[]addressBalance and flows. lastTxAt = the address's newest transaction ("unconfirmed" while in the mempool)
windowReceivedBtc, windowSentBtc, windowTxCount, windowCompleteaddress (with dates)Totals over the confirmed transactions listed inside the dates. windowComplete: true = every transaction of the window is listed, so the totals are exact; false = txLimit, the ~1,000-transaction paging cap or the run's time cut the list (the row's warnings say which)
recentTxsPartialaddresstrue when recentTxs does not hold every transaction of the window (without dates: of the address)
status, confirmations, feeSats, feeRateSatVb, inputs[], outputs[], replacedBy, replaces[]txTransaction status. confirmations is null (and status never final) if the chain tip could not be read
height, hash, timestamp, pool, txCount, fullnessPct, medianFee, totalFeesBtc, rewardBtc, subsidyBtcblocks, blockBlock data
nodeCount, channelCount, totalCapacityBtc, topNodes[], publicKey, alias, capacityBtclightningLightning data
price, prices, exchangeRates, isHistoricalpriceBTC price
warnings[], sourceUrl, fetchedAtallFailed sub-requests or limits of this row, explorer link, fetch time

Every field has a title, description and example in the dataset schema. Dataset views: Overview (all modes), Addresses, Transactions, Blocks, Mining (mining: hashrate, difficulty, pool shares) and Mining pools (one row per pool with share % and block count). The run's SUMMARY record (linked in the run output) lists rows delivered, inputs not found / failed with the reason, inputs not processed and notes.

Use it from code / agents

curl -X POST "https://api.apify.com/v2/acts/yadroo~bitcoin-mempool/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"mode":"tx","txids":["f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16"]}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yadroo/bitcoin-mempool').call({ mode: 'fees' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("yadroo/bitcoin-mempool").call(run_input={"mode": "address", "addresses": ["bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"], "sinceDate": "2026-09-01"})
items = client.dataset(run["defaultDatasetId"]).list_items().items

MCP: add https://mcp.apify.com to your MCP client (Claude, Cursor, …) and call the yadroo/bitcoin-mempool tool with the same JSON.

Pricing

Pay per event: $0.001 per run start + $0.002 per dataset item. Store discounts on the item price: Bronze −10 %, Silver −20 %, Gold and above −30 %; the start event is the same on every plan; platform usage is included. Snapshot modes (overview, fees, mempool, mining) return one item → $0.003 per run; an hourly fee check costs about $0.07 per day. address and tx return one item per input (checking 50 payments = $0.101). blocks returns one item per block (a full day of 144 blocks = $0.289). Invalid inputs, unknown txids/addresses/blocks and failed lookups are not dataset items and cost nothing. Your "Maximum cost per run" is respected: the run stops before the first item it would not cover and ends with Stopped at your spending limit: N rows delivered.

Limits & FAQ

  • Source & rate limits — the public mempool.space API is rate-limited per IP (limits are not published; clients that keep exceeding them get banned). All requests of a run go through one lane: starts at least requestDelayMs apart, at most 2 at a time. HTTP 429/5xx are retried with backoff and Retry-After is respected; after a 429 the gap doubles (at least 1 s) for the rest of the run and the status says so. Address histories take one request per 25 transactions (the first page holds up to 50); a tx lookup takes 2 requests (1 without includeRbf), so 1,000 txids take several minutes.
  • Freshness — live: fees and mempool update every few seconds, blocks as they are mined. Lightning statistics are published roughly daily (statsDate).
  • Big addresses — exchange-type addresses with thousands of transactions: use sinceDate to stop paging early. With untilDate, newer transactions are skipped while paging (they do not use up txLimit), but at most about 1,000 confirmed transactions (40 history pages) are read per address: a window further back reports windowComplete: false with a warning. UTXO lists over 500 entries are refused by the API (recorded in warnings).
  • Blocks by date — with a past untilDate, blocks asks mempool.space for the block mined at that time and walks back from there (a few requests, whatever the date); untilDate of today or later simply starts at the tip. If that lookup fails, a run with startHeight walks back from startHeight (and says so in the status); without startHeight the run fails with a message.
  • Run timeout — rows are saved as they are ready. A run that nears its timeout stops starting new lookups, keeps what it saved and ends Stopped before the run timeout: N rows saved (inputs not reached are counted in SUMMARY.notProcessed; in blocks mode, the blocks of blocksLimit not reached — the same after a stop at the spending limit). Raise the timeout or split long lists.
  • Errors — mode, network, interval, lightningRanking and currency are lists: the platform refuses any other value before the run starts. A missing input list, a bad date or fields with no field of the mode fails the run at once with a message naming the input. When mempool.space does not answer a snapshot mode at all, the run fails with a status that says so. Per-input problems never stop the run and are never charged: inputs that were not found (unknown txid, block, node alias, no price for a date) are listed in the SUMMARY record under notFound, invalid inputs and failed lookups under errors (with the reason), with notFoundCount / errorCount and a short status message (3 item(s) saved · 1 not found (see SUMMARY)). The run fails only if every input failed. Failed sub-requests of a found item are listed in its warnings.
  • Not financial advice — congestion levels are heuristics; prices come from the mempool.space price index.
  • Roadmap — xpub/descriptor balances, fee-rate alerts relative to a threshold.

Made by Yadroo. Siblings: wallet-intel · dexscreener-tokens · coingecko-markets · crypto-sentiment · ens-resolver