Ask HN: Search Engine Rank Checking API?
I'm looking for a service that will allow me to check Google/Yahoo/Bing rankings instantly via an API. I use Authority Labs to measure ranking trends for my most important keywords, but I'm looking for a tool that will provide one-time instant rankings for 15-30 keywords at a time. We're constantly running these searches by hand, and automating it would save hours each month.
Does such a service exist? AFAIK, no. I looked into writing one of these, but it was right after google changed it's search API so that it was only javascript. (at least, I couldn't get a key to the standard backend webservice API). My impression is that google didn't really want you to be able to do this, because better metrics on rankings would make it easier for people to game google. 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. Hi Travis, 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... Most useful, thank you very much! Returning things in a different order is a total deal-breaker, and the mere possibility of that happening makes me wonder if screen-scraping is the only way to get reliable data. 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. This is actually something I've been doing as a side project but it's not something I can give you access to right now. There are other "rank tracker" services, but none of them are instant. SEOmoz has one, which will allow you to enter up to 5 search terms, but you'll need to dish out some $$ to lift that limit - http://www.seomoz.org/rank-tracker 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. I checked out SEOmoz, but I didn't know they offered an ad-hoc rank checker until you pointed it out. PRO members can check 100 ad-hoc rankings per day, which isn't quite enough for us on a busy day (a 3,000/mo quota would likely be plenty, but 100/day would leave us short some days). 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've taken note of your email address and I'll certainly let you know. I'm not far off from being able to provide testing access to the data through a RESTful API, so you should hear from me within a couple of weeks. Does this mean that (in your opinion) the rankings aren't particularly accurate? 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.