raresats.net API
Market data View as Markdown

Address

GET/api/address/{address}

An address's UTXOs that hold tracked sats, as its address page lists them: totals, the types it holds, and one page of UTXOs. Cacheable 30 s. A UTXO a pending transaction spends carries spent_by_pending; pending_outputs lists the outputs pending transactions send it.

Path parameters #

ParameterTypeRequiredDescription
addressstringyesA mainnet address.

Query parameters #

ParameterTypeRequiredDescription
offsetintegernoUTXOs to skip. Default: 0. (min 0)
limitintegernoPage size, at most 5,000. Default: 500. (min 1, max 5000)
sortstringnoA column, - first for descending: rare, range, year, quantity, utxo, size, received. Default: range.
typesstringnoComma-separated sat types; a UTXO must hold every one.

Example request #

cURL
curl 'https://raresats.net/api/address/bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr'
JavaScript
const response = await fetch('https://raresats.net/api/address/bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr');
const data = await response.json();
Python
import requests

data = requests.get("https://raresats.net/api/address/bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr").json()

Response 200 #

FieldTypeDescription
addressstringThe address.
script_pubkeystringIts script, hex.
chainstringNetwork.
explorerstring | nullBlock explorer base URL.
as_ofobject | null{height, hash, time} of the index.
totalsobject
totals.utxosintegerUTXOs with tracked sats.
totals.satsintegerTracked sats.
totals.valueintegerTheir value in sats.
rowsmap of integerRow counts over every UTXO.
typesarray of objectEvery type the address holds.
types[].typestringSat type.
types[].utxosintegerUTXOs holding it.
types[].rangesintegerContiguous runs.
types[].satsintegerSats.
pageobject
page.offsetintegerOffset.
page.limitintegerLimit.
page.totalintegerUTXOs matching types.
page.sortstringSort.
page.typesarray of stringType filter.
outputsarray of objectOne page of UTXOs.
outputs[].outpointstringtxid:vout.
outputs[].txidstringTransaction.
outputs[].voutintegerOutput index.
outputs[].valueinteger | nullValue in sats.
outputs[].kindstringspendable and so on.
outputs[].created_heightinteger | nullThe block that created it.
outputs[].created_timeinteger | nullIts time.
outputs[].extractedbooleanExtracted (isolated rare sats).
outputs[].inscribed_satsarray of integerInscribed tracked sats.
outputs[].quantityintegerTracked sats.
outputs[].firstinteger | nullLowest tracked sat.
outputs[].lastinteger | nullHighest tracked sat.
outputs[].rangesarray of array of integerInclusive ranges.
outputs[].groupsarray of TypeGroupSats by exact type combination, rarest first.
outputs[].yearsmap of integerSats per mint year.
outputs[].yearinteger | nullThe year holding the most sats.
outputs[].rowsmap of integerRow counts.
outputs[].spent_by_pendingobjectA transaction still in the mempool that spends an output (spent_by_pending). Absent when nothing pending spends it.
outputs[].spent_by_pending.txidstringThe spending transaction.
outputs[].spent_by_pending.vininteger | nullIts input that spends the output.
outputs[].spent_by_pending.first_seeninteger | nullWhen the transaction was first seen in the mempool (bitcoind's entry time), unix seconds.
outputs[].spent_by_pending.fee_ratenumber | nullIts fee rate, sat/vB (one decimal).
outputs[].spent_by_pending.salebooleanWhether the spend sells this output (a pending sale with it as the seller's input).
outputs[].spent_by_pending.replaceablebooleanAlways true (full RBF): the spend may still be replaced.
outputs[].split_countsmap of integerThe sats an extract's split may cut, per exact type combination (types sorted, joined with +): the row's sats as groups counts them, without the tracked pieces that touch block 9 or 450x (a split leaves those whole).
pending_outputsarray of objectOutputs pending transactions send it, newest first (rare sats being received); only while the index serves its mempool overlay. A UTXO being sent away carries spent_by_pending. totals, rows and types stay confirmed-only.
pending_outputs[].outpointstringtxid:vout.
pending_outputs[].txidstringTransaction.
pending_outputs[].voutintegerOutput index.
pending_outputs[].valueinteger | nullValue in sats.
pending_outputs[].kindstringspendable and so on.
pending_outputs[].created_heightinteger | nullThe block that created it.
pending_outputs[].created_timeinteger | nullIts time.
pending_outputs[].extractedbooleanExtracted (isolated rare sats).
pending_outputs[].inscribed_satsarray of integerInscribed tracked sats.
pending_outputs[].quantityintegerTracked sats.
pending_outputs[].firstinteger | nullLowest tracked sat.
pending_outputs[].lastinteger | nullHighest tracked sat.
pending_outputs[].rangesarray of array of integerInclusive ranges.
pending_outputs[].groupsarray of TypeGroupSats by exact type combination, rarest first.
pending_outputs[].yearsmap of integerSats per mint year.
pending_outputs[].yearinteger | nullThe year holding the most sats.
pending_outputs[].rowsmap of integerRow counts.
pending_outputs[].pendingtrue
pending_outputs[].first_seeninteger | nullWhen the transaction was first seen in the mempool (bitcoind's entry time), unix seconds.
pending_outputs[].fee_ratenumber | nullIts fee rate, sat/vB (one decimal).
pending_outputs[].addressstring | nullWho receives it.
pending_outputs[].spent_by_pendingobjectA transaction still in the mempool that spends an output (spent_by_pending). Absent when nothing pending spends it.
pending_outputs[].spent_by_pending.txidstringThe spending transaction.
pending_outputs[].spent_by_pending.vininteger | nullIts input that spends the output.
pending_outputs[].spent_by_pending.first_seeninteger | nullWhen the transaction was first seen in the mempool (bitcoind's entry time), unix seconds.
pending_outputs[].spent_by_pending.fee_ratenumber | nullIts fee rate, sat/vB (one decimal).
pending_outputs[].spent_by_pending.salebooleanWhether the spend sells this output (a pending sale with it as the seller's input).
pending_outputs[].spent_by_pending.replaceablebooleanAlways true (full RBF): the spend may still be replaced.
pending_outputs[].split_countsmap of integerThe sats an extract's split may cut, per exact type combination (types sorted, joined with +): the row's sats as groups counts them, without the tracked pieces that touch block 9 or 450x (a split leaves those whole).

Errors #

{error} (a message, no code):

StatusWhen
400Not an address, or a malformed parameter.
503The index is unavailable or busy.

A page holds 500 UTXOs by default (limit up to 5,000); page.total says how many match. sort and types sort and filter on the server. To see which of the address's UTXOs are listed, pass their outpoints to the batch lookup.

While the index watches the mempool, a UTXO a pending transaction is spending carries spent_by_pending ({txid, vin, first_seen, fee_rate, sale, replaceable}: rare sats being sent), and pending_outputs lists the outputs pending transactions send the address (rare sats being received), described as UTXOs with pending: true. totals, rows and types stay confirmed-only.