It's not that I think that the rankings aren't accurate, but I do think that they vary (slightly) in the ways you mentioned in your previous comment (locale, language, etc).
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
I think that's actually a pretty reasonable way of doing things. That said, I probably wouldn't worry too much about getting 9 pages of rankings -- once you're past 1 or 2, does it really matter (except as "boy I need to work on that one")?
The only thing I would suggest is in your testing, make sure you're using a clean browser (e.g. not logged into your google account, no cookies set for google, etc.) Otherwise, since you're running your API requests (assuming you're using the JS interface) from your browser (thus your google account) and checking the results from your google account/browser, then the results will be the same. Because the variance is tied to history, preferences, locale, etc. So I'd double check from a clean browser (preferably in a different location if you can) because otherwise you're supplying the same input as from the API calls.
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