5 ms·
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?
- Travis 16y agoAFAIK, 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.
- hoop 16y agoHi 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&q=google+rest+api http://ajax.googleapis.com/ajax/services/search/web?v=1.0...
- Travis 16y agoMost useful, thank you very much!
- apowell 16y agoReturning 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.
- hoop 16y agoThis 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 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.
- Travis 16y agoDoes this mean that (in your opinion) the rankings aren't particularly accurate?
- hoop 16y agoIt'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 http://imgur.com/PidBG.png
- Travis 16y agoI 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.