Is there a way (API?) to quickly check balance for thousands of public addresses?
Locally (Bitcoin Core) or via any market API?
The fastest solution would be to download daily dump of founded addresses (from blockchair or
http://addresses.loyce.club/ ), load into local database (for example postgresql) and then have have a program which launches queries to your database. That way you are independent of network connection, API limitations etc. In long term perspective, this is the best solution (of course you need to update your database from time to time).
Another solution would be to host everything locally - full node, spv server like electrs and then rpc explorer.