Caching results from an API via drupal_http_request
You could use the Drupal's cache API to store the response doing something like:

if (!cache_get('my_module_cache')) {
  $data = drupal_http_request($url, $options); // Add the param for the request to web service
  cache_set('my_module_cache', $data, 'cache',  REQUEST_TIME  + (3600 * 24 * 30 * 6)); // Stores in cache table and expires after 6 months
  return($data);
} else {
  $return = cache_get('my_module_cache');
  return($return-&gt;data);
}


Depending on how many times you need to get that cached value on same execution, you could also use drupal_static().

On the example that I provided above, the expire policy is only based on time (6 months), in your case, you will need to analyse carefully the expire policy you are going to implement to expire/renew the cached value.

Lullabot has a great article about Drupal cache: A beginner's guide to caching data