Overview
There are two ways to get rewards for a specific date range that doesn’t match the predefined evaluation windows (24h, 7d, 30d, 90d, all_time):
Aggregated custom range 💎
A single Rewards Aggregated call with an explicit
timestamp, epoch, or slot range. Requires a Scale or Enterprise plan. Served at whole-UTC-day granularity.Per-epoch iteration
Iterate each epoch with the Rewards List endpoint. Works on any plan and returns per-epoch values — needed for finer-than-daily detail and per-epoch fiat values.
Aggregated Custom Range 💎
With a Scale or Enterprise plan, pass an explicit range torewards-aggregate to get a single total for that period — no epoch iteration required. Specify the range by timestamp (Unix seconds), epoch, or slot.
Whole-UTC-day granularity: Aggregated custom ranges are rounded outward to whole UTC days — the query covers every UTC day your range touches. The response
range echoes the range actually covered by the returned data. It can be wider than requested (outward day expansion) or narrower: leading or trailing days with no data for the selected validators do not extend the range. For sub-day precision or per-epoch values, use per-epoch iteration below.Ranges without data: When the range ends before any of the selected validators had a validator index, or starts after the latest available day, the call answers
404 with no validator rewards data available for the requested range and validators. A selector that matches no validators gets the same answer, so check the selector once with a named window, for example "range": { "evaluation_window": "24h" }. If that call returns 200, count a range that ends before the first of your validators was activated and answers 404 as zero rewards. Any other 404 for a past range means the data is missing or not aggregated yet: retry later, and report it if it persists. Per-epoch iteration works the same way: rewards-list answers 404 for an epoch before any of the selected validators had a validator index.Per-Epoch Iteration
When you need per-epoch values — finer-than-daily precision, per-epoch fiat conversion, or you’re on a plan without custom-range aggregation — iterate each epoch using the Rewards List endpoint.API Endpoint: This approach uses
/api/v2/ethereum/validators/rewards-list for per-epoch reward data.When to Use Each Approach
Tax Calculations: To value rewards at the price when you received them, you need rewards per day or per epoch.
all_time and the rolling windows return a single total, so they don’t work for this, but a custom range of one UTC day returns that day’s total. See Tax Year Calculations for complete tax guidance.Per-Epoch Iteration Performance
These estimates apply to the per-epoch iteration approach (the aggregated custom range is a single call). They compare processing time between the Free Trial (1 req/s) and Scale plan (5 req/s):Related Resources
- Introduction — Overview and endpoint comparison
- Tax Year Calculations — Specific guidance for annual tax reporting
- Epoch & Time Zone Conversion — Detailed epoch/timestamp math
- Pagination Guide — Handling paginated responses

