# Nostr Zap Radar – Zap Receipt Aggregator

> Nostr Zap Radar – Zap Receipt Aggregator is a paid API for AI agents from nostr.halowerk.com, paid per call via x402, $0.004/call, status unknown (last checked 2026-09-15).

Collects kind 9735 zap receipts for a given Nostr public key across up to 12 relays, deduplicates by event ID, decodes BOLT-11 invoices to extract actual amounts, and reports who zapped how much within a requested time window.

## Facts

- Endpoint: POST https://nostr.halowerk.com/zap-radar
- Price: $0.004/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/nostr-zap-radar-zap-receipt-aggregator-a69ac9f3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_T-pLg-aiireG64-17viJo

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability nostr-zap-radar-zap-receipt-aggregator-a69ac9f3 -d '<json body>'
```

Example prompt: Pull all the zap receipts sent to Nostr pubkey npub1abc123... across the last 7 days using up to 12 relays and tell me who zapped the most and what the total sats received were, using the actual BOLT-11 invoice amounts.

## When to prefer this

Use this endpoint when you need accurate Lightning satoshi amounts received by a specific Nostr account from zap receipts, especially when you need cross-relay deduplication and BOLT-11 invoice decoding (not the potentially mismatched amount tag). Prefer this over manual relay queries when aggregating across many relays or analyzing zapper identity and volume trends.

## Known failure modes

- Public key not found on any of the specified relays — returns empty results
- Relay connection timeouts causing incomplete data collection
- Invalid or unparseable BOLT-11 invoice in a zap receipt — that receipt may be skipped
- Malformed or non-hex/non-bech32 public key input causing a 400-style error
- No zap receipts found in the requested time window — returns zero results

## How this service works

Collects kind 9735 zap receipts addressed to one public key over up to twelve relays, merges them by event id and reports who sent how much over the requested window. Every amount comes from decoding the BOLT-11 invoice carried in the receipt, not from the amount tag of the zap request, because the two can disagree and only the invoice was payable.

## Output

A deduplicated list of zap receipts for the requested public key, each with the sender's identity, the amount in satoshis decoded from the BOLT-11 invoice, the event ID, and a summary of who sent how much over the requested time window.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "days": {
   "type": "integer",
   "default": 30,
   "maximum": 365,
   "minimum": 1,
   "description": "Length of the window in days, counted back from now."
  },
  "pubkey": {
   "type": "string",
   "description": "Recipient public key as 64 hex characters, npub or nprofile."
  },
  "relays": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "maxItems": 12,
   "description": "wss relay addresses. Left empty, ten measured default relays are used."
  },
  "top_senders": {
   "type": "integer",
   "default": 10,
   "maximum": 50,
   "minimum": 1,
   "description": "How many senders the ranking lists."
  },
  "max_receipts": {
   "type": "integer",
   "default": 200,
   "maximum": 400,
   "minimum": 10,
   "description": "Upper bound on receipts fetched per relay. Reaching it sets truncated."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/nostr-zap-radar-zap-receipt-aggregator-a69ac9f3/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from nostr.halowerk.com](https://www.zero.xyz/host/nostr.halowerk.com/llms.txt)
