Show dynamic list of products from custom api of another database under same host

You have a couple of options for pulling external content into WordPress. Basically, you would either use a theme or a plugin. Since this deals with content it seems like the WordPress Way would be to use a plugin to pull in the content, and perhaps a theme or a child theme to style it.

There are many options for how to pull the content in. You could pull it in live, so every time a visitor comes to the site the Page (or whatever post type you use) lists out all the latest info from the external database. However, that approach could drain a lot of server resources, so you might instead wish to set up a cron job that pulls the info from the external database, into a custom table in the WP database, at a certain interval – say once a week, or once every night, however often you need to sync the data. You can then pull from the WP database itself and cache as needed.

At that point, you’re likely to want to style things, so you will want to either create a custom theme or just a child theme that has a few extra CSS styles added in for the external content. This way you can keep the functionality in the plugin, but styling in the theme, so if you change themes later you keep the data pull and can just apply a new child theme if needed.