First off you should realize that the registrar's and domain name servers don't have to be the same. Feel free to use any registrar (ex: namecheap, gandi, etc) and host the domain name server anywhere else.
Secondly, if you want a good API for dynamic updates, I'd recommend looking for something that supports nsupdate
, which is bind's built-in update mechanism. It's supported almost everywhere, including by let's encrypt clients like Lego.