raresats.net API
Listings API View as Markdown

Get activity

GET/api/market/activity

Recent marketplace events, newest first: listed, cancelled and sold. Sales on other marketplaces are in /api/sales.

Query parameters #

ParameterTypeRequiredDescription
rowstringnoOnly events of listings and offers under this row: its own, its sub-categories' and label's, and those holding some of its sats in a bundle (marked sub or in_bundle).
limitintegernoEvents, 1-200. Default: 50. (min 1, max 200)
typesstringnoComma-separated event types: listed, cancelled, sold (the default: those three), offer_made, offer_cancelled, offer_accepted.

Example request #

cURL
curl 'https://raresats.net/api/market/activity?row=black_rare&limit=1&types=sold,offer_accepted'
JavaScript
const response = await fetch('https://raresats.net/api/market/activity?row=black_rare&limit=1&types=sold,offer_accepted');
const data = await response.json();
Python
import requests

data = requests.get("https://raresats.net/api/market/activity", params={"row": "black_rare", "limit": 1, "types": "sold,offer_accepted"}).json()

Response 200 #

FieldTypeDescription
eventsarray of objectNewest first.
events[].seqintegerEvent sequence number (rising).
events[].typestringWhat happened: a listing's listed, cancelled, sold; an offer's offer_made, offer_cancelled, offer_accepted (only when asked for with types).
events[].listing_idstring | nullThe listing; on an offer event, the UTXO's live listing then, or null.
events[].outpointstringThe listed UTXO.
events[].rowstringThe listing's own row.
events[].countintegerSats of that row.
events[].priceintegerThe listing price in sats (an offer's price on an offer event).
events[].unit_pricenumberThe listing's unit price.
events[].seller_addressstringThe seller (same as seller).
events[].txidstring | nullThe purchase (or accepting) transaction of a sold or offer_accepted event; null otherwise.
events[].timeintegerUnix seconds.
events[].sellerstring | nullThe seller's address.
events[].buyerstring | nullA sale's buyer (or an accepted offer's bidder): the address the sats went to. null for other events, or when unknown.
events[].affiliatestring | nullA sale bought here with an applied referral: the affiliate it paid. null otherwise.
events[].offer_idstring | nullThe offer, on an offer event; null otherwise.
events[].bidderstring | nullThe bidder's payment address, on an offer event; null otherwise.
events[].subbooleanOnly on an event read for a row (row=) that is not its own row but holds every tracked sat of the item (a sub-category or a label row): true.
events[].in_bundlebooleanOnly on an event read for a row (row=) whose listing or offer holds some sats of that row among others (in bundle, e.g. a Block 9 chunk under block9_palindrome): true. Its price and unit price are those of its own row.
events[].contains_countinteger | nullWith in_bundle: how many sats of the row asked for the item holds.
Response
{
  "events": [
    {
      "seq": 3,
      "type": "sold",
      "listing_id": "1031931af1592e1c",
      "outpoint": "2fb6fb60ece3672924a373d7479d144d9ce4d3591185bfb5a00e62aedd53d3a9:0",
      "row": "black_rare",
      "count": 1,
      "price": 60546,
      "unit_price": 60000,
      "seller_address": "bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu",
      "txid": "6897451c42f02de2594abfdd6a5d4fcf4794a62cbbd9fbec1ec983893ddc5df4",
      "time": 1790952985,
      "seller": "bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu",
      "buyer": "bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr",
      "affiliate": "bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh",
      "offer_id": null,
      "bidder": null
    }
  ]
}

Errors #

{error, code}; see Errors for every code.

StatusCodeMeaning
400bad_paginglimit or offset out of range.
400bad_rowrow is not a row id.
400bad_typestypes is not a comma-separated list of activity event types.
404retired_rowrow is a row the site retired (uncommon_2009, rare_2009): its listings are its parent row's. retired names the row and the parent and years to ask for.
Error (404)
{
  "error": "row uncommon_2009 is retired: ask for row uncommon with years 2009",
  "code": "retired_row",
  "retired": {"row": "uncommon_2009", "successor": {"row": "uncommon", "years": [2009]}}
}

Events are this marketplace's only. With row, they are the events of every listing and offer under the row: its own, its sub-categories' and label's (marked sub: true), and those holding some of its sats in a bundle (marked in_bundle: true, with contains_count; their price and unit price are their own row's). A sold event names the buyer when known (the purchase's ordinals address, else the buyer the sales index found for that transaction). For sales on every marketplace, use Sales or the market overview.

A purchase made here shows as a pending event while its transaction waits in the mempool. The index sees the same transaction as a pending sale (pending in Sales, keyed txid:vin); the site lists it once, as the index's pending sale.