get-bitcoin-fees▌
bitcoinsapi.com/get-bitcoin-fees-ahpurb · updated May 21, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Fetch current Bitcoin fee-rate recommendations (fastest, halfHour, hour, economy, minimum) in sat/vB from the Satoshi API's free /api/v1/fees/recommended endpoint. Read-only HTTP GET — no API key, wallet, or signup required.
| name | get-bitcoin-fees |
| title | Get Bitcoin Fee Recommendations (Satoshi API) |
| description | >- Fetch current Bitcoin fee-rate recommendations (fastest, halfHour, hour, economy, minimum) in sat/vB from the Satoshi API's free /api/v1/fees/recommended endpoint. Read-only HTTP GET — no API key, wallet, or signup required. |
| website | bitcoinsapi.com |
| category | crypto-data |
| tags | - bitcoin - fees - mempool - satoshi-api - x402 - api |
| source | 'browserbase: agent-runtime 2026-05-19' |
| updated | '2026-05-19' |
| recommended_method | api |
| alternative_methods | - method: api rationale: >- Paid /api/v1/fees/now ($0.001 USDC via x402 on Base) returns the same five fee rates plus a 'recommendation' verdict string and 'mempool_pressure' label. Use only when the verdict text is required and an x402 wallet is funded. - method: browser rationale: >- Not useful — the bitcoinsapi.com landing page is marketing only, fee data is exposed only via the JSON endpoint. Skip browser entirely. |
| verified | false |
| proxies | false |
Get Bitcoin Fee Recommendations from Satoshi API
Purpose
Return current Bitcoin fee-rate recommendations (sat/vB) for five confirmation horizons — next block, half hour, hour, economy, and minimum — by calling the Satoshi API's free /api/v1/fees/recommended endpoint. Backed by a live Bitcoin Core node's estimatesmartfee output. Read-only HTTP GET; no API key, wallet, signup, or cookies required.
When to Use
- An agent needs a fee-rate snapshot to decide what
feerateto attach to an outgoing Bitcoin transaction. - "Should I send Bitcoin now or wait?" / "How fast will this confirm at N sat/vB?" / "What's the current mempool fee floor?" questions.
- Periodic polling for fee-monitoring dashboards or send-or-wait alerts (rate limit is 30 req/min anonymous; register for a free key for 10K/day).
- As a substitute for
mempool.space/api/v1/fees/recommendedwhen you want a second source — Satoshi API uses Bitcoin Core's estimator rather than mempool-block-based heuristics, so values can differ during congestion.
Workflow
The Satoshi API exposes a public, no-auth HTTP/JSON endpoint. Use the API path directly — there is no browser-driving step worth doing, and the response is canonical JSON behind Cloudflare with a 10-second Cache-Control window. The endpoint accepts no query parameters or headers (besides standard Accept: application/json).
-
Send the request.
GET https://bitcoinsapi.com/api/v1/fees/recommended Accept: application/jsonNo body, no auth, no cookies. Anonymous tier permits 30 req/min (see
X-RateLimit-Limit/X-RateLimit-Remainingresponse headers). For higher limits register a free key viaPOST /api/v1/registerand sendX-API-Keyon subsequent calls (10K req/day free tier). -
Parse the JSON envelope. The response is wrapped in a top-level
{ "data": {...}, "meta": {...} }shape:{ "data": { "recommendation": "Fees are very low. 1.0 sat/vB should confirm within a day.", "estimates": { "1": 1.087, "3": 1.087, "6": 1.0, "25": 1.0, "144": 1.0 }, "savings_estimate": { "...": "..." } }, "meta": { "timestamp": "2026-05-19T04:10:28.815158+00:00", "node_height": 950030, "chain": "main", "syncing": false, "cached": true, "cache_age_seconds": 0 } } -
Map the
data.estimatesobject (keyed by Bitcoin Core confirmation target in blocks) onto the requested field names. The numeric values are fee rates in sat/vB:fastestFee←data.estimates["1"](next block, ~10 min)halfHourFee←data.estimates["3"](~30 min, 3 blocks)hourFee←data.estimates["6"](~1 hour, 6 blocks)economyFee←data.estimates["25"](~4 hours, 25 blocks)minimumFee←data.estimates["144"](~1 day, 144 blocks)
-
Fill the meta fields.
units←"sat/vB"(constant; the API contract is satoshis per virtual byte and is not stated in the response body — the unit is implied by therecommendationtext and Bitcoin Core'sestimatesmartfeeoutput convention).source←"bitcoin-core-estimates"(this is the canonical source string the paid/api/v1/fees/nowendpoint advertises for the same upstream; alternatively"bitcoinsapi.com"if you want a provider-level attribution).timestamp←data.meta.timestamp(ISO 8601 with microseconds and+00:00offset).
-
(Optional) Sanity-check the node is healthy before relying on the result:
meta.syncingmust befalseandmeta.node_heightshould be within ~6 blocks of the current chain tip (https://bitcoinsapi.com/api/v1/statusreturns full node state if you want a second check). -
(Optional, paid) Upgrade to
/api/v1/fees/nowfor richer send-or-wait context (verdict string, mempool-pressure label, plus the same five fee rates already namedfastest_fee_sat_vbetc.). This endpoint returns HTTP 402 Payment Required without payment — settle $0.001 USDC on Base via the x402 protocol and resend with aPAYMENT-SIGNATUREheader (or just shell out tonpx agentcash@latest fetch "https://bitcoinsapi.com/api/v1/fees/now" --payment-network base --max-amount 0.001). The free/fees/recommendedendpoint is sufficient for the field set in this skill — only escalate to the paid path when the caller specifically needs therecommendation/mempool_pressureverdict strings or has an x402 wallet ready.
Site-Specific Gotchas
- Response shape is wrapped in
{data, meta}— the five fee rates are NOT top-level fields. Naïvely readingresponse.fastestFeereturnsundefined. The actual rates live underdata.estimates, keyed by string-encoded block confirmation targets ("1","3","6","25","144"). - The confirmation-target keys are strings, not numbers.
response.data.estimates[1]works in JavaScript via implicit coercion but fails in strictly-typed languages. Useresponse["data"]["estimates"]["1"]. fastestFeeandhalfHourFeeare frequently equal during low-mempool periods — Bitcoin Core'sestimatesmartfeeclamps multiple short horizons to the same floor (observed 1.087 sat/vB for both targets 1 and 3 during validation). This is expected behavior, not a bug; do not de-duplicate fields based on equal values.- Values are floats, not integers. Free-tier output rounds to ~3 decimal places (e.g.
1.087, not1). When constructing actual Bitcoin transactions, round up withMath.ceil(rate * 100) / 100or use the integer floor (1) — paying below the network minrelayfee of 1 sat/vB causes transaction rejection. - No
unitsfield in the response. The API does not echo a units string; sat/vB is the implicit, hard-coded Bitcoin Core convention. Do not invent adata.unitsfield — hard-code the string"sat/vB"in your output. - No
sourcefield on the free endpoint either. Only the paid/api/v1/fees/nowresponse carries"source": "bitcoin-core-estimates". For the free endpoint, setsourceto"bitcoin-core-estimates"(upstream) or"bitcoinsapi.com"(provider) as a constant — the API itself does not declare it. - Cloudflare caches the response for 10 s (
Cache-Control: public, max-age=10,meta.cached: true). Polling faster than every 10 seconds returns the same payload. Use themeta.timestampto detect refresh boundaries; do not rely onDateheader for freshness. - Rate limit is 30 req/min on the anonymous tier. Headers
X-RateLimit-Limit: 30andX-RateLimit-Remaining: Nindicate burst capacity;X-RateLimit-Resetis the Unix epoch when the window resets. Exceeding the limit returns HTTP 429. For sustained polling register a free API key (POST /api/v1/register) which grants 10K req/day. X-RateLimit-Daily-Limit: 0on anonymous calls means "no separate daily cap", not "you're throttled". The per-minute cap is the only constraint without a key.- The site responds with an
X-Data-Disclaimerheader ("For informational purposes only. Not financial advice.") — surfacing this in agent output is polite but not required. /api/v1/fees/nowreturns 402, not 401 or 403, when unpaid. Treating 402 as an auth error and switching to API-key headers does not help — this is a Coinbase x402 micropayment paywall ($0.001 USDC on Base,eip155:8453), not a key-auth gate. The response body includes the completePAYMENT-REQUIREDenvelope and anagentcash_fetch_commandthat performs the payment. The free/fees/recommendedendpoint provides the same five fee rates; only escalate to/fees/nowwhen the verdict / mempool-pressure verbiage is needed.- Don't waste time scraping
bitcoinsapi.comHTML — the landing page is a marketing site with no fee data in the DOM; everything useful is at the JSON endpoints. Thehttps://bitcoinsapi.com/api/v1/agent-contextandhttps://bitcoinsapi.com/.well-known/satoshi-agent-context.jsonURLs return well-structured discovery documents listing every endpoint and recipe. - The endpoint is served via Cloudflare with no anti-bot or stealth-detection layer. A residential proxy, captcha solver, or
--verifiedBrowserbase session is unnecessary. Plainfetch/curl/requestsworks from any IP. meta.node_heightlags the chain by ~0–2 blocks. During the validation run the node reported height950030andsyncing: false; ifsyncing: trueever appears, the estimates may reflect a pre-sync state — fall back to another source.
Expected Output
{
"fastestFee": 1.087,
"halfHourFee": 1.087,
"hourFee": 1.0,
"economyFee": 1.0,
"minimumFee": 1.0,
"units": "sat/vB",
"source": "bitcoin-core-estimates",
"timestamp": "2026-05-19T04:10:28.815158+00:00"
}
JSON schema:
{
"type": "object",
"required": ["fastestFee", "halfHourFee", "hourFee", "economyFee", "minimumFee", "units", "source", "timestamp"],
"properties": {
"fastestFee": { "type": "number", "description": "Fee rate for next-block confirmation (~10 min), in sat/vB." },
"halfHourFee": { "type": "number", "description": "Fee rate for ~30-min confirmation (3 blocks), in sat/vB." },
"hourFee": { "type": "number", "description": "Fee rate for ~1-hour confirmation (6 blocks), in sat/vB." },
"economyFee": { "type": "number", "description": "Fee rate for economy confirmation (~25 blocks, ~4 h), in sat/vB." },
"minimumFee": { "type": "number", "description": "Fee rate for minimum-priority confirmation (~144 blocks, ~1 day), in sat/vB." },
"units": { "type": "string", "enum": ["sat/vB"], "description": "Constant — Satoshi API does not echo a units field; sat/vB is the Bitcoin Core convention." },
"source": { "type": "string", "description": "Upstream estimator, e.g. \"bitcoin-core-estimates\" (preferred) or \"bitcoinsapi.com\" (provider)." },
"timestamp": { "type": "string", "format": "date-time", "description": "ISO 8601 UTC timestamp from response meta.timestamp; reflects cache-tick freshness, not wall-clock request time." }
}
}
When the node reports syncing: true or meta is missing, return the same object with timestamp set to the HTTP Date response header as a fallback, and add an extra "warning": "node syncing" field so the caller can decide whether to retry against a secondary source.
How to use get-bitcoin-fees on Cursor
AI-first code editor with Composer
Prerequisites
Before installing skills in Cursor, ensure your development environment meets these requirements:
- ›Cursor installed and configured on your development machine
- ›Node.js version 16.0+ with npm package manager (verify with
node --version) - ›Active project directory or workspace where you want to add get-bitcoin-fees
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches get-bitcoin-fees from GitHub repository bitcoinsapi.com/get-bitcoin-fees-ahpurb and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
Reload or restart Cursor to activate get-bitcoin-fees. Access the skill through slash commands (e.g., /get-bitcoin-fees) or your agent's skill management interface.
Security & Verification Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Use Cases▌
Exploratory Data Analysis
Quickly understand datasets, identify patterns, and generate insights
Example
Analyze CSV with 100K rows, identify outliers, visualize correlations, suggest hypotheses
Reduce EDA time from hours to minutes, uncover insights faster
Data Cleaning & Transformation
Write scripts to clean messy data, handle missing values, normalize formats
Example
Generate Python/SQL to fix date formats, impute missing values, remove duplicates
Automate 80% of data preprocessing work
Statistical Analysis
Perform hypothesis testing, regression, and statistical modeling
Example
Run A/B test analysis, calculate confidence intervals, interpret p-values
Get statistically sound analysis without PhD in statistics
Data Visualization
Create charts, dashboards, and visual reports
Example
Generate matplotlib/seaborn code for time series plots, distribution charts, heatmaps
Build presentation-ready visualizations 3x faster
Implementation Guide▌
Prerequisites
- ›Claude Desktop or compatible AI client
- ›Python environment (pandas, numpy, matplotlib) or SQL database access
- ›Basic understanding of data analysis concepts
- ›Sample datasets for testing skill capabilities
Time Estimate
20-40 minutes to set up and run first analysis
Installation Steps
- 1.Install data analysis skill using provided command
- 2.Prepare a sample dataset (CSV, JSON, or database connection)
- 3.Start with descriptive statistics: 'Summarize this dataset'
- 4.Progress to visualization: 'Create a scatter plot of X vs Y'
- 5.Advanced analysis: 'Run linear regression and interpret results'
- 6.Validate outputs: check calculations, verify visualizations make sense
- 7.Document analysis workflow for reproducibility
Common Pitfalls
- ⚠Not validating statistical assumptions before applying tests
- ⚠Accepting visualizations without checking data accuracy
- ⚠Overlooking data quality issues (missing values, outliers)
- ⚠Misinterpreting correlation as causation
- ⚠Using wrong statistical test for data distribution
- ⚠Not considering sample size and statistical power
Best Practices▌
✓ Do
- +Always validate data quality before analysis
- +Check statistical assumptions (normality, independence, etc.)
- +Visualize data before running statistical tests
- +Document analysis steps for reproducibility
- +Cross-validate findings with domain experts
- +Use skill for initial exploration, then dive deeper manually
- +Save generated code for reuse on similar datasets
✗ Don't
- −Don't trust analysis without verifying data quality
- −Don't apply statistical tests without checking assumptions
- −Don't make business decisions solely on AI-generated analysis
- −Don't ignore outliers without investigating cause
- −Don't skip data validation and sanity checks
- −Don't use for mission-critical financial or medical analysis without expert review
💡 Pro Tips
- ★Describe data context: 'This is user behavior data from e-commerce site'
- ★Ask for interpretation: 'What does this correlation mean for business?'
- ★Request multiple approaches: 'Show 3 ways to handle missing data'
- ★Combine AI analysis with domain expertise for best insights
- ★Use for rapid prototyping, then refine analysis manually
When to Use This▌
✓ Use When
Use for exploratory data analysis, data cleaning, statistical testing, visualization prototyping, and learning new analysis techniques. Best for initial exploration and rapid insights.
✗ Avoid When
Avoid for mission-critical financial analysis, medical research requiring regulatory compliance, production ML models, or when deep statistical expertise is required for nuanced interpretation.
Learning Path▌
- 1Basic: descriptive statistics, data cleaning, simple visualizations
- 2Intermediate: hypothesis testing, regression, correlation analysis
- 3Advanced: time series analysis, clustering, predictive modeling
- 4Expert: causal inference, experimental design, advanced statistical methods
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.5★★★★★62 reviews- ★★★★★Hana Desai· Dec 28, 2024
Registry listing for get-bitcoin-fees matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Hana Jain· Dec 28, 2024
get-bitcoin-fees has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Shikha Mishra· Dec 16, 2024
Solid pick for teams standardizing on skills: get-bitcoin-fees is focused, and the summary matches what you get after install.
- ★★★★★Hana Kapoor· Dec 12, 2024
I recommend get-bitcoin-fees for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Valentina Liu· Dec 12, 2024
get-bitcoin-fees reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Chinedu White· Dec 8, 2024
Solid pick for teams standardizing on skills: get-bitcoin-fees is focused, and the summary matches what you get after install.
- ★★★★★Charlotte Iyer· Dec 4, 2024
Keeps context tight: get-bitcoin-fees is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Tariq Jain· Nov 27, 2024
We added get-bitcoin-fees from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Hana Khanna· Nov 19, 2024
Useful defaults in get-bitcoin-fees — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Hana Smith· Nov 19, 2024
get-bitcoin-fees fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
showing 1-10 of 62