It will always be slow if contacting a live node for data such as account balance. My preferred way is to use [Amberdata](https://amberdata.io/dashboards/applications?utm_source=stackoverflow&utm_medium=link)'s [API](https://web3api.io/api-explorer/) which is much faster. All you need is [an api key](https://medium.com/amberdata/access-the-best-ethereum-data-with-a-simple-api-key-52aaa2537dc0) then you can: curl \ -X GET \ -H "accept: application/json" \ -H "x-amberdata-api-key: your-api-key" \ -H "x-amberdata-blockchain-id: 1c9c969065fcd1cf" \ "https://web3api.io/api/v1/addresses/0xb7e3abd75119fe3cfc76015193226b21fc19230b/statistics" Which will return the data like so: { "status": 200, "title": "OK", "description": "Successful request", "payload": { "balance": "9740560000000000", "balanceIn": "271223036960000000000", "balanceOut": "271213296400000000000", "addressType": "address", "contractType": [ "Unknown" ], "numHolders": "0", "numTransfers": null } } Let me know if that works for you! 😃 EDIT: There is also a [node wrapper package](https://github.com/web3data/web3data-js)!