In our dapp, we would like to offer the user to choose from a list of different mainnet nodes, so that latency is low.
Ideally, from the list of BPs the user has voted for.
How to retrieve a list of mainnet nodes (in the web app)?
I know you want a web API for this but the simple thing to do would be to get cleos installed and call it from an AJAX endpoint to run:
cleos -u http://api.eosnewyork.io system listproducers
This returns the list of BPs with URLs and then you can just call any of these BP websites with /bp.json to retrieve the API endpoints for that BP.
PS: The cleos call itself require a BP (I used EOSNewYork as an example).
Another way is to use an API that is automatically geo routed based on where you are requesting from (like EOSInfra)
curl -si https://public.eosinfra.io/v1/chain/get_info
The API currently has 40ms latency from my location. Which is a reasonably good latency.