Metrics / routstr / network_activity

network_activity

The Routstr network's daily activity - revenue (msats), successful requests, tokens and active providers per UTC day - exactly the series behind the dev.nostrolo.gy/routstr Overview charts. Counts network activity, not distinct users (Routstr publishes no user-side events).

unit

msats+requests+tokens

grain

day (UTC)

series

dense, full history

key

routstr.network_activity@day

Parameters

paramaccepted values
grainday - default day (omit to get the default)
fromoptional inclusive ISO UTC calendar day (YYYY-MM-DD); omit for the series start
tooptional inclusive ISO UTC calendar day (YYYY-MM-DD); omit for today UTC (that day still in progress)
formatcsv | markdown

Query it

MCP tool call against https://dev.nostrolo.gy/mcp (connect your agent):

{
  "name": "nostrology_query_metric",
  "arguments": {
    "metric": "network_activity",
    "domain": "routstr",
    "grain": "day"
  }
}

Windowed (inclusive UTC days; both optional):

{
  "name": "nostrology_query_metric",
  "arguments": {
    "metric": "network_activity",
    "domain": "routstr",
    "grain": "day",
    "from": "2026-07-01",
    "to": "2026-07-31"
  }
}

Response: a plain-text envelope (window, freshness, column contract, this page's caveats) followed by the data table (csv, or format: "markdown") at day grain.

Response columns

nametypedescription
utc_daydateUTC calendar day
msatsintegerrevenue reported for the day, integer millisats
requestsintegerSUCCESSFUL requests reported (failed ones are not counted)
tokensintegertokens billed
active_providersintegerdistinct included providers with a ledger row that day

What is counted

Network aggregates cover INCLUDED providers only: test/staging-marked nodes and private-endpoint-only nodes are excluded (still listed, with the reason, by routstr.provider_leaderboard and the routstr.provider_profile record), and kind-38421 (routstr-provider-announcements) squatters are never providers.

Caveats

  • Every usage number is SELF-REPORTED by each provider's own node in kind-38422 (routstr-analytics-snapshots) events and is unverifiable by construction (RIP-01 payments travel as Cashu tokens in HTTP headers, invisible on Nostr): a node can overstate, understate or stay silent, so read these as what the network says about itself.
  • Daily figures come from a ledger reconstructed by merging the UTC-grid buckets of EVERY archived snapshot's trailing windows (full-coverage-only, newest-wins); observed history is a FLOOR - a day a node later omits is kept, a gap longer than the windows' reach stays a gap - and today is never a ledger day.
  • Revenue is integer MILLI-satoshis (divide by 1000 for sats; sum msats first, convert once).
  • The series is DENSE and contiguous from the first to the last daily ledger day: days with no reported activity are present as zeros. Summing the 30 days before the refresh's generation day (its day minus 30 through its day minus 1; see routstr.network_summary's refresh_generated_at) reproduces the page's 30d headline figures.
  • Daily buckets begin where the archive's daily coverage begins (2026-03-06 as of 2026-08-24); earlier history exists only as weekly buckets, which routstr.cumulative_revenue folds in and this series does not.

Freshness in every response is data-derived: the newest routstr refresh's generation instant (nightly 02:45 UTC; the newest ledger day is the previous UTC day).