Not many banks offer APIs to pull transactions. It's easy if you don't mind usign a third party like plaid. I wanted a solution for managing personal finances and didn't want a third party getting a copy of all my financial data, so had to build my own. I ended up building a solution using sqlite and Apache superset, however it used a module that imported data from exports from the banks (so that was a manual step)
Most banks do offer APIs due to various regulations [0], but they don't have to offer these APIs to end users, just to other (regulated and certified) companies. Also the output format can be a wild west. Therefore there is not much practical choice other than to use Plaid, Nordigen, Basiq, etc. Afaik European PSD3 wants to address these 2 issues [1], but it will probably take 3+ years before it gets into effect.