Mempool API: Get Bitcoin fees
Gets current Bitcoin fee-rate recommendations, the estimated USD cost of a 140-vbyte transaction at each rate, and the Bitcoin price in USD. Confirmation times are estimates, not guarantees.
Unofficial. Not affiliated with or endorsed by Mempool.
Inputs
This method takes no input.
Input as JSON
{}Output
{ "reading_time": "2026-10-23T09:34:43Z", "currency_code": "USD", "economy_cost_usd": 0.1141392, "minimum_cost_usd": 0.1141392, "bitcoin_price_usd": 81528, "one_hour_cost_usd": 0.1141392, "next_block_cost_usd": 0.2282784, "thirty_minutes_cost_usd": 0.1141392, "economy_fee_sat_per_vbyte": 1, "minimum_fee_sat_per_vbyte": 1, "one_hour_fee_sat_per_vbyte": 1, "next_block_fee_sat_per_vbyte": 2, "thirty_minutes_fee_sat_per_vbyte": 1}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"mempool.space/get_bitcoin_fees","input":{}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "mempool.space/get_bitcoin_fees" , "input": {}})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "mempool.space/get_bitcoin_fees" , "input": {} }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run mempool.space/get_bitcoin_fees# with {}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [], "properties": {}}Output schema
{ "type": "object", "required": [ "next_block_fee_sat_per_vbyte", "next_block_cost_usd", "thirty_minutes_fee_sat_per_vbyte", "thirty_minutes_cost_usd", "one_hour_fee_sat_per_vbyte", "one_hour_cost_usd", "economy_fee_sat_per_vbyte", "economy_cost_usd", "minimum_fee_sat_per_vbyte", "minimum_cost_usd", "bitcoin_price_usd", "currency_code", "reading_time" ], "properties": { "reading_time": { "type": "string", "description": "Time these readings were fetched, in UTC." }, "currency_code": { "type": "string", "description": "Currency of estimated costs and Bitcoin price (USD)." }, "economy_cost_usd": { "type": "number", "description": "Estimated USD fee for a 140-vbyte transaction at the economy rate." }, "minimum_cost_usd": { "type": "number", "description": "Estimated USD fee for a 140-vbyte transaction at the minimum rate." }, "bitcoin_price_usd": { "type": "number", "description": "Price of one bitcoin in US dollars." }, "one_hour_cost_usd": { "type": "number", "description": "Estimated USD fee for a 140-vbyte transaction at the about 1 hour rate." }, "next_block_cost_usd": { "type": "number", "description": "Estimated USD fee for a 140-vbyte transaction at the next block (fastest) rate." }, "thirty_minutes_cost_usd": { "type": "number", "description": "Estimated USD fee for a 140-vbyte transaction at the about 30 minutes rate." }, "economy_fee_sat_per_vbyte": { "type": "number", "description": "Economy recommended transaction fee rate in satoshis per virtual byte." }, "minimum_fee_sat_per_vbyte": { "type": "number", "description": "Minimum recommended transaction fee rate in satoshis per virtual byte." }, "one_hour_fee_sat_per_vbyte": { "type": "number", "description": "About 1 hour recommended transaction fee rate in satoshis per virtual byte." }, "next_block_fee_sat_per_vbyte": { "type": "number", "description": "Next block (fastest) recommended transaction fee rate in satoshis per virtual byte." }, "thirty_minutes_fee_sat_per_vbyte": { "type": "number", "description": "About 30 minutes recommended transaction fee rate in satoshis per virtual byte." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
mempool.space/get_bitcoin_fees- Returns
- fee rates in sat/vbyte, USD cost per rate, Bitcoin price in USD, reading time
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method mempool.space/get_bitcoin_fees; it needs no input.
Ask your agent
- What's the current recommended bitcoin transaction fee in sat/vB right now?
- How much would a typical 140 vbyte BTC transfer cost in dollars at the fastest fee rate?
- Give me the current bitcoin price in USD along with the low, medium, and high fee estimates.
- I want to send bitcoin soon, what fee rate should I pay for confirmation within roughly 30 minutes?
- Check mempool.space for today's bitcoin network fees and what a small transaction would cost me in USD.
See more
All Mempool methodsReturns a Bitcoin address's confirmed and pending balances, lifetime received and sent totals, and up to 50 recent transactions. USD balance uses the latest reported Bitcoin price.
mempool.space/get_bitcoin_addressGets a Binance spot pair's latest price and rolling 24-hour trading statistics from a coin name or symbol. Only currently trading pairs are available.
binance.com/get_coin_priceCompares what recipients get from Wise and other providers for a transfer amount and currency pair, with fees, rates and delivery times.
wise.com/compare_transfer_costsGets a cryptocurrency's price, changes, supply, market cap, volume and all-time high in a chosen currency. If a name or symbol is shared, returns the coin with the largest market cap.
coinmarketcap.com/get_coin_priceFinds nearby GasBuddy stations for a US or Canadian city, address or postal code and lists their reported prices for a fuel grade, lowest listed price first.
gasbuddy.com/list_cheapest_gas_stationsGets GasBuddy's latest reported average regular gas price, its changes and the diesel benchmark for a US state or a listed metro area. Midgrade, premium and area low/high prices are not published with these averages; updates may lag the current day.
gasbuddy.com/get_average_gas_pricesEstimates domestic USPS Post Office retail postage between two ZIP Codes for a letter, large envelope, package or flat-rate packaging, by weight and mailing date. Media Mail is left out; a zero-weight letter counts as one ounce. Prices are retail, cheapest first, with each service's estimated delivery.
usps.com/estimate_postageReturns the latest public weekly Freightos Baltic Index (FBX) price per 40-foot container for one trade lane, or for the global composite and all twelve lanes.
freightos.com/get_container_freight_rates