If you use bitcoin-qt you can use the command line.
Yes, I understand, but I'm typically using APIs in situations where I don't have (or want to) access one of my full nodes.
Besides, even with running your own Bitcoin-QT, you generally can't retrieve stats for
any address, just your own wallet.
Regarding the last line in your post, you can run your bitcoin core with -txindex (you may also need to run it with -reindex but I am not 100% sure) and it will build a tx index for all the transactions.
You will be able to use getrawtransaction on any transactions then.