Validators Information API Documentation
What is the Validators Information (getValidatorsInformation) API?
getValidatorsInformation is an extended Solana RPC method that returns the validators leading at least one slot in the current epoch, with stake weight, network endpoint metadata, estimated leader location, and reference latency measurements folded into one row per validator. It does not return a list of every node on the network, and it does not return RPC nodes. If you hold ERPC usage credits (API tokens), you can call it in the same format as a standard Solana RPC method.This API provides:
- One row per validator leading a slot in the current epoch, with
slotCountshowing how many slots it leads — unlikegetLeaderSlots, which returns one row per slot stakeWeightfor each leader validator- Estimated leader region, city, country, coordinates, ASN organization, and timezone
- Reference ping measurements from ERPC observation regions through
pingToLeaders
Endpoint and Request Body Example
text
https://edge.erpc.global?api-key=<YOUR_API_KEY>https://edge.erpc.global?api-key=<YOUR_API_KEY>Every parameter is optional; omitting
params, or passing params: [], returns every validator leading a slot in the current epoch.json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}To narrow the result, pass an object with
limit, country, and region. This example asks for up to 5 validators in Germany, which also costs less than the unfiltered request above.json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": [{ "limit": 5, "country": "DE" }]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": [{ "limit": 5, "country": "DE" }]
}All three parameters are optional.
country is matched against leaderCountry using ISO 3166-1 alpha-2 codes, case-insensitively. region is matched against leaderRegion exactly and case-sensitively — read leaderRegion from an unfiltered response to learn the valid values for your target validators. limit accepts 1 to 2000 and clamps to the actual number of validators in the epoch, so a limit above the real count never errors.Example (HTTP)
bash
curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getValidatorsInformation",
"params":[]
}'curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getValidatorsInformation",
"params":[]
}'Example Response (JSON)
result.total shows how many validators were returned by this request. The data[] array below is abbreviated to three of the 670 entries for this epoch, and each entry's pingToLeaders is trimmed to one observation region for readability.json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Validator information retrieved successfully",
"epoch": 1010,
"total": 670,
"totalValidators": 670,
"data": [
{
"identity": "JupmVLmA8RoyTUbTMMuTtoPWHEiNQobxgTeGTrPNkzT",
"gossipNodeId": 2233,
"slotCount": 13232,
"stakeWeight": 12254651.761860535,
"ipAddress": "64.130.41.46",
"gossipPort": 8000,
"tpuPort": 9001,
"tpuQuicPort": 9007,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.1924,
"leaderLon": 8.6753,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 0.974,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-01T06:02:18.000Z"
}
]
},
{
"identity": "BSVckjdW2f8kcXPGcrPPtV9kUDBZ8w8PjrrGVnxgEdwq",
"gossipNodeId": 1487,
"slotCount": 2704,
"stakeWeight": 2502391.138720913,
"ipAddress": "5.199.172.175",
"gossipPort": 12000,
"tpuPort": 12003,
"tpuQuicPort": 12009,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "stockholm",
"leaderCity": "Šiauliai",
"leaderCountry": "LT",
"leaderLat": 55.93333,
"leaderLon": 23.31667,
"leaderOrg": "AS16125 UAB Cherry Servers",
"leaderTimezone": "Europe/Vilnius",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 27.742,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-01T06:02:53.000Z"
}
]
},
{
"identity": "2oHUYyW2PU9VJh4XBs5TbGgzdernunvGqyKth3kxW4ns",
"gossipNodeId": 902,
"slotCount": 304,
"stakeWeight": 280745.689124988,
"ipAddress": "64.130.43.229",
"gossipPort": 8001,
"tpuPort": 5004,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "amsterdam",
"leaderCity": "Amsterdam",
"leaderCountry": "NL",
"leaderLat": 52.37403,
"leaderLon": 4.88969,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Amsterdam",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 16.835,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-01T06:03:07.000Z"
}
]
}
]
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Validator information retrieved successfully",
"epoch": 1010,
"total": 670,
"totalValidators": 670,
"data": [
{
"identity": "JupmVLmA8RoyTUbTMMuTtoPWHEiNQobxgTeGTrPNkzT",
"gossipNodeId": 2233,
"slotCount": 13232,
"stakeWeight": 12254651.761860535,
"ipAddress": "64.130.41.46",
"gossipPort": 8000,
"tpuPort": 9001,
"tpuQuicPort": 9007,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.1924,
"leaderLon": 8.6753,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 0.974,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-01T06:02:18.000Z"
}
]
},
{
"identity": "BSVckjdW2f8kcXPGcrPPtV9kUDBZ8w8PjrrGVnxgEdwq",
"gossipNodeId": 1487,
"slotCount": 2704,
"stakeWeight": 2502391.138720913,
"ipAddress": "5.199.172.175",
"gossipPort": 12000,
"tpuPort": 12003,
"tpuQuicPort": 12009,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "stockholm",
"leaderCity": "Šiauliai",
"leaderCountry": "LT",
"leaderLat": 55.93333,
"leaderLon": 23.31667,
"leaderOrg": "AS16125 UAB Cherry Servers",
"leaderTimezone": "Europe/Vilnius",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 27.742,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-01T06:02:53.000Z"
}
]
},
{
"identity": "2oHUYyW2PU9VJh4XBs5TbGgzdernunvGqyKth3kxW4ns",
"gossipNodeId": 902,
"slotCount": 304,
"stakeWeight": 280745.689124988,
"ipAddress": "64.130.43.229",
"gossipPort": 8001,
"tpuPort": 5004,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "amsterdam",
"leaderCity": "Amsterdam",
"leaderCountry": "NL",
"leaderLat": 52.37403,
"leaderLon": 4.88969,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Amsterdam",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 16.835,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-01T06:03:07.000Z"
}
]
}
]
}
}Response Fields
| Field | Meaning |
|---|---|
result.success | Whether the request succeeded. |
result.message | Human-readable status message. |
result.epoch | Epoch the returned leader set belongs to. This is the latest epoch present in the leader schedule. |
result.total | Number of validators in data. This is the quantity the call is billed on. |
result.totalValidators | Number of leader validators in that epoch before country, region, or limit were applied. Compare it with result.total to see how far a filter narrowed the set. |
result.data[] | One entry per validator, ordered by slotCount descending and then by identity, so a limit returns the validators leading the most slots. |
identity | Validator identity public key. |
gossipNodeId | Identifier of the gossip node record linked to this validator. It is null when no gossip node is linked, in which case the location, port, and ping fields are empty as well. Validators without a linked gossip node are returned in an unfiltered request but cannot match a country or region filter. |
slotCount | Number of slots this validator leads in the reported epoch. Each entry covers one validator, not one slot. |
stakeWeight | Activated stake of the validator identity, in SOL. Validators with no linked gossip node report 0. |
ipAddress, gossipPort, tpuPort, tpuQuicPort, rpcAddress | Gossip network endpoint metadata for the validator. |
version, featureSet | Solana client version and feature set reported by the validator. |
leaderRegion | Normalized operational region label used for routing and analysis. It may group nearby cities or provider locations, and it is the value the region request parameter matches. |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | Estimated geolocation and network organization for the validator. |
pingToLeaders[] | Reference latency to this validator from each ERPC observation region, including region, city, ms, icmpReplied, fromIp, country, coordinates, ASN organization, postal code, timezone, and measuredAt. |
pingToLeaders[].icmpReplied | Whether the validator replied to the measurement. When it is false, ms holds a stored placeholder rather than a latency and should not be read as one. |
pingToLeaders[].measuredAt | When the latency was last measured, in ISO-8601 UTC. Use it to judge how current a reading is. |
Visualizing Validator Coverage
The same response can be read as an epoch-level coverage map instead of a slot-by-slot lookup. This example uses Frankfurt as the observation point.
| Validator region | Location | Slots in epoch | Stake weight | Ping from Frankfurt | Operational reading |
|---|---|---|---|---|---|
| frankfurt | Frankfurt am Main, DE | 13,232 | 12,254,651.76 | 0.974 ms | 13,232 of the epoch's roughly 432,000 slots, in the same metro. Frankfurt capacity serves this validator throughout the epoch, not only during one slot window. |
| stockholm | Šiauliai, LT | 2,704 | 2,502,391.14 | 27.742 ms | A recurring share of the epoch at a latency another European location would serve better. |
| amsterdam | Amsterdam, NL | 304 | 280,745.69 | 16.835 ms | Few slots per epoch. The path is short, but on its own that is not a reason to place capacity. |
getLeaderSlots answers which validators lead the next slots, so it fits routing a transaction now; this method answers which validators lead the epoch at all and how often, so it fits deciding where capacity should sit for the epoch.
Solana Network Data Website
Use Validators Solutions for the public view of network distribution, then use
getValidatorsInformation for per-validator slot counts, stake, location, and measured latency.Token Usage
This method is billed on the number of validators it returns, in units of 10: every 10 validators cost 100 tokens, and a partial unit counts as a full one. A response of 95 validators is therefore charged as 10 units, or 1,000 tokens.
Because the charge follows what is returned rather than what is requested, narrowing the set with
country or region costs proportionally less, and a request that matches no validators costs nothing. A limit above the number of validators in the epoch is clamped to the real count, so a request never pays for validators that do not exist.The size of the leader set changes from epoch to epoch. In the epoch shown above it was 670 validators, which puts a full read at roughly 6,700 tokens.
Why Validator Information Matters
- One row per validator answers who leads this epoch and how much, without aggregating hundreds of thousands of slot rows client-side.
slotCountshows how often a validator is leader in this epoch, so a short path to a high-slotCountvalidator pays off repeatedly.countryandregionshow where the epoch's leader capacity actually sits.- Ping combined with
measuredAtseparates a slow path from a stale reading.
Background
A Solana epoch consists of approximately 432,000 slots. Once the leader assignments for those slots are grouped by validator identity, they collapse into roughly 670 validator rows. ERPC maintains the leader schedule, validator metadata, geolocation, and latency collection, and exposes the result through the RPC interface.
Strategic Use Cases
- Epoch-level capacity planning: size infrastructure against the full set of validators leading the current epoch, not a rolling slot window.
- Regional shortlists: use
countryandregionto pull the validators leading slots in a target location. - Slot-count- and stake-aware prioritization: combine
slotCountandstakeWeightto rank validators within a shortlist. - Cross-epoch monitoring: compare
leaderRegiondistribution between epochs to see how leader geography shifts.
Availability
getValidatorsInformation is available to all ERPC users. API tokens and usage credits can be issued or verified on the ERPC Web Dashboard.- ERPC Web Dashboard: ERPC Web Dashboard
Transaction Success Rate and SWQoS Endpoint
To further improve transaction success rate and execution speed, we recommend using the SWQoS Endpoint. SWQoS (Stake-weighted Quality of Service) prioritizes validators with stake connections. Leaders allocate approximately 80% of bandwidth to priority traffic and 20% to non-priority traffic, with the priority lane offering roughly 5x throughput. This scheduling takes place before Priority-fee evaluation, meaning getting into the SWQoS priority lane is the prerequisite for true low-latency performance.







