Frequently Asked Questions
General
What is the Bitcoin Lab API?
The Bitcoin Lab API is a RESTful service that exposes our on-chain metrics and aggregates.
All blockchain data is harvested from our own nodes and processed in-house, making us a truly independent source of on-chain data.
What is new in Bitcoin Lab V2?
Bitcoin Lab V2 will continue to be free to use and accessible for everyone. This upgrade improves performance, consistency, and developer experience.
What’s changing- Authentication & access: Updated token flow and header usage.
- Endpoints & params: Many paths are renamed or new, some retired.
- Query params: Time is now in RFC3339 standard.
- Responses: Stricter schemas and status codes; more consistent error bodies.
- Payload: Now based on data points retrived, still very generous.
- Oct–Dec 2025: Test V2 alongside V1 (backwards-incompatible changes exist).
- Jan 2026: V2 becomes default; V1 enters deprecation.
- Feb 2026 (planned): V1 shutdown.
Where are the API Docs?
Where are the metric definitions?
Can I share and distribute the data?
You should include one of these website urls:
- www.researchbitcoin.net
- api.researchbitcoin.net
- charts.researchbitcoin.net
Where is the Disclaimer?
We cannot and will not be held responsible for any losses or damages that may arise from the use of this website, the The Bitcoin Lab onchain analysis suite, or the API.
Do read the https://researchbitcoin.net/important-disclaimer/
This service is great! How can I support you?
You can also help by spreading the word. Please feel free to share or republish our charts and datasets, but clearly attribute "Bitcoin Lab” and link back to the source page.
Finally, your interest and use of the Bitcoin Lab is our inspiration!
Subscription and Tiers
How do I subscribe?
This will provide you a free Tier 0 access, see: /tier.
If you are interested in Tier 1 or Tier 2 access, please use the automatic onboarding system.
How much does the API service cost?
We hope users view the fee as a support of the Bitcoin Lab service.
Read more on available Tiers here: /tier.
What are the Tier options
Read more on available Tiers here: /tier.
How does the automatic onboarding process work?
- Sign in and open /tier.
- Click Request tier access to send the onboarding request.
- You will receive a BTC deposit address and our terms.
- Deposit ≥ 0.00025 BTC for Tier 1, or ≥ 0.00100 BTC for Tier 2.
- After your transaction is confirmed on the Bitcoin blockchain (typically 10–30 minutes), your Tier is activated automatically.
Do you accept other payment options than BTC?
Quota and Payload
How does Quota work?
Examples:
- Simple series: DP = timestamps
realized_profit: 500 days at h12 (2 samples/day) ⇒ ≈1,000 DP ⇒ 1,000 quota.
- Binned series: DP = timestamps × bins
spent_output_by_age_sumbtc:
500 days at daily resolution with 7 bins ⇒ 3,500 DP ⇒ 3,500 quota.urpd_log_supply_btc:
1 timepoint with ~1,000 bins ⇒ ≈1,000 DP ⇒ 1,000 quota.
What is Payload?
- Time range – more timestamps increase DP.
- Resolution – higher frequency (e.g., h1 vs d1) yields more data points.
- Bins – binned series multiply DP by the number of bins.
Access & Authentication
How do I get an API token?
1. Use the Sign Up (upper right screen) to create an account.
2. If already signed up, make sure you are logged in.
3. Generate a token here: Get API Token.
4. Copy the token from the screen and store it safely..
Note:
- Your token is personal—do not share it or put it in the query string.
- Tokens are per-user and associated with the registering email address.
- Token are only valid for (90 days), after which the token must be renewed.
How do I renew the API token (web & API)?
- Token can be renewed on the website and via API.
- Token is valid for 90 days.
- Generating a new immediately invalidates the previous token.
- The token MUST be renewed on the website every 180 days, regardless of any API-based renewals.
-
1. Log into website Get API Token.
2. Click Generate New Token.
3. Copy and store the new token.
API renewal (headless, near-expiry)
-
1. Allowed only:
- within the last 7 days before the token expires
- before a new web-issued token is required.
curl -X POST \
"https://api.researchbitcoin.net/v2/auth/renew" \
-H "Authorization: Bearer YOUR-TOKEN"
3. On success, you receive a new token and refreshed expiry.
Note: You can also renew token in /docs . Just make sure you have the token string in Authorize - BearerAuth, and select Authentication: /v2/auth/renew
How do I authenticate using the API token?
X-API-Token header on every request.Example:
curl -H "X-API-Token: YOUR_TOKEN" \
"https://api.researchbitcoin.net/v2/cointime_statistics/active_cap?resolution=h8&output_format=json"
How can I check the status of my subscription and token?
This is easy on /docs, or you can use query directly, e.g.:
curl -X 'GET' \
'https://api.researchbitcoin.net/v2/info/user_info' \
-H 'accept: application/json' \
-H 'X-API-Token: YOUR-TOKEN'
API Requests & Responses
Which response formats are supported?
All endpoints support CSV via
output_format=csv.CSV is significantly more transfer-efficient and is recommended for large or high-granularity queries (resolutions finer than 1D).
Common query parameters
- from_time:
RFC3339 UTCYYYY-MM-DDTHH:MM:SSZ(e.g.,2025-09-20T10:30:00Z)
or date-onlyYYYY-MM-DD(interpreted as00:00:00Z).
Inclusive lower bound. - to_time:
RFC3339 UTCYYYY-MM-DDTHH:MM:SSZ
orYYYY-MM-DD(→00:00:00Z).
Exclusive upper bound. - urpd_time:
RFC3339 UTCYYYY-MM-DDTHH:MM:SSZ
orYYYY-MM-DD(→00:00:00Z)
or a UTC timestamp without suffix such asYYYY-MM-DD HH:MM[:SS].
Selects the first available snapshot at or after the given time. - resolution:
block|h1|h4|h8|h12|d1 - output_format:
json(default) |csv
Notes: Milliseconds (.SSS) are accepted but optional. If you omit the timezone suffix we assume UTC; YYYY-MM-DD HH:MM[:SS] style inputs work and are coerced to Z. Not all parameters are available for all endpoints, check the documentation.
What time zone do you use?
Z for both
request parameters and responses (e.g., 2025-09-20T10:30:00Z). Date-only
inputs (YYYY-MM-DD) are interpreted as 00:00:00Z.
See FAQ “Common query parameters” for details.
What is the maximum payload per request?
If a request exceeds the limit, the API returns:
422 Unprocessable Entity with:Payload must be ≤ {limit} data points for {output_format}. Please paginate the query.To resolve: reduce the time range, use a coarser
resolution, switch to output_format=csv, or split the request into smaller time windows.
What are the rate limits?
Exceeding limits returns
429 Too Many Requests.Responses headers include:
X-RateLimit-Limit and X-RateLimit-Remaining and x-ratelimit-reset.
Errors & Reliability
How are errors returned?
400invalid params401missing/invalid token403forbidden (including not allowed for your tier(404not found429rate limited5xxtransient server error
No quota remaining - What do I do?
curl -X 'GET' \
'https://api.researchbitcoin.net/v2/info/user_info' \
-H 'accept: application/json' \
-H 'X-API-Token: YOUR-TOKEN'
Should I call the API from the browser?
Browsers are not designed for very large datasets. For heavy queries, paginate by time and prefer
output_format=csv for downloads.
How can I check the status of the Bitcoin Lab system services
You can also query the API endpoint Info System and User with data_field system_info.
This is easy on /docs, or you can call it directly, e.g.:
curl -X 'GET' \
'https://api.researchbitcoin.net/v2/info/system_info' \
-H 'accept: application/json' \
-H 'X-API-Token: YOUR-TOKEN'
On-chain Data
How often does the data update?
Expect a few minutes delay to ensure no forks and to process the new data.
What is the aggregation method for data?
- Last value – commonly used for unspent outputs.
- Mean (average) – typical for spent outputs.
- Weighted average – values weighted by number or value of outputs, often for spent outputs.
- Median, minimum, or maximum – used where appropriate.