Does such a service exist?
I decided against using the JS version because I'm not that good in JS, but mostly because I saw warning everywhere that "results returned by the JS search API are not necessarily in the same order as if you searched through their web interface". Blew me away -- they're really returning things in a different order?
But now I'm questioning whether or not that's just because their rankings will change depending on who is searching -- locale, preferences, etc., will all affect rankings. I suppose the thing to do would be to build this with their JS Search API, and see if I can get consistent rank results (and cmp to hand searches).
But I'm with you -- feels like this should be a tool that exists everywhere.
As much as I'd hate to give away my secret, Google does have a RESTful API available to its search results. Best of all, it's in JSON!
http://ajax.googleapis.com/ajax/services/search/web?v=1.0...
All the factors you mention do influence ranking (local, preferences, etc), but I'm content to get de-personalized, non-geotargeted search results for this purpose.
Basically, because the search engines don't provide this data through a public API, you end up having to use the different search APIs and crawl each one's results for your target domain.
Plus, I don't see an API for that particular tool (they have an API for other tools), which makes it tough to integrate into our internal toolkit.
If you do release your tool to the public, please let me know. I'd be interested in it as a subscription service or installable server-side software.
I should qualify that and say that based on the rank tracking I've been doing, so far every time I've manually checked my results they've been spot on but, as you point out, Google's own documentation suggests that this may not always be the case.
What I was getting at, but wasn't very clear about, is that these results are far from instant due to the fact that you're looking at potentially 27+ API requests per search term. (3 search engine APIs, up to 9 pages of results for each -- Google's API maxes out at 72 results)
I currently do this every hour while in testing and store the results in my datastore. Then I in the web-app I pass this data to the Google charts API. The result is presently something that looks like this - http://imgur.com/PidBG.png