It might help creating a simple php script to debug this:
The following should be created and run on the server so the whois originates from the server ip.
$post_data = array(
'username' => 'your username',
'password' => 'your password',
'accesskey' => 'your access key if ip restriction isn\'t set',
'action' => 'domainwhois',
'domain' => 'domain.co.za'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://url/to/whmcs/includes/api.php');
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
preg_match('/^result=success;status=(available|unavailable);whois=(.*)$/i', $response, $matches);
$status = $matches[1];
$whois_data = urldecode($matches[2]);
echo 'STATUS: ' . $status . '<br /><br />';
echo 'WHOIS DATA:<br />';
echo $whois_data;
I suspect you may be getting a 'Data mining count exceeded from IP Address XXX.XXX.XXX>XXX.' error, in which case, there's nothing you can really do.
I just tried about 7 whois from my own IP and received this error, so it looks like there threshold is rather low.