raresats.net API
Market data View as Markdown

Sat

GET/api/sat/{n}

One sat: the block that mined it, its types and rows, inscriptions, where it is now, every sale of it (newest first) and the marketplace's live listing of its UTXO. Cacheable 15 s. pending says where a transaction still in the mempool takes it; its pending sales lead sales, marked pending.

Path parameters #

ParameterTypeRequiredDescription
nintegeryesThe sat number, a decimal integer below 2,099,999,997,690,000. (min 0)

Example request #

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

data = requests.get("https://raresats.net/api/sat/45100023043").json()

Response 200 #

FieldTypeDescription
satintegerThe sat number.
as_ofobject | null{height, time} of the index.
explorerstring | nullBlock explorer base URL (https://mempool.space).
heightintegerThe block that mined it.
block_timeinteger | nullThat block's time, unix seconds.
luckinteger | nullIts luck, its block's: how many more leading zero bits the block hash has than its difficulty target required (every sat of a block shares it). null while the luck table is being read.
trackedbooleanWhether the rare-sat index tracks it (location and sales are known only then).
typesarray of stringIts sat types.
rowsarray of stringIts rows.
inscribedbooleanWhether it carries inscriptions.
inscriptionsintegerHow many.
locationobject | nullWhere it is now: {kind: unspent|burned|lost|overwritten, satpoint, outpoint, offset, output}. output is the UTXO holding it (outpoint, value, address, quantity, groups, ranges, rows (the fork's sats per row), …), null for a lost sat. Its output carries spent_by_pending (a PendingSpend) while a pending transaction spends it.
salesarray of objectEvery sale of it, newest first.
sales[].seqinteger | nullThe sales store's sequence number, else null.
sales[].txidstringThe sale transaction.
sales[].vininteger | nullThe seller input.
sales[].heightinteger | nullBlock height (null while pending).
sales[].timeintegerUnix seconds.
sales[].marketplacestringMarketplace id.
sales[].priceinteger | nullPrice in sats.
sales[].rowstring | nullThe sale's own row.
sales[].unit_pricenumber | nullUnit price per sat of that row.
sales[].countinteger | nullSats of that row sold.
sales[].sats_soldinteger | nullTracked sats the sale sold.
sales[].sellerobject | null{address, outpoint}.
sales[].buyerobject | null{address, outpoint}.
sales[].inscribedbooleanAn inscription was on a sold sat.
sales[].outlierboolean | nullA statistical outlier (null when unknown).
sales[].secondarymap of integerA sale's secondary rows: the market rows of the other sats it sold (not its own row, a row it is a sub-category of, or a label row), each with its sats, primary-first: {"black_omega": 1} for a black omega sold with an alpha uncommon; {} for none. A sale never counts in its secondary rows' markets (the primary-sat rule, in Concepts).
sales[].asarray of stringThe sat's rows (rows, in its order) the sale sold sats of: why a sale another row led is listed on this sat (a Block 9 chunk on its palindrome's page names block9, block9_palindrome, nakamoto_palindrome).
sales[].pendingbooleanStill in the mempool: listed first, with first_seen and fee_rate; time is first_seen.
sales[].first_seeninteger | nullWhen the transaction was first seen in the mempool (bitcoind's entry time), unix seconds.
sales[].fee_ratenumber | nullIts fee rate, sat/vB (one decimal).
listingListing | nullThe marketplace's live (active or pending) listing of its UTXO, else null.
pendingobject | nullWhere transactions still in the mempool take it (the end of a chain of them), else null: {txid, first_seen, fee_rate, kind: unspent|burned|fee, satpoint, outpoint, offset, output, url}; output is the pending output (a PendingOutput), null when it goes to fees. location stays the confirmed one, its output carrying spent_by_pending. Present only while the index serves its mempool overlay.

Errors #

{error} (a message, no code):

StatusWhen
400Not a sat number.
503The index is unavailable or busy.
  • A sat the index does not track still gets its types and rows, with no location or sales.
  • luck is its block's: how many more leading zero bits the block hash has than its difficulty target required (Sat luck).
  • listing is the marketplace's live listing of the UTXO the sat is in (a Listing), or null.
  • Each sale in sales carries the Sales tab's seq, row, unit price and count when the sales index has it, and its secondary rows: the other sats sold with it (a black omega sold with this alpha uncommon).
  • pending says where a transaction still in the mempool takes the sat ({txid, first_seen, fee_rate, kind, satpoint, outpoint, offset, output}; kind is fee when it goes to the miner), else null. location stays the confirmed one; its output carries spent_by_pending. The sat's pending sales lead sales, with pending: true, first_seen and fee_rate and no height.