Google Custom Search Engine could handle the cross-site search. It allows you to create a search option that can be limited to one site or multiple sites. I believe there maybe a limit on the number of sites, but I recall it being higher than 10.
As for the 10+ sites consolidated to a single site? That's harder, if you want 'pure consolidation', since the entries would have same entry_ids, possibly similar or same product names, categories, etc. But if you don't want or need everything, and want to retain details on which site which data came from, you could look at RSS or XML, publish a feed from each site, that's imported into the consolidated site, using something like Data Grab or Feed Parser.
Data Grab is more robust, Feed Parser is free. Either can pull data from one EE install into another, and you can add unique fields, for storing original site, and original entry_id for that site, if need be. If images are involved, you'd obviously want to reference the full url to the image on the site it was originally created on. This may require a find and replace on import.
The benefit of pulling the data from multiple sources into a single install and stored in a database like this, is the data can be normalized and limited. If you only need name, price, description, image, and link to original, then everything can be stored into a single channel, with just the needed data. You can either then just search the new site, since it would send the user back to the original site, or you could still use Google CSE.
The data imports can be automated, once the feeds are set-up and working, you can set-up a cron job to run once a day or every hour to find new entries and pull them over. With 10 sites, you may want to create 2 or more cron jobs and stagger them, so that sites 1-5 data are pulled at the top of the hour and sites 6-10 data is pulled at the bottom. That way, the site shouldn't behave sluggishly, on processing.