Technorati: probably the worst and less reliable API service I have ever developed with!

December 30th, 2008. This post was published long time ago on the Italian version of my blog then moved here after the English blog has been opened. Please note that the following post can contain outdated information and (probably) multiple typos.

I have to admit I'm really frustrated with Technorati, in particular with its APIs. It's probably the worst API service I have ever developed with: let me explain why.

I'm not really a newbie in the web service field. I love XML stuff including feeds and APIs. I've developed many products and classes which interact with public web services via XML-RPC, SOAP o ReST based interfaces.

Technorati API are essentially unreliable. An API interface cannot take more than 10 seconds to return a response. If my website needs to send a query to Technorati, my visitor can't wait 15 seconds for a response! OK, there are many other ways I can improve my website, for instance with AJAX calls, but this is not the real problem!

I don't know where I could start to tell you how much I'm frustrated with Technorati API. OK, let's try to start from yesterday experience!

I'm developing Zend_Service_Technorati library, part of the Zend framework package. I'm really proud of it, Zend framework is the best library package for PHP I have ever used, thus I want my class to be reliable, powerful and easy to use.

After the proposal has been approved, I started to collect test cases to drive development. This is what I had to handle with:

Cosmos claim option is out of office, try again later

From cosmos documentation:

claim: The default setting of 0 returns no user information about each weblog included in the result set when available.

Set this parameter to 1 to include Technorati member data in the result set when a weblog in your result set has been successfully claimed by a member of Technorati.

Unfortunately, for somewhat reason Technorati decided this option doesn't work when type is weblog. Don't ask me why, that's the way it goes!

Before committing test cases, I decided to give an other chance to claim option. It wasn't the first time Technorati fails to return a response. For some-other reasons, it worked thus I had to create two test case for the same configuration. Then I tried for the third time and the option didn't worked again.

Technorati doesn't seem to know Google

A few minutes ago I decided to go ahead with development and create search test cases. I composed API URL in my browser and requested a search result for google keyword.

<result>
<query>google</query>
<querycount>0</querycount>
<rankingstart></rankingstart>
</result>

Gulp! This answer shocked me… Technorati doesn't have any post about Google?!? I tried again but unfortunately, each keyword returned 0 results.

OK, search interface is buggy, let me try with tag API. None, I'm sorry dear developer, I don't have any post tagged as google. Probably Technorati doesn't love Google, I supposes, thus I tried with other common words. No, this was not the problem. web tag didn't worked as well!

Contact us… if you can

First, let me say I tried to contact Technorati 3 times via support interface in the last 9 months for these problems, but I never received any answer! I hope this post will have enough visibility to be taken in consideration by someone from Technorati Office.

Because I don't want to criticize, I decided it was the time to try to contact Technorati for the 4th time. I haven't been really lucky with default contact us interface, thus I decided to try support website.

Let me login before. May be they give me more attention if I provide them my identity, I thought. This is what happened when I tried to login (more than 6 times).

This is not an error. This is what Technorati returned me: a blank page! Definitely, this is not my lucky day…

Really frustrated I decided to come back and try again API interface. I composed a simple search for google again: it worked! Cool, now let me try _msn: it works! _Great, I can work now, I thought.

Thus I decided to start with an error test case, as usual. I composed the following URI: http://api.technorati.com/search?key=MY_API_KEY. It should generate a "missing query argument" error. This is what the request returned.

I opened source code. Advanced Search page in HTML format was returned instead of a simple XML error: have a look at source.txt.