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).