Search code examples
phpjsoncoinmarketcap

Coinmarketcap PHP API no data returned


Just a simple test to get some data via API doensn't work. I use the PHP example from their own website, but no result is printed. Source: https://pro.coinmarketcap.com/api/v1#section/Quick-Start-Guide Is there anything I do wrong? I use the sandbox-environment with the demo API key. Curl is installed at my server. Thanks a lot!

<?php
$url = 'https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest';
$parameters = [
  'start' => '1',
  'limit' => '5000',
  'convert' => 'USD'
];

$headers = [
  'Accepts: application/json',
  'X-CMC_PRO_API_KEY: b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c'
];
$qs = http_build_query($parameters); // query string encode the parameters
$request = "{$url}?{$qs}"; // create the request URL


$curl = curl_init(); // Get cURL resource
// Set cURL options
curl_setopt_array($curl, array(
  CURLOPT_URL => $request,            // set the request URL
  CURLOPT_HTTPHEADER => $headers,     // set the headers 
  CURLOPT_RETURNTRANSFER => 1         // ask for raw response instead of bool
));

$response = curl_exec($curl); // Send the request, save the response
print_r(json_decode($response)); // print json decoded response
curl_close($curl); // Close request
?>

Solution

  • When I var_dump($response) I'm getting:

    error code: 1020
    

    This is caused by the API detecting a bot/script.


    Consider adding a user agent:
    PHP cURL how to add the User Agent value OR overcome the Servers blocking cURL requests?

    curl_setopt_array($curl, array(
        CURLOPT_URL => $request,
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0'
    ));
    

    Now, the script outputs:

    stdClass Object
    (
        [status] => stdClass Object
            (
                [timestamp] => 2021-08-30T15:06:20.200Z
                [error_code] => 0
                [error_message] =>
                [elapsed] => 0
                [credit_count] => 1
                [notice] =>
            )
    
        [data] => Array
            ... and a lot more ...