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
| param | accepted values |
|---|---|
| grain | day - default day (omit to get the default) |
| from | optional inclusive ISO UTC calendar day (YYYY-MM-DD); omit for the series start |
| to | optional inclusive ISO UTC calendar day (YYYY-MM-DD); omit for today UTC (that day still in progress) |
| format | csv | 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
| name | type | description |
|---|---|---|
| utc_day | date | UTC calendar day |
| msats | integer | revenue reported for the day, integer millisats |
| requests | integer | SUCCESSFUL requests reported (failed ones are not counted) |
| tokens | integer | tokens billed |
| active_providers | integer | distinct 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).