Hope this helps Michael,
been trying to do the very same thing today.
Eventually came up with a (convoluted) way of doing it... i'm not saying its the best, but this is how i got it done:
MySQL Method
SELECT wi.*
FROM widget_instance wi
LEFT JOIN widget_instance_page wip ON wip.instance_id = wi.instance_id
LEFT JOIN widget_instance_page_layout wipl ON wipl.page_id = wip.page_id
LEFT JOIN core_layout_update clu ON clu.layout_update_id = wipl.layout_update_id
WHERE clu.xml LIKE "%<name>unique_id</name><value>UNIQUE_ID</value>%"
PHP Method
$unique_id = $this->getUniqueId();
$collection = Mage::getModel('widget/widget_instance')->getCollection();
$collection->getSelect()
->join(array("wip" => "widget_instance_page"), "main_table.instance_id = wip.instance_id")
->join(array("wipl" => "widget_instance_page_layout"), "wip.page_id = wipl.page_id")
->join(array("clu" => "core_layout_update"),"wipl.layout_update_id = clu.layout_update_id")
->where("clu.xml LIKE \"%<name>unique_id</name><value>".$unique_id."</value>%\" ");
$widget_id = $collection->getFirstItem()->getId();
$widget_title = Mage::getModel('widget/widget_instance')->load($widget_id)->getTitle();