How can I generate a search results page from a list of contact IDs, programatically?
We have done work that is hopefully heading to Civi core which makes the following possible:

Below is the table of field name vs params that can be used in the URL to force the search results.

Contribution Tokens

Field Name > > Param in URL

contribution_page_id > > pid

financial_type_id > > fid

contribution_status_id > > status

is_pay_later > > pay_later

receive_date_from > > (receive_date)    start

receive_date_to > > (receive_date)  end

Eg of complete search URL -

"civicrm/contribute/search?reset=1&amp;force=1&amp;status=1&amp;fid=2&amp;pay_later=1&amp;start=20181206&amp;end=20181210"

Membership Tokens

Field Name > > Param in URL

membership_type_id > > type

membership_status_id > > status

start_date > > start &amp; start_high

end_date > > end &amp; end_high

Eg of complete search URL -

"civicrm/member/search?reset=1&amp;force=1&amp;type=1&amp;status=1&amp;start=20181002&amp;start_high=20181004&amp;end=20181103&amp;end_high=20181109"

Participant Tokens

Field Name > > Param in URL

event_id > > event

status_id > > status

role_id > > role

is_pay_later > > pay_later

register_date_from > > register_start

register_date_to > > register_end

Eg of complete search URL -

"civicrm/event/search?reset=1&amp;force=1&amp;event=1&amp;status=2&amp;role=3&amp;pay_later=1&amp;register_start=20181210&amp;register_end=20181214"

Activity Tokens

Field Name  Param in URL

activity-type id > > type

activity_status > > status

has a follow-up activity > > hasFollowUp

is a follow-up acivity > > isFollowUp

start date > > dateLow

end date > > dateHigh

Eg of complete search URL -

civicrm/activity/search?reset=1&amp;force=1&amp;status=1&amp;hasFollowUp=1&amp;isFollowUp=1&amp;dateLow=20181210&amp;dateHigh=20181212&amp;type=3

Here is the link to the gitlab ticket https://lab.civicrm.org/dev/core/issues/252