Is there a way (API?) to quickly check balance for thousands of public addresses?
Locally (Bitcoin Core) or via any market API?
FYI, Bitcoin Core isn't suitable for your needs. It lacks address index, so you'll need to use
scantxoutset or import the address on wallet then rescan whole blockchain which take some time. Many block explorer offer API, but i doubt the free option is generous enough to let you get details of thousand address within short time.
That site uses a captcha, look hard when opening using TOR.
I tried opening that website on Tor Browser and didn't face any captcha or security check
Another solution would be to host everything locally - full node, spv server like electrs and then rpc explorer.
Take note depending on which software you use, you only don't to run all 3. For example, Bcoin (full node with address index) or Bitcoin Core and Mempool.space.