The list changes continuously, so as soon as you started running any such query, it would already be incorrect.
It can help to limit your query to transactions that are included in the blockchain. At least then the list will only change an average of every 10 minutes.
That being said, the blockchain does not store balances. It ONLY stores transactions. Every transaction since the beginning of Bitcoin. To get the specific information you are looking for, you can try looking for tools that will provide you the current UTXO set (unspent transaction output set). Such a tool would start at the beginning of the blockchain and read through every transaction, removing outputs from the tool's list as they are spent and adding outputs as they are created. When it gets to the end of the blockchain, you should have a complete list of all UTXO. Keep in mind that bitcoins aren't always sent to addresses, so some of the outputs in the UTXO won't be to addresses. You might be better off looking for a list of unique output scripts in the set of all UTXO.
Here's someone that wrote their own UTXO parser. Perhaps if you look around you can find a similar free open source tool that you can use:
In validating a UTXO parser I started looking at various outputs which are . . .
- snip -