How do I programmatically add a new search page to the search page list?
After you've configured the plugin in UI, export the config and look for the configuration file search.page.[search_plugin_id].yml.

Remove the uuid and hash line and place the file in the directory config/optional/ of the module. 

You find examples in the core modules Node and User, see http://cgit.drupalcode.org/drupal/tree/core/modules/user/config/optional/search.page.user_search.yml