Pros and Cons of Outsourcing Your Apps to APIs

As applications become more useful to our everyday lives, they grow to become even more and more complex. Web applications often do tons of things, combining information in all kinds of interesting and useful ways. The increasing functionality of today's web puts a strain on developers trying to make everything run faster, smarter, and do more without melting servers in the process.

While some developers choose to create their own solutions, opting for more control and tighter integration with the rest of their app, many developers have chosen to "outsource" parts of their web applications to publicly available APIs. Almost every major information-centric service has opened up their system, via an API, to allow developers to leverage what they have to offer. What's out there is practically limitless and really gives developers a great deal of potential to build upon.

When developing your application, you should look to see what parts of your application could be better handled by another service. For example, if your web application grabs a user's location and shows a list of coffee shops nearby, you may want to leverage the Foursquare API or Gowalla API. Both companies have been building up a massive database of location data over the last few years. Why not leverage their APIs and let them do the hard work?

The Advantages

If you prefer to develop your own solutions, that's great. There's nothing wrong with it. Especially if you feel like you can do it better. Innovation is all about the better mousetrap. But consider the advantages to using APIs to power your web application.

It's cheaper — Many APIs are freely available. Consider the costs of developing your own mapping system versus leveraging Google Maps or Bing Maps. I can almost guarantee you the savings is enough to build your own Jurassic Park.

The work is (practically) done for you — Sure you could develop your own database of DVDs and collect tons of information on each movie in existence, but Amazon has already done this, and really doesn't mind sharing this information with your app, as long as enough look-ups turn to sales.

You can get up and running faster — If you're a startup, you may be working on borrowed time to get your app out and in to the hands of the masses. Leveraging the resources of the web may help save you months of development time.

The Disadvantages

While using APIs is a great idea, there are some things to be cautious about. Most importantly, you should always be concerned with how reliable the service you're piggy-backing off of is. Ask any developer who's been relying on Twitter APIs over the last few months and they'll share many horror stories of service outages and various other problems. This brings up another thing worth noting. It's not the service's responsibility to keep your app operational. A service can shut down or limit how you use its API at any time. Going back to Twitter, it recently stopped allowing basic authentication to its API, causing a few (very outdated, mind you) applications to stop working.

Where to Begin

Our API directory, of course. You can search by tag, category and several other options. Also, check out our "in a box" series on getting a boost up from APIs:

You can also follow ProgrammableWeb on Twitter to be notified when new APIs are added to the database (also available in our API RSS feed).

Be sure to read the next Best Practices article: Facebook Best Practices Straight From The Source


Comments (4)

Very good article. I can see many advantages and disadvantages along the lines of what you mentioned above. Overall I think the advantages out weigh the disadvantages because many things are too much to do for one person/team. Using APIs you can accomplish very much by tying it all together (but yes the disadvantages are there).

Also, I believe the "Marketing APIs" link is not correct.

Very nice post! Especially in the age of mobile mashups the rich set of Web API may have a application enabler we never had before. For example creating a simple JavaScript application (JQTouch or JQMobile) and deploying it on the mobile platforms (e.g. using PhoneGap) never been easier! One can do it literally in a day.