I would suggest that you should use DB extension, helps to use local storage to fetch the data from Adobe and then it can be passed over to you defined variables.
In case of API call (without extension), I think it uses session storage and you will have to write a manual code in custom code to fetch the DB data into your variables.
As per a recent discussion with DB technical team, the Extension helps to delay the pageload in order to wait for the DB results to get back. In API call, we don't have that option. So we get much better results using the DB extension.
Please do share your feedback once you have tried any of the above method.