Scoble suggests that Google's deprecation of the SOAP Search API is their way of saying they don't care about Windows applications anymore. I personally feel that puts too much emphasis on the (over-hyped) Google vs. Microsoft rivalry issue, and that it isn't the real reason behind Google's decision. There are thousands of web developers out there who are using the SOAP API for things that have nothing to do with Windows, and they're losing out from this change too.

If you ask me, I think it was purely a decision that made business sense from a revenue perspective. See, the thing is, SOAP Search APIs are so flexible that they allow developers to get query results from a search engine and do whatever they like with them after that. For example, if it weren't for the little "Powered by Google" logo that I added at the end of all my search results pages, most people firstly wouldn't even know that Google has anything to do with the search functionality on this blog. The SOAP API allows me to take Google's search result set and customize it to fit in perfectly with the look-and-feel of my site. Moreover, unlike Google's own search result pages, my blog doesn't even display ads, and therein lies the basic problem.

Google's monetization strategy revolves almost solely around advertising. The SOAP API gave developers a great way to tap in to Google's search results, but it gave Google nothing back in return - brand loyalty and mindshare, maybe, but nothing concrete. So here comes the new kid on the block - the AJAX Search API that takes away control from the hands of the developer and puts Google in charge. With this new API, you're getting AdSense ads with your search results whether you like it or not.

Now before anyone jumps in and accuses me of trying to be a freeloader, let me make it clear that I have nothing against contextual advertising. In fact, I think Google's model of ad-supported, free services is brilliant (Disclaimer: I worked on the Google AdSense team as an Engineering Intern last summer). Every corporation is in the business of making money, and Google has no reason to be any different. I would gladly display ads next to my search results if that were a condition in Google's Terms of Service, and wouldn't even mind if Google somehow forced me to do so. (I do see how it can become an issue for companies, as Scoble points out in another post, so maybe a paid, ad-free alternative makes sense?)

But there's another ugly limitation in this new AJAX API that I take issue with - there's no way to get back all the search results from Google with support for basic things like pagination, which the SOAP API did without a problem. The AJAX API limits you to a maximum of 8 results (that's right, eight!), beyond which your visitors/users have to click a "More results" link that takes them to the regular Google search results page (which obviously also display ads). So there's basically no way to create a custom search system that blends in with the look and feel of your blog/site or application. If you want more than the measly 8 results, you're getting redirected to Google's search results page. What kind of API is that? It takes away virtually every bit of customizability and control from the developer. Web developers who were using the AJAX API even before the SOAP API was deprecated have been asking for more than 8 results and pagination on Google's support group, but nothing has happened so far. A feature request for the same has been closed with the status "No Fix Planned." It's obviously not a technical hurdle, but a pure business decision - a classic case of when something that's good for a company is not good for its users.

This limitation is the reason why I won't even consider using the AJAX Search API here. Back when I decided to add a search box to this site, my first and most important requirement was that visitors would stay within this domain, and that search results would blend in with the rest of the site. If Google wants to take that away, Microsoft and Yahoo are waiting with open arms...at least for now? :)