PHP COVID-19 Coronavirus Data via JSON

Want to add Coronavirus data to your website? It’s simple with PHP and JSON. There are numerous resources available to pull data from. For this example I will utilize the COVID Tracking Project API.

API Data

Visit the COVID Tracking Projects API page and find your State from the “States Current Values” option.

API URL Format

https://covidtracking.com/api/v1/states/STATEABBREVIATION/current.json

API URL Format Example (Virginia)

https://covidtracking.com/api/v1/states/VA/current.json

Test Your States API Link – the data returned should look simular to the following example;

{"state":"VA","positive":9952,"positiveScore":1,"negativeScore":1,"negativeRegularScore":1,"commercialScore":1,"grade":"A","score":4,"negative":50826,"pending":495,"hospitalizedCurrently":1374,"hospitalizedCumulative":1659,"inIcuCurrently":419,"inIcuCumulative":null,"onVentilatorCurrently":244,"onVentilatorCumulative":null,"recovered":1497,"lastUpdateEt":"4/22 00:00","checkTimeEt":"4/22 23:05","death":349,"hospitalized":1659,"total":61273,"totalTestResults":60778,"posNeg":60778,"fips":"51","dateModified":"2020-04-22T04:00:00Z","dateChecked":"2020-04-23T03:05:00Z","notes":"Please stop using the \"total\" field. Use \"totalTestResults\" instead.","hash":"d825dfd0831d0e270650be1f3ccd6a3758c5ade8"}

PHP Data

  • Use cURL to make the request via your API URL determined above to get get the JSON data
    • Note: You must have the cURL extension enabled in your PHP environment
  • Use json_decode to decode the JSON data
  • Assign variables to the decoded JSON dataset
  • Print (echo) the variables

Complete PHP Example

<?php
/*
Sample Code Created by SullysRants.com
*/

// The COVID Tracking Project (https://covidtracking.com/api)
$API_Data = "https://covidtracking.com/api/v1/states/VA/current.json";

// cURL Options
$ch = curl_init($API_Data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$response = curl_exec($ch);

// Decode the Response
$result = json_decode($response);

// Variables for Respone Data
$Positive = $result->positive;
$Negative = $result->negative;
$Pending= $result->pending;
$Hospital_Currently = $result->hospitalizedCurrently;
$Hospital_Total = $result->hospitalized;
$ICU_Currently = $result->inIcuCurrently;
$Ventilator_Currenlty = $result->onVentilatorCurrently;
$Recovered = $result->recovered;
$Deaths = $result->death;
$Updated = strtotime($result->dateModified);
$Last_Updated = date("m/d/y - h:i", $Updated);

// Display the Data
echo "<p>Testing</p>";
echo "Positive: " .$Positive. "<br>";
echo "Negative: " .$Negative. "<br>";
echo "Pending: " .$Pending;
echo "<p>Hospitalization</p>";
echo "Current Hospitalizations: " .$ICU_Currently. "<br>";
echo "Current In ICU: " .$Ventilator_Currenlty. "<br>";
echo "Current On Ventilator: " .$Ventilator_Currenlty. "<br>";
echo "Total Hospitalizations: " .$Hospital_Total. "<br>";
echo "<p>Recovery/Fatality</p>";
echo "Recovered: " .$Recovered. "<br>";
echo "Deaths: " .$Deaths;
echo "<p>Updated</p>";
echo"Last Update: ".$Last_Updated;
?>

Example Output

Example Output