Java and RapidAPI use case

APIs and tooling like Jupyter docs allows many opportunities in fields like Data Science. As more and more developers use APIs, they build standards in how you setup a client, send requests and receive information...

  • An HttpClient can be used to send requests and retrieve their responses
  • An HttpRequest sets up header and body to API provider
  • An HttpResponse is returned as a result of sending an HttpRequest

Typically a response body will be received, if all goes well Next step, is to format the response body according to your data science needs

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

//RapidAPI header  https://rapidapi.com/spamakashrajtech/api/corona-virus-world-and-india-data
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://corona-virus-world-and-india-data.p.rapidapi.com/api"))
    .header("x-rapidapi-key", "dec069b877msh0d9d0827664078cp1a18fajsn2afac35ae063")
    .header("x-rapidapi-host", "corona-virus-world-and-india-data.p.rapidapi.com")
    .method("GET", HttpRequest.BodyPublishers.noBody())
    .build();

//RapidAPI request and response
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());

//RapidAPI Body
System.out.println(response.body());
{"countries_stat":[{"country_name":"USA","cases":"82,649,779","deaths":"1,018,316","region":"","total_recovered":"80,434,925","new_deaths":"0","new_cases":"0","serious_critical":"1,465","active_cases":"1,196,538","total_cases_per_1m_population":"247,080","deaths_per_1m_population":"3,044","total_tests":"1,000,275,726","tests_per_1m_population":"2,990,303"},{"country_name":"India","cases":"43,057,545","deaths":"522,193","region":"","total_recovered":"42,519,479","new_deaths":"0","new_cases":"0","serious_critical":"698","active_cases":"15,873","total_cases_per_1m_population":"30,657","deaths_per_1m_population":"372","total_tests":"834,717,702","tests_per_1m_population":"594,319"},{"country_name":"Brazil","cases":"30,345,654","deaths":"662,663","region":"","total_recovered":"29,364,400","new_deaths":"0","new_cases":"0","serious_critical":"8,318","active_cases":"318,591","total_cases_per_1m_population":"140,954","deaths_per_1m_population":"3,078","total_tests":"63,776,166","tests_per_1m_population":"296,238"},{"country_name":"France","cases":"28,244,977","deaths":"145,020","region":"","total_recovered":"25,852,832","new_deaths":"0","new_cases":"0","serious_critical":"1,677","active_cases":"2,247,125","total_cases_per_1m_population":"430,996","deaths_per_1m_population":"2,213","total_tests":"266,484,045","tests_per_1m_population":"4,066,333"},{"country_name":"Germany","cases":"24,109,433","deaths":"134,624","region":"","total_recovered":"21,243,000","new_deaths":"0","new_cases":"0","serious_critical":"1,980","active_cases":"2,731,809","total_cases_per_1m_population":"286,106","deaths_per_1m_population":"1,598","total_tests":"122,332,384","tests_per_1m_population":"1,451,714"},{"country_name":"UK","cases":"21,933,206","deaths":"173,352","region":"","total_recovered":"20,782,350","new_deaths":"0","new_cases":"0","serious_critical":"339","active_cases":"977,504","total_cases_per_1m_population":"320,054","deaths_per_1m_population":"2,530","total_tests":"514,985,782","tests_per_1m_population":"7,514,777"},{"country_name":"Russia","cases":"18,137,137","deaths":"374,902","region":"","total_recovered":"17,474,628","new_deaths":"168","new_cases":"8,446","serious_critical":"2,300","active_cases":"287,607","total_cases_per_1m_population":"124,187","deaths_per_1m_population":"2,567","total_tests":"273,400,000","tests_per_1m_population":"1,871,995"},{"country_name":"S. Korea","cases":"16,895,194","deaths":"22,133","region":"","total_recovered":"N\/A","new_deaths":"109","new_cases":"64,725","serious_critical":"726","active_cases":"N\/A","total_cases_per_1m_population":"329,028","deaths_per_1m_population":"431","total_tests":"15,804,065","tests_per_1m_population":"307,778"},{"country_name":"Italy","cases":"16,079,209","deaths":"162,609","region":"","total_recovered":"14,684,371","new_deaths":"0","new_cases":"0","serious_critical":"409","active_cases":"1,232,229","total_cases_per_1m_population":"266,648","deaths_per_1m_population":"2,697","total_tests":"211,365,630","tests_per_1m_population":"3,505,156"},{"country_name":"Turkey","cases":"15,016,270","deaths":"98,676","region":"","total_recovered":"14,854,475","new_deaths":"0","new_cases":"0","serious_critical":"975","active_cases":"63,119","total_cases_per_1m_population":"174,654","deaths_per_1m_population":"1,148","total_tests":"158,110,923","tests_per_1m_population":"1,838,986"},{"country_name":"Spain","cases":"11,786,036","deaths":"103,908","region":"","total_recovered":"11,261,340","new_deaths":"0","new_cases":"0","serious_critical":"339","active_cases":"420,788","total_cases_per_1m_population":"251,906","deaths_per_1m_population":"2,221","total_tests":"471,036,328","tests_per_1m_population":"10,067,575"},{"country_name":"Vietnam","cases":"10,563,502","deaths":"43,013","region":"","total_recovered":"9,086,075","new_deaths":"9","new_cases":"8,813","serious_critical":"612","active_cases":"1,434,414","total_cases_per_1m_population":"106,789","deaths_per_1m_population":"435","total_tests":"85,789,114","tests_per_1m_population":"867,262"},{"country_name":"Argentina","cases":"9,060,923","deaths":"128,344","region":"","total_recovered":"8,895,999","new_deaths":"0","new_cases":"0","serious_critical":"412","active_cases":"36,580","total_cases_per_1m_population":"197,215","deaths_per_1m_population":"2,793","total_tests":"35,716,069","tests_per_1m_population":"777,376"},{"country_name":"Netherlands","cases":"8,035,603","deaths":"22,206","region":"","total_recovered":"7,643,520","new_deaths":"0","new_cases":"0","serious_critical":"94","active_cases":"369,877","total_cases_per_1m_population":"467,096","deaths_per_1m_population":"1,291","total_tests":"21,107,399","tests_per_1m_population":"1,226,938"},{"country_name":"Japan","cases":"7,621,562","deaths":"29,284","region":"","total_recovered":"7,135,403","new_deaths":"27","new_cases":"43,721","serious_critical":"195","active_cases":"456,875","total_cases_per_1m_population":"60,596","deaths_per_1m_population":"233","total_tests":"46,690,473","tests_per_1m_population":"371,215"},{"country_name":"Iran","cases":"7,216,040","deaths":"140,975","region":"","total_recovered":"6,966,954","new_deaths":"13","new_cases":"528","serious_critical":"1,046","active_cases":"108,111","total_cases_per_1m_population":"83,972","deaths_per_1m_population":"1,641","total_tests":"50,811,054","tests_per_1m_population":"591,284"},{"country_name":"Colombia","cases":"6,091,094","deaths":"139,771","region":"","total_recovered":"5,924,433","new_deaths":"0","new_cases":"0","serious_critical":"342","active_cases":"26,890","total_cases_per_1m_population":"117,448","deaths_per_1m_population":"2,695","total_tests":"34,355,022","tests_per_1m_population":"662,433"},{"country_name":"Indonesia","cases":"6,043,768","deaths":"156,067","region":"","total_recovered":"5,868,251","new_deaths":"0","new_cases":"0","serious_critical":"2,771","active_cases":"19,450","total_cases_per_1m_population":"21,682","deaths_per_1m_population":"560","total_tests":"94,877,499","tests_per_1m_population":"340,374"},{"country_name":"Poland","cases":"5,991,197","deaths":"115,948","region":"","total_recovered":"5,334,375","new_deaths":"0","new_cases":"344","serious_critical":"1,588","active_cases":"540,874","total_cases_per_1m_population":"158,616","deaths_per_1m_population":"3,070","total_tests":"36,027,053","tests_per_1m_population":"953,808"},{"country_name":"Mexico","cases":"5,733,514","deaths":"324,117","region":"","total_recovered":"5,033,892","new_deaths":"57","new_cases":"802","serious_critical":"4,798","active_cases":"375,505","total_cases_per_1m_population":"43,641","deaths_per_1m_population":"2,467","total_tests":"15,762,889","tests_per_1m_population":"119,981"},{"country_name":"Australia","cases":"5,689,377","deaths":"6,991","region":"","total_recovered":"5,274,197","new_deaths":"21","new_cases":"34,769","serious_critical":"135","active_cases":"408,189","total_cases_per_1m_population":"218,537","deaths_per_1m_population":"269","total_tests":"68,845,476","tests_per_1m_population":"2,644,452"},{"country_name":"Ukraine","cases":"4,997,224","deaths":"108,306","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"177","active_cases":"N\/A","total_cases_per_1m_population":"115,517","deaths_per_1m_population":"2,504","total_tests":"19,521,252","tests_per_1m_population":"451,259"},{"country_name":"Malaysia","cases":"4,427,067","deaths":"35,491","region":"","total_recovered":"4,310,599","new_deaths":"0","new_cases":"0","serious_critical":"89","active_cases":"80,977","total_cases_per_1m_population":"133,690","deaths_per_1m_population":"1,072","total_tests":"58,332,799","tests_per_1m_population":"1,761,549"},{"country_name":"Thailand","cases":"4,165,874","deaths":"27,778","region":"","total_recovered":"3,954,945","new_deaths":"126","new_cases":"17,784","serious_critical":"1,496","active_cases":"183,151","total_cases_per_1m_population":"59,414","deaths_per_1m_population":"396","total_tests":"17,270,775","tests_per_1m_population":"246,317"},{"country_name":"Austria","cases":"4,104,859","deaths":"18,047","region":"","total_recovered":"3,989,860","new_deaths":"12","new_cases":"5,810","serious_critical":"121","active_cases":"96,952","total_cases_per_1m_population":"451,125","deaths_per_1m_population":"1,983","total_tests":"181,825,734","tests_per_1m_population":"19,982,688"},{"country_name":"Israel","cases":"4,054,342","deaths":"10,658","region":"","total_recovered":"4,009,152","new_deaths":"0","new_cases":"0","serious_critical":"220","active_cases":"34,532","total_cases_per_1m_population":"434,735","deaths_per_1m_population":"1,143","total_tests":"41,373,364","tests_per_1m_population":"4,436,346"},{"country_name":"Belgium","cases":"4,015,791","deaths":"31,319","region":"","total_recovered":"3,726,457","new_deaths":"0","new_cases":"0","serious_critical":"169","active_cases":"258,015","total_cases_per_1m_population":"343,798","deaths_per_1m_population":"2,681","total_tests":"33,456,470","tests_per_1m_population":"2,864,259"},{"country_name":"Czechia","cases":"3,895,544","deaths":"40,081","region":"","total_recovered":"3,838,099","new_deaths":"5","new_cases":"911","serious_critical":"43","active_cases":"17,364","total_cases_per_1m_population":"362,550","deaths_per_1m_population":"3,730","total_tests":"55,117,064","tests_per_1m_population":"5,129,629"},{"country_name":"Portugal","cases":"3,791,744","deaths":"22,162","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"61","active_cases":"N\/A","total_cases_per_1m_population":"373,827","deaths_per_1m_population":"2,185","total_tests":"40,748,372","tests_per_1m_population":"4,017,371"},{"country_name":"South Africa","cases":"3,759,689","deaths":"100,298","region":"","total_recovered":"3,632,572","new_deaths":"0","new_cases":"0","serious_critical":"175","active_cases":"26,819","total_cases_per_1m_population":"61,981","deaths_per_1m_population":"1,653","total_tests":"24,313,334","tests_per_1m_population":"400,824"},{"country_name":"Canada","cases":"3,695,585","deaths":"38,777","region":"","total_recovered":"3,426,082","new_deaths":"0","new_cases":"0","serious_critical":"426","active_cases":"230,726","total_cases_per_1m_population":"96,391","deaths_per_1m_population":"1,011","total_tests":"60,536,359","tests_per_1m_population":"1,578,955"},{"country_name":"Philippines","cases":"3,684,500","deaths":"60,182","region":"","total_recovered":"3,610,658","new_deaths":"3","new_cases":"205","serious_critical":"289","active_cases":"13,660","total_cases_per_1m_population":"32,835","deaths_per_1m_population":"536","total_tests":"29,427,586","tests_per_1m_population":"262,246"},{"country_name":"Switzerland","cases":"3,579,867","deaths":"13,816","region":"","total_recovered":"3,378,507","new_deaths":"0","new_cases":"0","serious_critical":"90","active_cases":"187,544","total_cases_per_1m_population":"408,247","deaths_per_1m_population":"1,576","total_tests":"20,666,182","tests_per_1m_population":"2,356,766"},{"country_name":"Peru","cases":"3,559,343","deaths":"212,724","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"356","active_cases":"N\/A","total_cases_per_1m_population":"105,303","deaths_per_1m_population":"6,293","total_tests":"29,592,270","tests_per_1m_population":"875,489"},{"country_name":"Chile","cases":"3,544,463","deaths":"57,375","region":"","total_recovered":"3,368,772","new_deaths":"0","new_cases":"0","serious_critical":"286","active_cases":"118,316","total_cases_per_1m_population":"182,588","deaths_per_1m_population":"2,956","total_tests":"36,711,724","tests_per_1m_population":"1,891,147"},{"country_name":"Greece","cases":"3,277,557","deaths":"28,867","region":"","total_recovered":"3,151,717","new_deaths":"0","new_cases":"0","serious_critical":"277","active_cases":"96,973","total_cases_per_1m_population":"317,250","deaths_per_1m_population":"2,794","total_tests":"78,872,546","tests_per_1m_population":"7,634,431"},{"country_name":"Denmark","cases":"2,959,040","deaths":"6,072","region":"","total_recovered":"2,929,091","new_deaths":"0","new_cases":"0","serious_critical":"15","active_cases":"23,877","total_cases_per_1m_population":"507,639","deaths_per_1m_population":"1,042","total_tests":"127,141,200","tests_per_1m_population":"21,811,751"},{"country_name":"Romania","cases":"2,888,318","deaths":"65,427","region":"","total_recovered":"2,606,660","new_deaths":"6","new_cases":"494","serious_critical":"216","active_cases":"216,231","total_cases_per_1m_population":"151,968","deaths_per_1m_population":"3,442","total_tests":"22,594,702","tests_per_1m_population":"1,188,815"},{"country_name":"Sweden","cases":"2,498,388","deaths":"18,656","region":"","total_recovered":"2,464,421","new_deaths":"0","new_cases":"0","serious_critical":"19","active_cases":"15,311","total_cases_per_1m_population":"244,630","deaths_per_1m_population":"1,827","total_tests":"18,493,218","tests_per_1m_population":"1,810,763"},{"country_name":"Iraq","cases":"2,324,141","deaths":"25,204","region":"","total_recovered":"2,295,947","new_deaths":"0","new_cases":"0","serious_critical":"20","active_cases":"2,990","total_cases_per_1m_population":"55,534","deaths_per_1m_population":"602","total_tests":"18,450,939","tests_per_1m_population":"440,871"},{"country_name":"Serbia","cases":"2,001,144","deaths":"15,953","region":"","total_recovered":"1,967,786","new_deaths":"0","new_cases":"0","serious_critical":"25","active_cases":"17,405","total_cases_per_1m_population":"230,710","deaths_per_1m_population":"1,839","total_tests":"9,427,662","tests_per_1m_population":"1,086,907"},{"country_name":"Bangladesh","cases":"1,952,532","deaths":"29,127","region":"","total_recovered":"1,893,131","new_deaths":"0","new_cases":"0","serious_critical":"1,297","active_cases":"30,274","total_cases_per_1m_population":"11,646","deaths_per_1m_population":"174","total_tests":"13,956,056","tests_per_1m_population":"83,245"},{"country_name":"Hungary","cases":"1,890,953","deaths":"46,048","region":"","total_recovered":"1,776,617","new_deaths":"0","new_cases":"0","serious_critical":"45","active_cases":"68,288","total_cases_per_1m_population":"196,645","deaths_per_1m_population":"4,789","total_tests":"11,295,119","tests_per_1m_population":"1,174,608"},{"country_name":"Slovakia","cases":"1,774,808","deaths":"19,839","region":"","total_recovered":"1,730,712","new_deaths":"10","new_cases":"1,155","serious_critical":"88","active_cases":"24,257","total_cases_per_1m_population":"324,794","deaths_per_1m_population":"3,631","total_tests":"7,057,901","tests_per_1m_population":"1,291,611"},{"country_name":"Jordan","cases":"1,694,216","deaths":"14,048","region":"","total_recovered":"1,678,941","new_deaths":"0","new_cases":"0","serious_critical":"124","active_cases":"1,227","total_cases_per_1m_population":"163,125","deaths_per_1m_population":"1,353","total_tests":"16,670,254","tests_per_1m_population":"1,605,074"},{"country_name":"Georgia","cases":"1,654,255","deaths":"16,800","region":"","total_recovered":"1,635,791","new_deaths":"3","new_cases":"92","serious_critical":"0","active_cases":"1,664","total_cases_per_1m_population":"416,129","deaths_per_1m_population":"4,226","total_tests":"16,807,205","tests_per_1m_population":"4,227,861"},{"country_name":"Pakistan","cases":"1,527,856","deaths":"30,369","region":"","total_recovered":"1,493,998","new_deaths":"0","new_cases":"105","serious_critical":"186","active_cases":"3,489","total_cases_per_1m_population":"6,683","deaths_per_1m_population":"133","total_tests":"28,048,307","tests_per_1m_population":"122,679"},{"country_name":"Ireland","cases":"1,509,536","deaths":"6,996","region":"","total_recovered":"1,415,949","new_deaths":"0","new_cases":"0","serious_critical":"41","active_cases":"86,591","total_cases_per_1m_population":"299,669","deaths_per_1m_population":"1,389","total_tests":"12,016,948","tests_per_1m_population":"2,385,571"},{"country_name":"Norway","cases":"1,423,509","deaths":"2,871","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"20","active_cases":"N\/A","total_cases_per_1m_population":"258,925","deaths_per_1m_population":"522","total_tests":"11,002,430","tests_per_1m_population":"2,001,256"},{"country_name":"Kazakhstan","cases":"1,305,457","deaths":"13,660","region":"","total_recovered":"1,290,988","new_deaths":"0","new_cases":"10","serious_critical":"24","active_cases":"809","total_cases_per_1m_population":"68,056","deaths_per_1m_population":"712","total_tests":"11,575,012","tests_per_1m_population":"603,428"},{"country_name":"Hong Kong","cases":"1,201,431","deaths":"9,236","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"115","active_cases":"N\/A","total_cases_per_1m_population":"157,942","deaths_per_1m_population":"1,214","total_tests":"44,972,952","tests_per_1m_population":"5,912,223"},{"country_name":"Singapore","cases":"1,180,124","deaths":"1,325","region":"","total_recovered":"1,109,387","new_deaths":"0","new_cases":"0","serious_critical":"9","active_cases":"69,412","total_cases_per_1m_population":"198,895","deaths_per_1m_population":"223","total_tests":"23,712,995","tests_per_1m_population":"3,996,529"},{"country_name":"Morocco","cases":"1,164,670","deaths":"16,065","region":"","total_recovered":"1,148,154","new_deaths":"0","new_cases":"0","serious_critical":"293","active_cases":"451","total_cases_per_1m_population":"30,893","deaths_per_1m_population":"426","total_tests":"11,237,010","tests_per_1m_population":"298,062"},{"country_name":"Bulgaria","cases":"1,152,892","deaths":"36,849","region":"","total_recovered":"959,542","new_deaths":"0","new_cases":"0","serious_critical":"105","active_cases":"156,501","total_cases_per_1m_population":"168,206","deaths_per_1m_population":"5,376","total_tests":"9,797,011","tests_per_1m_population":"1,429,377"},{"country_name":"Croatia","cases":"1,117,175","deaths":"15,778","region":"","total_recovered":"1,096,829","new_deaths":"0","new_cases":"0","serious_critical":"22","active_cases":"4,568","total_cases_per_1m_population":"275,195","deaths_per_1m_population":"3,887","total_tests":"4,762,146","tests_per_1m_population":"1,173,065"},{"country_name":"Cuba","cases":"1,101,486","deaths":"8,523","region":"","total_recovered":"1,091,603","new_deaths":"0","new_cases":"0","serious_critical":"23","active_cases":"1,360","total_cases_per_1m_population":"97,355","deaths_per_1m_population":"753","total_tests":"12,920,253","tests_per_1m_population":"1,141,957"},{"country_name":"Lebanon","cases":"1,096,320","deaths":"10,374","region":"","total_recovered":"1,079,455","new_deaths":"0","new_cases":"0","serious_critical":"186","active_cases":"6,491","total_cases_per_1m_population":"161,931","deaths_per_1m_population":"1,532","total_tests":"4,795,578","tests_per_1m_population":"708,328"},{"country_name":"Lithuania","cases":"1,054,618","deaths":"9,063","region":"","total_recovered":"1,016,510","new_deaths":"9","new_cases":"427","serious_critical":"31","active_cases":"29,045","total_cases_per_1m_population":"397,407","deaths_per_1m_population":"3,415","total_tests":"8,217,113","tests_per_1m_population":"3,096,414"},{"country_name":"Tunisia","cases":"1,039,532","deaths":"28,533","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"29","active_cases":"N\/A","total_cases_per_1m_population":"86,327","deaths_per_1m_population":"2,369","total_tests":"4,563,397","tests_per_1m_population":"378,962"},{"country_name":"Slovenia","cases":"1,003,970","deaths":"6,576","region":"","total_recovered":"980,501","new_deaths":"0","new_cases":"0","serious_critical":"30","active_cases":"16,893","total_cases_per_1m_population":"482,805","deaths_per_1m_population":"3,162","total_tests":"2,640,107","tests_per_1m_population":"1,269,615"},{"country_name":"Finland","cases":"1,000,472","deaths":"3,638","region":"","total_recovered":"46,000","new_deaths":"0","new_cases":"0","serious_critical":"31","active_cases":"950,834","total_cases_per_1m_population":"180,062","deaths_per_1m_population":"655","total_tests":"10,644,579","tests_per_1m_population":"1,915,782"},{"country_name":"Nepal","cases":"978,743","deaths":"11,951","region":"","total_recovered":"966,523","new_deaths":"0","new_cases":"11","serious_critical":"0","active_cases":"269","total_cases_per_1m_population":"32,535","deaths_per_1m_population":"397","total_tests":"5,616,752","tests_per_1m_population":"186,711"},{"country_name":"Belarus","cases":"977,434","deaths":"6,922","region":"","total_recovered":"928,536","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"41,976","total_cases_per_1m_population":"103,501","deaths_per_1m_population":"733","total_tests":"13,092,771","tests_per_1m_population":"1,386,401"},{"country_name":"Bolivia","cases":"904,377","deaths":"21,908","region":"","total_recovered":"855,123","new_deaths":"1","new_cases":"83","serious_critical":"220","active_cases":"27,346","total_cases_per_1m_population":"75,614","deaths_per_1m_population":"1,832","total_tests":"2,693,845","tests_per_1m_population":"225,230"},{"country_name":"UAE","cases":"897,136","deaths":"2,302","region":"","total_recovered":"879,787","new_deaths":"0","new_cases":"244","serious_critical":"0","active_cases":"15,047","total_cases_per_1m_population":"88,772","deaths_per_1m_population":"228","total_tests":"154,420,740","tests_per_1m_population":"15,279,961"},{"country_name":"Uruguay","cases":"895,775","deaths":"7,197","region":"","total_recovered":"886,654","new_deaths":"0","new_cases":"0","serious_critical":"18","active_cases":"1,924","total_cases_per_1m_population":"256,268","deaths_per_1m_population":"2,059","total_tests":"6,091,188","tests_per_1m_population":"1,742,599"},{"country_name":"New Zealand","cases":"884,289","deaths":"636","region":"","total_recovered":"824,272","new_deaths":"9","new_cases":"5,714","serious_critical":"0","active_cases":"59,381","total_cases_per_1m_population":"176,784","deaths_per_1m_population":"127","total_tests":"6,983,031","tests_per_1m_population":"1,396,020"},{"country_name":"Ecuador","cases":"868,053","deaths":"35,581","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"759","active_cases":"N\/A","total_cases_per_1m_population":"47,888","deaths_per_1m_population":"1,963","total_tests":"2,470,170","tests_per_1m_population":"136,273"},{"country_name":"Costa Rica","cases":"847,784","deaths":"8,383","region":"","total_recovered":"829,515","new_deaths":"0","new_cases":"0","serious_critical":"43","active_cases":"9,886","total_cases_per_1m_population":"163,725","deaths_per_1m_population":"1,619","total_tests":"4,240,743","tests_per_1m_population":"818,979"},{"country_name":"Guatemala","cases":"841,341","deaths":"17,496","region":"","total_recovered":"821,185","new_deaths":"0","new_cases":"0","serious_critical":"5","active_cases":"2,660","total_cases_per_1m_population":"45,444","deaths_per_1m_population":"945","total_tests":"4,402,305","tests_per_1m_population":"237,787"},{"country_name":"Latvia","cases":"817,316","deaths":"5,743","region":"","total_recovered":"803,135","new_deaths":"0","new_cases":"322","serious_critical":"9","active_cases":"8,438","total_cases_per_1m_population":"442,135","deaths_per_1m_population":"3,107","total_tests":"7,154,016","tests_per_1m_population":"3,870,035"},{"country_name":"Azerbaijan","cases":"792,476","deaths":"9,707","region":"","total_recovered":"782,634","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"135","total_cases_per_1m_population":"76,908","deaths_per_1m_population":"942","total_tests":"6,792,132","tests_per_1m_population":"659,165"},{"country_name":"Panama","cases":"771,486","deaths":"8,182","region":"","total_recovered":"759,832","new_deaths":"0","new_cases":"0","serious_critical":"8","active_cases":"3,472","total_cases_per_1m_population":"173,862","deaths_per_1m_population":"1,844","total_tests":"5,820,472","tests_per_1m_population":"1,311,699"},{"country_name":"Saudi Arabia","cases":"753,332","deaths":"9,076","region":"","total_recovered":"740,467","new_deaths":"0","new_cases":"0","serious_critical":"45","active_cases":"3,789","total_cases_per_1m_population":"21,047","deaths_per_1m_population":"254","total_tests":"41,817,866","tests_per_1m_population":"1,168,345"},{"country_name":"Sri Lanka","cases":"663,131","deaths":"16,502","region":"","total_recovered":"642,574","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"4,055","total_cases_per_1m_population":"30,736","deaths_per_1m_population":"765","total_tests":"6,486,117","tests_per_1m_population":"300,627"},{"country_name":"Paraguay","cases":"649,034","deaths":"18,795","region":"","total_recovered":"624,673","new_deaths":"0","new_cases":"0","serious_critical":"5","active_cases":"5,566","total_cases_per_1m_population":"89,022","deaths_per_1m_population":"2,578","total_tests":"2,623,300","tests_per_1m_population":"359,816"},{"country_name":"Kuwait","cases":"631,294","deaths":"2,555","region":"","total_recovered":"627,899","new_deaths":"0","new_cases":"0","serious_critical":"8","active_cases":"840","total_cases_per_1m_population":"143,981","deaths_per_1m_population":"583","total_tests":"7,999,656","tests_per_1m_population":"1,824,506"},{"country_name":"Myanmar","cases":"612,733","deaths":"19,434","region":"","total_recovered":"591,609","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1,690","total_cases_per_1m_population":"11,127","deaths_per_1m_population":"353","total_tests":"7,891,077","tests_per_1m_population":"143,296"},{"country_name":"Palestine","cases":"581,816","deaths":"5,353","region":"","total_recovered":"575,899","new_deaths":"0","new_cases":"0","serious_critical":"17","active_cases":"564","total_cases_per_1m_population":"109,459","deaths_per_1m_population":"1,007","total_tests":"3,078,533","tests_per_1m_population":"579,175"},{"country_name":"Dominican Republic","cases":"578,954","deaths":"4,376","region":"","total_recovered":"574,297","new_deaths":"0","new_cases":"0","serious_critical":"16","active_cases":"281","total_cases_per_1m_population":"52,421","deaths_per_1m_population":"396","total_tests":"3,261,060","tests_per_1m_population":"295,272"},{"country_name":"Estonia","cases":"570,257","deaths":"2,531","region":"","total_recovered":"507,474","new_deaths":"0","new_cases":"181","serious_critical":"7","active_cases":"60,252","total_cases_per_1m_population":"429,364","deaths_per_1m_population":"1,906","total_tests":"3,311,935","tests_per_1m_population":"2,493,655"},{"country_name":"Bahrain","cases":"565,830","deaths":"1,475","region":"","total_recovered":"560,795","new_deaths":"0","new_cases":"0","serious_critical":"3","active_cases":"3,560","total_cases_per_1m_population":"312,916","deaths_per_1m_population":"816","total_tests":"9,695,962","tests_per_1m_population":"5,362,081"},{"country_name":"Venezuela","cases":"522,121","deaths":"5,705","region":"","total_recovered":"515,305","new_deaths":"0","new_cases":"0","serious_critical":"230","active_cases":"1,111","total_cases_per_1m_population":"18,456","deaths_per_1m_population":"202","total_tests":"3,359,014","tests_per_1m_population":"118,733"},{"country_name":"Moldova","cases":"516,986","deaths":"11,489","region":"","total_recovered":"504,142","new_deaths":"0","new_cases":"0","serious_critical":"49","active_cases":"1,355","total_cases_per_1m_population":"128,698","deaths_per_1m_population":"2,860","total_tests":"3,216,305","tests_per_1m_population":"800,665"},{"country_name":"Egypt","cases":"515,645","deaths":"24,613","region":"","total_recovered":"442,182","new_deaths":"0","new_cases":"0","serious_critical":"122","active_cases":"48,850","total_cases_per_1m_population":"4,873","deaths_per_1m_population":"233","total_tests":"3,693,367","tests_per_1m_population":"34,903"},{"country_name":"Libya","cases":"501,862","deaths":"6,429","region":"","total_recovered":"490,900","new_deaths":"0","new_cases":"0","serious_critical":"101","active_cases":"4,533","total_cases_per_1m_population":"71,288","deaths_per_1m_population":"913","total_tests":"2,476,960","tests_per_1m_population":"351,844"},{"country_name":"Cyprus","cases":"470,481","deaths":"1,011","region":"","total_recovered":"124,370","new_deaths":"0","new_cases":"0","serious_critical":"60","active_cases":"345,100","total_cases_per_1m_population":"384,623","deaths_per_1m_population":"827","total_tests":"9,477,138","tests_per_1m_population":"7,747,665"},{"country_name":"Ethiopia","cases":"470,417","deaths":"7,510","region":"","total_recovered":"454,967","new_deaths":"0","new_cases":"0","serious_critical":"15","active_cases":"7,940","total_cases_per_1m_population":"3,917","deaths_per_1m_population":"63","total_tests":"4,763,756","tests_per_1m_population":"39,665"},{"country_name":"Mongolia","cases":"469,580","deaths":"2,177","region":"","total_recovered":"313,256","new_deaths":"0","new_cases":"30","serious_critical":"192","active_cases":"154,147","total_cases_per_1m_population":"139,194","deaths_per_1m_population":"645","total_tests":"4,030,048","tests_per_1m_population":"1,194,595"},{"country_name":"Armenia","cases":"422,825","deaths":"8,622","region":"","total_recovered":"410,558","new_deaths":"0","new_cases":"3","serious_critical":"0","active_cases":"3,645","total_cases_per_1m_population":"142,210","deaths_per_1m_population":"2,900","total_tests":"3,035,104","tests_per_1m_population":"1,020,807"},{"country_name":"Honduras","cases":"422,275","deaths":"10,892","region":"","total_recovered":"131,100","new_deaths":"0","new_cases":"0","serious_critical":"105","active_cases":"280,283","total_cases_per_1m_population":"41,445","deaths_per_1m_population":"1,069","total_tests":"1,263,329","tests_per_1m_population":"123,991"},{"country_name":"Oman","cases":"388,995","deaths":"4,257","region":"","total_recovered":"384,055","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"683","total_cases_per_1m_population":"72,833","deaths_per_1m_population":"797","total_tests":"25,000,000","tests_per_1m_population":"4,680,828"},{"country_name":"Bosnia and Herzegovina","cases":"376,699","deaths":"15,756","region":"","total_recovered":"192,218","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"168,725","total_cases_per_1m_population":"116,122","deaths_per_1m_population":"4,857","total_tests":"1,752,716","tests_per_1m_population":"540,297"},{"country_name":"R\u00e9union","cases":"374,295","deaths":"742","region":"","total_recovered":"355,605","new_deaths":"0","new_cases":"0","serious_critical":"10","active_cases":"17,948","total_cases_per_1m_population":"412,744","deaths_per_1m_population":"818","total_tests":"1,603,660","tests_per_1m_population":"1,768,393"},{"country_name":"Qatar","cases":"364,089","deaths":"677","region":"","total_recovered":"362,568","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"844","total_cases_per_1m_population":"129,670","deaths_per_1m_population":"241","total_tests":"3,425,362","tests_per_1m_population":"1,219,943"},{"country_name":"Kenya","cases":"323,696","deaths":"5,649","region":"","total_recovered":"317,909","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"138","total_cases_per_1m_population":"5,790","deaths_per_1m_population":"101","total_tests":"3,581,506","tests_per_1m_population":"64,060"},{"country_name":"Zambia","cases":"318,984","deaths":"3,974","region":"","total_recovered":"314,075","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"935","total_cases_per_1m_population":"16,517","deaths_per_1m_population":"206","total_tests":"3,408,441","tests_per_1m_population":"176,487"},{"country_name":"North Macedonia","cases":"309,062","deaths":"9,271","region":"","total_recovered":"299,064","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"727","total_cases_per_1m_population":"148,358","deaths_per_1m_population":"4,450","total_tests":"2,007,553","tests_per_1m_population":"963,678"},{"country_name":"Botswana","cases":"305,859","deaths":"2,688","region":"","total_recovered":"303,026","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"145","total_cases_per_1m_population":"125,491","deaths_per_1m_population":"1,103","total_tests":"2,026,898","tests_per_1m_population":"831,613"},{"country_name":"Albania","cases":"274,791","deaths":"3,496","region":"","total_recovered":"270,869","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"426","total_cases_per_1m_population":"95,675","deaths_per_1m_population":"1,217","total_tests":"1,799,730","tests_per_1m_population":"626,620"},{"country_name":"Algeria","cases":"265,761","deaths":"6,874","region":"","total_recovered":"178,344","new_deaths":"0","new_cases":"0","serious_critical":"6","active_cases":"80,543","total_cases_per_1m_population":"5,869","deaths_per_1m_population":"152","total_tests":"230,861","tests_per_1m_population":"5,099"},{"country_name":"Nigeria","cases":"255,685","deaths":"3,143","region":"","total_recovered":"249,890","new_deaths":"0","new_cases":"0","serious_critical":"11","active_cases":"2,652","total_cases_per_1m_population":"1,187","deaths_per_1m_population":"15","total_tests":"5,036,813","tests_per_1m_population":"23,388"},{"country_name":"Zimbabwe","cases":"247,524","deaths":"5,468","region":"","total_recovered":"241,362","new_deaths":"0","new_cases":"0","serious_critical":"12","active_cases":"694","total_cases_per_1m_population":"16,227","deaths_per_1m_population":"358","total_tests":"2,240,305","tests_per_1m_population":"146,872"},{"country_name":"Uzbekistan","cases":"238,469","deaths":"1,637","region":"","total_recovered":"236,483","new_deaths":"0","new_cases":"27","serious_critical":"23","active_cases":"349","total_cases_per_1m_population":"6,943","deaths_per_1m_population":"48","total_tests":"1,377,915","tests_per_1m_population":"40,120"},{"country_name":"Montenegro","cases":"234,619","deaths":"2,713","region":"","total_recovered":"231,297","new_deaths":"0","new_cases":"0","serious_critical":"6","active_cases":"609","total_cases_per_1m_population":"373,473","deaths_per_1m_population":"4,319","total_tests":"2,444,820","tests_per_1m_population":"3,891,730"},{"country_name":"Luxembourg","cases":"233,966","deaths":"1,058","region":"","total_recovered":"221,501","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"11,407","total_cases_per_1m_population":"363,099","deaths_per_1m_population":"1,642","total_tests":"4,213,886","tests_per_1m_population":"6,539,666"},{"country_name":"Mozambique","cases":"225,358","deaths":"2,201","region":"","total_recovered":"223,104","new_deaths":"0","new_cases":"0","serious_critical":"13","active_cases":"53","total_cases_per_1m_population":"6,863","deaths_per_1m_population":"67","total_tests":"1,308,458","tests_per_1m_population":"39,849"},{"country_name":"Laos","cases":"205,975","deaths":"732","region":"","total_recovered":"7,660","new_deaths":"0","new_cases":"1,082","serious_critical":"0","active_cases":"197,583","total_cases_per_1m_population":"27,588","deaths_per_1m_population":"98","total_tests":"1,232,128","tests_per_1m_population":"165,029"},{"country_name":"Kyrgyzstan","cases":"200,983","deaths":"2,991","region":"","total_recovered":"196,386","new_deaths":"0","new_cases":"0","serious_critical":"131","active_cases":"1,606","total_cases_per_1m_population":"29,915","deaths_per_1m_population":"445","total_tests":"1,907,195","tests_per_1m_population":"283,874"},{"country_name":"China","cases":"200,654","deaths":"4,725","region":"","total_recovered":"166,398","new_deaths":"39","new_cases":"1,580","serious_critical":"236","active_cases":"29,531","total_cases_per_1m_population":"139","deaths_per_1m_population":"3","total_tests":"160,000,000","tests_per_1m_population":"111,163"},{"country_name":"Iceland","cases":"183,974","deaths":"112","region":"","total_recovered":"75,685","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"108,177","total_cases_per_1m_population":"532,886","deaths_per_1m_population":"324","total_tests":"1,953,616","tests_per_1m_population":"5,658,702"},{"country_name":"Maldives","cases":"178,883","deaths":"298","region":"","total_recovered":"163,687","new_deaths":"0","new_cases":"0","serious_critical":"25","active_cases":"14,898","total_cases_per_1m_population":"320,737","deaths_per_1m_population":"534","total_tests":"2,213,831","tests_per_1m_population":"3,969,395"},{"country_name":"Afghanistan","cases":"178,689","deaths":"7,682","region":"","total_recovered":"161,748","new_deaths":"1","new_cases":"39","serious_critical":"1,124","active_cases":"9,259","total_cases_per_1m_population":"4,411","deaths_per_1m_population":"190","total_tests":"940,341","tests_per_1m_population":"23,212"},{"country_name":"Uganda","cases":"164,069","deaths":"3,596","region":"","total_recovered":"100,205","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"60,268","total_cases_per_1m_population":"3,394","deaths_per_1m_population":"74","total_tests":"2,612,795","tests_per_1m_population":"54,043"},{"country_name":"El Salvador","cases":"162,089","deaths":"4,127","region":"","total_recovered":"150,662","new_deaths":"0","new_cases":"0","serious_critical":"8","active_cases":"7,300","total_cases_per_1m_population":"24,764","deaths_per_1m_population":"631","total_tests":"1,950,448","tests_per_1m_population":"297,993"},{"country_name":"Ghana","cases":"161,124","deaths":"1,445","region":"","total_recovered":"159,655","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"24","total_cases_per_1m_population":"4,997","deaths_per_1m_population":"45","total_tests":"2,433,244","tests_per_1m_population":"75,465"},{"country_name":"Namibia","cases":"158,332","deaths":"4,023","region":"","total_recovered":"153,662","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"647","total_cases_per_1m_population":"60,341","deaths_per_1m_population":"1,533","total_tests":"1,001,354","tests_per_1m_population":"381,621"},{"country_name":"Martinique","cases":"147,519","deaths":"918","region":"","total_recovered":"104","new_deaths":"0","new_cases":"0","serious_critical":"8","active_cases":"146,497","total_cases_per_1m_population":"393,657","deaths_per_1m_population":"2,450","total_tests":"828,928","tests_per_1m_population":"2,212,008"},{"country_name":"Trinidad and Tobago","cases":"144,359","deaths":"3,812","region":"","total_recovered":"133,604","new_deaths":"0","new_cases":"0","serious_critical":"18","active_cases":"6,943","total_cases_per_1m_population":"102,552","deaths_per_1m_population":"2,708","total_tests":"696,148","tests_per_1m_population":"494,540"},{"country_name":"Brunei","cases":"141,014","deaths":"218","region":"","total_recovered":"139,724","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"1,072","total_cases_per_1m_population":"316,857","deaths_per_1m_population":"490","total_tests":"717,784","tests_per_1m_population":"1,612,853"},{"country_name":"Guadeloupe","cases":"140,130","deaths":"854","region":"","total_recovered":"2,250","new_deaths":"0","new_cases":"0","serious_critical":"19","active_cases":"137,026","total_cases_per_1m_population":"350,108","deaths_per_1m_population":"2,134","total_tests":"938,039","tests_per_1m_population":"2,343,644"},{"country_name":"Cambodia","cases":"136,200","deaths":"3,056","region":"","total_recovered":"132,896","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"248","total_cases_per_1m_population":"7,948","deaths_per_1m_population":"178","total_tests":"2,946,965","tests_per_1m_population":"171,969"},{"country_name":"Rwanda","cases":"129,764","deaths":"1,458","region":"","total_recovered":"45,522","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"82,784","total_cases_per_1m_population":"9,590","deaths_per_1m_population":"108","total_tests":"5,225,494","tests_per_1m_population":"386,173"},{"country_name":"Jamaica","cases":"129,489","deaths":"2,943","region":"","total_recovered":"82,965","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"43,581","total_cases_per_1m_population":"43,387","deaths_per_1m_population":"986","total_tests":"981,688","tests_per_1m_population":"328,929"},{"country_name":"Cameroon","cases":"119,780","deaths":"1,927","region":"","total_recovered":"117,791","new_deaths":"0","new_cases":"0","serious_critical":"13","active_cases":"62","total_cases_per_1m_population":"4,318","deaths_per_1m_population":"69","total_tests":"1,751,774","tests_per_1m_population":"63,154"},{"country_name":"Angola","cases":"99,194","deaths":"1,900","region":"","total_recovered":"97,149","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"145","total_cases_per_1m_population":"2,858","deaths_per_1m_population":"55","total_tests":"1,499,795","tests_per_1m_population":"43,209"},{"country_name":"Malta","cases":"90,595","deaths":"688","region":"","total_recovered":"84,646","new_deaths":"1","new_cases":"196","serious_critical":"4","active_cases":"5,261","total_cases_per_1m_population":"204,196","deaths_per_1m_population":"1,551","total_tests":"1,872,465","tests_per_1m_population":"4,220,438"},{"country_name":"DRC","cases":"87,023","deaths":"1,337","region":"","total_recovered":"50,930","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"34,756","total_cases_per_1m_population":"921","deaths_per_1m_population":"14","total_tests":"846,704","tests_per_1m_population":"8,962"},{"country_name":"Senegal","cases":"85,984","deaths":"1,966","region":"","total_recovered":"84,001","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"17","total_cases_per_1m_population":"4,902","deaths_per_1m_population":"112","total_tests":"1,063,849","tests_per_1m_population":"60,653"},{"country_name":"Malawi","cases":"85,747","deaths":"2,633","region":"","total_recovered":"81,938","new_deaths":"0","new_cases":"0","serious_critical":"67","active_cases":"1,176","total_cases_per_1m_population":"4,283","deaths_per_1m_population":"132","total_tests":"571,585","tests_per_1m_population":"28,548"},{"country_name":"Ivory Coast","cases":"81,887","deaths":"799","region":"","total_recovered":"81,061","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"27","total_cases_per_1m_population":"2,972","deaths_per_1m_population":"29","total_tests":"1,494,624","tests_per_1m_population":"54,238"},{"country_name":"French Guiana","cases":"80,422","deaths":"394","region":"","total_recovered":"11,254","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"68,774","total_cases_per_1m_population":"257,228","deaths_per_1m_population":"1,260","total_tests":"622,646","tests_per_1m_population":"1,991,518"},{"country_name":"Suriname","cases":"79,302","deaths":"1,327","region":"","total_recovered":"49,396","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"28,579","total_cases_per_1m_population":"133,030","deaths_per_1m_population":"2,226","total_tests":"235,824","tests_per_1m_population":"395,598"},{"country_name":"Channel Islands","cases":"73,609","deaths":"166","region":"","total_recovered":"72,059","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1,384","total_cases_per_1m_population":"416,444","deaths_per_1m_population":"939","total_tests":"1,252,808","tests_per_1m_population":"7,087,782"},{"country_name":"French Polynesia","cases":"72,648","deaths":"648","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"7","active_cases":"N\/A","total_cases_per_1m_population":"255,948","deaths_per_1m_population":"2,283","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Eswatini","cases":"70,284","deaths":"1,397","region":"","total_recovered":"68,764","new_deaths":"0","new_cases":"0","serious_critical":"11","active_cases":"123","total_cases_per_1m_population":"59,470","deaths_per_1m_population":"1,182","total_tests":"1,012,397","tests_per_1m_population":"856,623"},{"country_name":"Barbados","cases":"67,256","deaths":"389","region":"","total_recovered":"63,424","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"3,443","total_cases_per_1m_population":"233,520","deaths_per_1m_population":"1,351","total_tests":"640,085","tests_per_1m_population":"2,222,440"},{"country_name":"Fiji","cases":"64,524","deaths":"862","region":"","total_recovered":"62,677","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"985","total_cases_per_1m_population":"71,048","deaths_per_1m_population":"949","total_tests":"506,642","tests_per_1m_population":"557,871"},{"country_name":"Madagascar","cases":"64,121","deaths":"1,391","region":"","total_recovered":"59,370","new_deaths":"0","new_cases":"0","serious_critical":"14","active_cases":"3,360","total_cases_per_1m_population":"2,213","deaths_per_1m_population":"48","total_tests":"418,849","tests_per_1m_population":"14,455"},{"country_name":"Guyana","cases":"63,413","deaths":"1,228","region":"","total_recovered":"62,092","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"93","total_cases_per_1m_population":"79,925","deaths_per_1m_population":"1,548","total_tests":"590,638","tests_per_1m_population":"744,436"},{"country_name":"Sudan","cases":"62,093","deaths":"4,930","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"N\/A","total_cases_per_1m_population":"1,359","deaths_per_1m_population":"108","total_tests":"562,941","tests_per_1m_population":"12,319"},{"country_name":"New Caledonia","cases":"60,457","deaths":"312","region":"","total_recovered":"60,064","new_deaths":"0","new_cases":"0","serious_critical":"9","active_cases":"81","total_cases_per_1m_population":"208,148","deaths_per_1m_population":"1,074","total_tests":"98,964","tests_per_1m_population":"340,724"},{"country_name":"Mauritania","cases":"58,683","deaths":"982","region":"","total_recovered":"57,693","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"8","total_cases_per_1m_population":"12,050","deaths_per_1m_population":"202","total_tests":"799,187","tests_per_1m_population":"164,099"},{"country_name":"Bhutan","cases":"57,771","deaths":"20","region":"","total_recovered":"53,080","new_deaths":"0","new_cases":"431","serious_critical":"3","active_cases":"4,671","total_cases_per_1m_population":"73,412","deaths_per_1m_population":"25","total_tests":"2,284,301","tests_per_1m_population":"2,902,749"},{"country_name":"Belize","cases":"57,419","deaths":"676","region":"","total_recovered":"56,534","new_deaths":"0","new_cases":"0","serious_critical":"6","active_cases":"209","total_cases_per_1m_population":"139,823","deaths_per_1m_population":"1,646","total_tests":"534,770","tests_per_1m_population":"1,302,237"},{"country_name":"Taiwan","cases":"56,468","deaths":"856","region":"","total_recovered":"23,729","new_deaths":"0","new_cases":"5,172","serious_critical":"0","active_cases":"31,883","total_cases_per_1m_population":"2,363","deaths_per_1m_population":"36","total_tests":"14,289,370","tests_per_1m_population":"598,017"},{"country_name":"Cabo Verde","cases":"56,004","deaths":"401","region":"","total_recovered":"55,538","new_deaths":"0","new_cases":"0","serious_critical":"23","active_cases":"65","total_cases_per_1m_population":"98,792","deaths_per_1m_population":"707","total_tests":"400,982","tests_per_1m_population":"707,340"},{"country_name":"Syria","cases":"55,795","deaths":"3,150","region":"","total_recovered":"52,090","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"555","total_cases_per_1m_population":"3,054","deaths_per_1m_population":"172","total_tests":"146,269","tests_per_1m_population":"8,007"},{"country_name":"Gabon","cases":"47,597","deaths":"303","region":"","total_recovered":"47,282","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"12","total_cases_per_1m_population":"20,512","deaths_per_1m_population":"131","total_tests":"1,592,483","tests_per_1m_population":"686,270"},{"country_name":"Papua New Guinea","cases":"43,732","deaths":"649","region":"","total_recovered":"43,025","new_deaths":"0","new_cases":"0","serious_critical":"7","active_cases":"58","total_cases_per_1m_population":"4,726","deaths_per_1m_population":"70","total_tests":"249,149","tests_per_1m_population":"26,927"},{"country_name":"Seychelles","cases":"42,079","deaths":"165","region":"","total_recovered":"41,260","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"654","total_cases_per_1m_population":"423,134","deaths_per_1m_population":"1,659","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Cura\u00e7ao","cases":"41,966","deaths":"273","region":"","total_recovered":"41,251","new_deaths":"0","new_cases":"0","serious_critical":"3","active_cases":"442","total_cases_per_1m_population":"253,872","deaths_per_1m_population":"1,652","total_tests":"496,693","tests_per_1m_population":"3,004,725"},{"country_name":"Andorra","cases":"41,013","deaths":"153","region":"","total_recovered":"40,343","new_deaths":"0","new_cases":"0","serious_critical":"14","active_cases":"517","total_cases_per_1m_population":"529,282","deaths_per_1m_population":"1,974","total_tests":"249,838","tests_per_1m_population":"3,224,215"},{"country_name":"Burundi","cases":"38,887","deaths":"38","region":"","total_recovered":"773","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"38,076","total_cases_per_1m_population":"3,104","deaths_per_1m_population":"3","total_tests":"345,742","tests_per_1m_population":"27,594"},{"country_name":"Mauritius","cases":"37,656","deaths":"990","region":"","total_recovered":"35,656","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1,010","total_cases_per_1m_population":"29,521","deaths_per_1m_population":"776","total_tests":"358,675","tests_per_1m_population":"281,186"},{"country_name":"Mayotte","cases":"37,038","deaths":"187","region":"","total_recovered":"2,964","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"33,887","total_cases_per_1m_population":"130,099","deaths_per_1m_population":"657","total_tests":"176,919","tests_per_1m_population":"621,442"},{"country_name":"Togo","cases":"36,977","deaths":"273","region":"","total_recovered":"36,679","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"25","total_cases_per_1m_population":"4,285","deaths_per_1m_population":"32","total_tests":"727,740","tests_per_1m_population":"84,338"},{"country_name":"Guinea","cases":"36,459","deaths":"440","region":"","total_recovered":"35,976","new_deaths":"0","new_cases":"0","serious_critical":"8","active_cases":"43","total_cases_per_1m_population":"2,647","deaths_per_1m_population":"32","total_tests":"660,107","tests_per_1m_population":"47,919"},{"country_name":"Faeroe Islands","cases":"34,658","deaths":"28","region":"","total_recovered":"7,693","new_deaths":"0","new_cases":"0","serious_critical":"5","active_cases":"26,937","total_cases_per_1m_population":"704,460","deaths_per_1m_population":"569","total_tests":"778,000","tests_per_1m_population":"15,813,651"},{"country_name":"Aruba","cases":"34,589","deaths":"212","region":"","total_recovered":"34,251","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"126","total_cases_per_1m_population":"321,507","deaths_per_1m_population":"1,971","total_tests":"177,885","tests_per_1m_population":"1,653,452"},{"country_name":"Tanzania","cases":"33,864","deaths":"803","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"7","active_cases":"N\/A","total_cases_per_1m_population":"539","deaths_per_1m_population":"13","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Bahamas","cases":"33,463","deaths":"789","region":"","total_recovered":"32,310","new_deaths":"0","new_cases":"0","serious_critical":"11","active_cases":"364","total_cases_per_1m_population":"83,652","deaths_per_1m_population":"1,972","total_tests":"229,817","tests_per_1m_population":"574,504"},{"country_name":"Lesotho","cases":"32,910","deaths":"697","region":"","total_recovered":"24,155","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"8,058","total_cases_per_1m_population":"15,146","deaths_per_1m_population":"321","total_tests":"431,221","tests_per_1m_population":"198,454"},{"country_name":"Mali","cases":"30,727","deaths":"731","region":"","total_recovered":"29,795","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"201","total_cases_per_1m_population":"1,442","deaths_per_1m_population":"34","total_tests":"663,805","tests_per_1m_population":"31,160"},{"country_name":"Haiti","cases":"30,640","deaths":"835","region":"","total_recovered":"29,389","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"416","total_cases_per_1m_population":"2,629","deaths_per_1m_population":"72","total_tests":"132,422","tests_per_1m_population":"11,363"},{"country_name":"Isle of Man","cases":"28,416","deaths":"87","region":"","total_recovered":"26,794","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1,535","total_cases_per_1m_population":"331,015","deaths_per_1m_population":"1,013","total_tests":"150,753","tests_per_1m_population":"1,756,107"},{"country_name":"Benin","cases":"26,952","deaths":"163","region":"","total_recovered":"25,506","new_deaths":"0","new_cases":"0","serious_critical":"5","active_cases":"1,283","total_cases_per_1m_population":"2,123","deaths_per_1m_population":"13","total_tests":"604,310","tests_per_1m_population":"47,598"},{"country_name":"Somalia","cases":"26,485","deaths":"1,350","region":"","total_recovered":"13,182","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"11,953","total_cases_per_1m_population":"1,587","deaths_per_1m_population":"81","total_tests":"400,466","tests_per_1m_population":"23,990"},{"country_name":"Congo","cases":"24,079","deaths":"385","region":"","total_recovered":"20,178","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"3,516","total_cases_per_1m_population":"4,178","deaths_per_1m_population":"67","total_tests":"347,815","tests_per_1m_population":"60,352"},{"country_name":"Saint Lucia","cases":"23,239","deaths":"368","region":"","total_recovered":"22,736","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"135","total_cases_per_1m_population":"125,520","deaths_per_1m_population":"1,988","total_tests":"142,630","tests_per_1m_population":"770,382"},{"country_name":"Timor-Leste","cases":"22,860","deaths":"130","region":"","total_recovered":"22,714","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"16","total_cases_per_1m_population":"16,762","deaths_per_1m_population":"95","total_tests":"261,007","tests_per_1m_population":"191,388"},{"country_name":"Cayman Islands","cases":"21,755","deaths":"26","region":"","total_recovered":"8,553","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"13,176","total_cases_per_1m_population":"324,145","deaths_per_1m_population":"387","total_tests":"222,773","tests_per_1m_population":"3,319,273"},{"country_name":"Burkina Faso","cases":"20,853","deaths":"382","region":"","total_recovered":"20,439","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"32","total_cases_per_1m_population":"951","deaths_per_1m_population":"17","total_tests":"248,995","tests_per_1m_population":"11,350"},{"country_name":"Nicaragua","cases":"18,491","deaths":"225","region":"","total_recovered":"4,225","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"14,041","total_cases_per_1m_population":"2,733","deaths_per_1m_population":"33","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Gibraltar","cases":"17,706","deaths":"102","region":"","total_recovered":"16,579","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1,025","total_cases_per_1m_population":"525,822","deaths_per_1m_population":"3,029","total_tests":"534,283","tests_per_1m_population":"15,866,807"},{"country_name":"South Sudan","cases":"17,422","deaths":"138","region":"","total_recovered":"13,514","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"3,770","total_cases_per_1m_population":"1,524","deaths_per_1m_population":"12","total_tests":"376,391","tests_per_1m_population":"32,928"},{"country_name":"Tajikistan","cases":"17,388","deaths":"124","region":"","total_recovered":"17,264","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"1,752","deaths_per_1m_population":"12","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Liechtenstein","cases":"17,103","deaths":"85","region":"","total_recovered":"16,831","new_deaths":"1","new_cases":"12","serious_critical":"0","active_cases":"187","total_cases_per_1m_population":"446,251","deaths_per_1m_population":"2,218","total_tests":"102,174","tests_per_1m_population":"2,665,919"},{"country_name":"San Marino","cases":"16,140","deaths":"114","region":"","total_recovered":"15,662","new_deaths":"0","new_cases":"0","serious_critical":"4","active_cases":"364","total_cases_per_1m_population":"473,870","deaths_per_1m_population":"3,347","total_tests":"149,271","tests_per_1m_population":"4,382,590"},{"country_name":"Equatorial Guinea","cases":"15,907","deaths":"183","region":"","total_recovered":"15,698","new_deaths":"0","new_cases":"0","serious_critical":"5","active_cases":"26","total_cases_per_1m_population":"10,704","deaths_per_1m_population":"123","total_tests":"310,972","tests_per_1m_population":"209,251"},{"country_name":"Djibouti","cases":"15,611","deaths":"189","region":"","total_recovered":"15,411","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"11","total_cases_per_1m_population":"15,396","deaths_per_1m_population":"186","total_tests":"303,924","tests_per_1m_population":"299,748"},{"country_name":"CAR","cases":"14,649","deaths":"113","region":"","total_recovered":"6,859","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"7,677","total_cases_per_1m_population":"2,941","deaths_per_1m_population":"23","total_tests":"81,294","tests_per_1m_population":"16,320"},{"country_name":"Grenada","cases":"14,428","deaths":"220","region":"","total_recovered":"13,945","new_deaths":"0","new_cases":"0","serious_critical":"4","active_cases":"263","total_cases_per_1m_population":"127,159","deaths_per_1m_population":"1,939","total_tests":"148,567","tests_per_1m_population":"1,309,376"},{"country_name":"Bermuda","cases":"13,143","deaths":"131","region":"","total_recovered":"12,719","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"293","total_cases_per_1m_population":"212,453","deaths_per_1m_population":"2,118","total_tests":"866,313","tests_per_1m_population":"14,003,734"},{"country_name":"Solomon Islands","cases":"12,437","deaths":"139","region":"","total_recovered":"11,194","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"1,104","total_cases_per_1m_population":"17,339","deaths_per_1m_population":"194","total_tests":"5,117","tests_per_1m_population":"7,134"},{"country_name":"Dominica","cases":"12,011","deaths":"63","region":"","total_recovered":"11,926","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"22","total_cases_per_1m_population":"166,107","deaths_per_1m_population":"871","total_tests":"187,690","tests_per_1m_population":"2,595,666"},{"country_name":"Gambia","cases":"11,995","deaths":"365","region":"","total_recovered":"11,591","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"39","total_cases_per_1m_population":"4,724","deaths_per_1m_population":"144","total_tests":"155,686","tests_per_1m_population":"61,314"},{"country_name":"Greenland","cases":"11,971","deaths":"21","region":"","total_recovered":"2,761","new_deaths":"0","new_cases":"0","serious_critical":"4","active_cases":"9,189","total_cases_per_1m_population":"210,209","deaths_per_1m_population":"369","total_tests":"164,926","tests_per_1m_population":"2,896,081"},{"country_name":"Yemen","cases":"11,818","deaths":"2,148","region":"","total_recovered":"9,001","new_deaths":"0","new_cases":"0","serious_critical":"23","active_cases":"669","total_cases_per_1m_population":"381","deaths_per_1m_population":"69","total_tests":"265,253","tests_per_1m_population":"8,553"},{"country_name":"Monaco","cases":"11,604","deaths":"54","region":"","total_recovered":"11,362","new_deaths":"0","new_cases":"0","serious_critical":"4","active_cases":"188","total_cases_per_1m_population":"291,969","deaths_per_1m_population":"1,359","total_tests":"54,960","tests_per_1m_population":"1,382,850"},{"country_name":"Saint Martin","cases":"10,279","deaths":"63","region":"","total_recovered":"1,399","new_deaths":"0","new_cases":"0","serious_critical":"7","active_cases":"8,817","total_cases_per_1m_population":"257,903","deaths_per_1m_population":"1,581","total_tests":"112,382","tests_per_1m_population":"2,819,701"},{"country_name":"Sint Maarten","cases":"9,990","deaths":"86","region":"","total_recovered":"9,841","new_deaths":"0","new_cases":"0","serious_critical":"10","active_cases":"63","total_cases_per_1m_population":"228,317","deaths_per_1m_population":"1,965","total_tests":"62,056","tests_per_1m_population":"1,418,261"},{"country_name":"Eritrea","cases":"9,733","deaths":"103","region":"","total_recovered":"9,629","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1","total_cases_per_1m_population":"2,678","deaths_per_1m_population":"28","total_tests":"23,693","tests_per_1m_population":"6,518"},{"country_name":"Caribbean Netherlands","cases":"9,592","deaths":"34","region":"","total_recovered":"9,392","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"166","total_cases_per_1m_population":"359,749","deaths_per_1m_population":"1,275","total_tests":"30,126","tests_per_1m_population":"1,129,880"},{"country_name":"Tonga","cases":"9,553","deaths":"11","region":"","total_recovered":"8,306","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1,236","total_cases_per_1m_population":"88,571","deaths_per_1m_population":"102","total_tests":"408,213","tests_per_1m_population":"3,784,761"},{"country_name":"Niger","cases":"8,914","deaths":"309","region":"","total_recovered":"8,507","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"98","total_cases_per_1m_population":"346","deaths_per_1m_population":"12","total_tests":"249,026","tests_per_1m_population":"9,657"},{"country_name":"Guinea-Bissau","cases":"8,185","deaths":"171","region":"","total_recovered":"7,515","new_deaths":"0","new_cases":"0","serious_critical":"6","active_cases":"499","total_cases_per_1m_population":"3,989","deaths_per_1m_population":"83","total_tests":"132,611","tests_per_1m_population":"64,628"},{"country_name":"Comoros","cases":"8,100","deaths":"160","region":"","total_recovered":"7,933","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"7","total_cases_per_1m_population":"8,970","deaths_per_1m_population":"177","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Sierra Leone","cases":"7,681","deaths":"125","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"N\/A","total_cases_per_1m_population":"929","deaths_per_1m_population":"15","total_tests":"259,958","tests_per_1m_population":"31,435"},{"country_name":"Antigua and Barbuda","cases":"7,571","deaths":"135","region":"","total_recovered":"7,402","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"34","total_cases_per_1m_population":"76,172","deaths_per_1m_population":"1,358","total_tests":"18,901","tests_per_1m_population":"190,164"},{"country_name":"Liberia","cases":"7,432","deaths":"294","region":"","total_recovered":"5,747","new_deaths":"0","new_cases":"0","serious_critical":"2","active_cases":"1,391","total_cases_per_1m_population":"1,410","deaths_per_1m_population":"56","total_tests":"139,824","tests_per_1m_population":"26,521"},{"country_name":"Chad","cases":"7,396","deaths":"193","region":"","total_recovered":"4,874","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"2,329","total_cases_per_1m_population":"428","deaths_per_1m_population":"11","total_tests":"191,341","tests_per_1m_population":"11,075"},{"country_name":"Samoa","cases":"7,185","deaths":"13","region":"","total_recovered":"1,605","new_deaths":"0","new_cases":"0","serious_critical":"3","active_cases":"5,567","total_cases_per_1m_population":"35,783","deaths_per_1m_population":"65","total_tests":"53,893","tests_per_1m_population":"268,399"},{"country_name":"Vanuatu","cases":"6,793","deaths":"12","region":"","total_recovered":"5,991","new_deaths":"0","new_cases":"0","serious_critical":"5","active_cases":"790","total_cases_per_1m_population":"21,222","deaths_per_1m_population":"37","total_tests":"24,976","tests_per_1m_population":"78,027"},{"country_name":"St. Vincent Grenadines","cases":"6,779","deaths":"106","region":"","total_recovered":"6,641","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"32","total_cases_per_1m_population":"60,757","deaths_per_1m_population":"950","total_tests":"98,860","tests_per_1m_population":"886,033"},{"country_name":"British Virgin Islands","cases":"6,296","deaths":"62","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"N\/A","total_cases_per_1m_population":"205,792","deaths_per_1m_population":"2,027","total_tests":"102,862","tests_per_1m_population":"3,362,163"},{"country_name":"Sao Tome and Principe","cases":"5,953","deaths":"73","region":"","total_recovered":"5,875","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"5","total_cases_per_1m_population":"26,282","deaths_per_1m_population":"322","total_tests":"29,036","tests_per_1m_population":"128,193"},{"country_name":"Turks and Caicos","cases":"5,941","deaths":"36","region":"","total_recovered":"5,862","new_deaths":"0","new_cases":"0","serious_critical":"4","active_cases":"43","total_cases_per_1m_population":"149,791","deaths_per_1m_population":"908","total_tests":"478,593","tests_per_1m_population":"12,066,789"},{"country_name":"Saint Kitts and Nevis","cases":"5,561","deaths":"43","region":"","total_recovered":"5,517","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1","total_cases_per_1m_population":"103,215","deaths_per_1m_population":"798","total_tests":"65,141","tests_per_1m_population":"1,209,046"},{"country_name":"Cook Islands","cases":"4,727","deaths":"0","region":"","total_recovered":"3,990","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"737","total_cases_per_1m_population":"268,686","deaths_per_1m_population":"0","total_tests":"15,740","tests_per_1m_population":"894,674"},{"country_name":"St. Barth","cases":"4,432","deaths":"6","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"N\/A","total_cases_per_1m_population":"446,279","deaths_per_1m_population":"604","total_tests":"78,646","tests_per_1m_population":"7,919,243"},{"country_name":"Palau","cases":"4,396","deaths":"6","region":"","total_recovered":"3,879","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"511","total_cases_per_1m_population":"240,877","deaths_per_1m_population":"329","total_tests":"45,500","tests_per_1m_population":"2,493,151"},{"country_name":"Kiribati","cases":"3,076","deaths":"13","region":"","total_recovered":"2,597","new_deaths":"0","new_cases":"0","serious_critical":"3","active_cases":"466","total_cases_per_1m_population":"25,058","deaths_per_1m_population":"106","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Anguilla","cases":"2,731","deaths":"9","region":"","total_recovered":"2,716","new_deaths":"0","new_cases":"0","serious_critical":"4","active_cases":"6","total_cases_per_1m_population":"179,141","deaths_per_1m_population":"590","total_tests":"51,382","tests_per_1m_population":"3,370,417"},{"country_name":"Saint Pierre Miquelon","cases":"2,641","deaths":"1","region":"","total_recovered":"2,449","new_deaths":"0","new_cases":"0","serious_critical":"1","active_cases":"191","total_cases_per_1m_population":"459,864","deaths_per_1m_population":"174","total_tests":"22,941","tests_per_1m_population":"3,994,602"},{"country_name":"Diamond Princess","cases":"712","deaths":"13","region":"","total_recovered":"699","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"0","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Wallis and Futuna","cases":"454","deaths":"7","region":"","total_recovered":"438","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"9","total_cases_per_1m_population":"41,713","deaths_per_1m_population":"643","total_tests":"20,508","tests_per_1m_population":"1,884,234"},{"country_name":"Montserrat","cases":"183","deaths":"2","region":"","total_recovered":"174","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"7","total_cases_per_1m_population":"36,622","deaths_per_1m_population":"400","total_tests":"9,700","tests_per_1m_population":"1,941,165"},{"country_name":"Falkland Islands","cases":"128","deaths":"0","region":"","total_recovered":"N\/A","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"N\/A","total_cases_per_1m_population":"34,944","deaths_per_1m_population":"0","total_tests":"8,632","tests_per_1m_population":"2,356,538"},{"country_name":"Macao","cases":"82","deaths":"0","region":"","total_recovered":"82","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"123","deaths_per_1m_population":"0","total_tests":"5,375","tests_per_1m_population":"8,079"},{"country_name":"Vatican City","cases":"29","deaths":"0","region":"","total_recovered":"29","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"36,025","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Marshall Islands","cases":"15","deaths":"0","region":"","total_recovered":"7","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"8","total_cases_per_1m_population":"250","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Western Sahara","cases":"10","deaths":"1","region":"","total_recovered":"9","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"16","deaths_per_1m_population":"2","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"MS Zaandam","cases":"9","deaths":"2","region":"","total_recovered":"7","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"0","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Niue","cases":"8","deaths":"0","region":"","total_recovered":"7","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"1","total_cases_per_1m_population":"4,860","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Nauru","cases":"3","deaths":"0","region":"","total_recovered":"3","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"274","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Saint Helena","cases":"2","deaths":"0","region":"","total_recovered":"2","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"327","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"},{"country_name":"Micronesia","cases":"1","deaths":"0","region":"","total_recovered":"1","new_deaths":"0","new_cases":"0","serious_critical":"0","active_cases":"0","total_cases_per_1m_population":"9","deaths_per_1m_population":"0","total_tests":"0","tests_per_1m_population":"0"}],"statistic_taken_at":"2022-04-24 11:18:01","world_total":{"total_cases":"509,268,964","new_cases":"204,268","total_deaths":"6,242,509","new_deaths":"630","total_recovered":"461,827,849","active_cases":"41,198,606","serious_critical":"42,510","total_cases_per_1m_population":"65,334","deaths_per_1m_population":"800.9","statistic_taken_at":"2022-04-24 11:18:01"}}

Build your own Web Service

To build a Web Service in the backend allows you to control information and errors between your app and the user. A proper Web Service requires more code:RESTful interface, error handling, and in this case reducing the calls to the service according to update frequency.

package com.nighthawk.spring_portfolio.mvc.covid;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Date;
import java.util.HashMap;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController // annotation to create a RESTful web services
@RequestMapping("/api/covid")  //prefix of API
public class CovidApiController {
    private JSONObject body; //last run result
    private HttpStatus status; //last run status
    String last_run = null; //last run day of month

    // GET Covid 19 Stats
    @GetMapping("/daily")   //added to end of prefix as endpoint
    public ResponseEntity<JSONObject> getCovid() {

        //calls API once a day, sets body and status properties
        String today = new Date().toString().substring(0,10); 
        if (last_run == null || !today.equals(last_run))
        {
            try {  //APIs can fail (ie Internet or Service down)

                //RapidAPI header
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://corona-virus-world-and-india-data.p.rapidapi.com/api"))
                    .header("x-rapidapi-key", "dec069b877msh0d9d0827664078cp1a18fajsn2afac35ae063")
                    .header("x-rapidapi-host", "corona-virus-world-and-india-data.p.rapidapi.com")
                    .method("GET", HttpRequest.BodyPublishers.noBody())
                    .build();

                //RapidAPI request and response
                HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());

                //JSONParser extracts text body and parses to JSONObject
                this.body = (JSONObject) new JSONParser().parse(response.body());
                this.status = HttpStatus.OK;  //200 success
                this.last_run = today;
            }
            catch (Exception e) {  //capture failure info
                HashMap<String, String> status = new HashMap<>();
                status.put("status", "RapidApi failure: " + e);

                //Setup object for error
                this.body = (JSONObject) status;
                this.status = HttpStatus.INTERNAL_SERVER_ERROR; //500 error
                this.last_run = null;
            }
        }

        //return JSONObject in RESTful style
        return new ResponseEntity<>(body, status);
    }
}

Hacks

  • What are the benefits of using an API?

    • You can access information from the Internet as seen in the covid cases examples
    • You can better organize the data however you want
    • You can store the data for future personal use without having to go back to the Internet source
  • What are the benefits of backend implementation?

    • Easy and accessible storage of information that multiple frontend applications can reference
    • More people can access backend data for group projects --> could be useful for our PBL project

Example of Brian and I's example API

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpRequest request = HttpRequest.newBuilder()
		.uri(URI.create("https://weatherbit-v1-mashape.p.rapidapi.com/forecast/3hourly?lat=35.5&lon=-78.5"))
		.header("X-RapidAPI-Key", "3d43659d98msh26d5e705bc7d8b6p1d6431jsnba44357aaf20")
		.header("X-RapidAPI-Host", "weatherbit-v1-mashape.p.rapidapi.com")
		.method("GET", HttpRequest.BodyPublishers.noBody())
		.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{"lon":-78.5,"city_name":"Four Oaks","timezone":"America\/New_York","state_code":"NC","country_code":"US","data":[{"dewpt":12,"uv":0,"wind_dir":355,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":13.8,"app_temp":13.8,"wind_gust_spd":12.66,"wind_cdir":"NNW","rh":89,"pod":"n","pres":1008.5,"clouds":100,"vis":14.496,"pop":0,"ozone":278.5,"wind_cdir_full":"north-northwest","slp":1015,"clouds_low":100,"ts":1664766000,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-03:03","wind_spd":5.76,"clouds_hi":0,"timestamp_utc":"2022-10-03T03:00:00","snow_depth":0,"timestamp_local":"2022-10-02T23:00:00","solar_rad":0},{"dewpt":11.3,"uv":0,"wind_dir":354,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":13.2,"app_temp":13.2,"wind_gust_spd":13.09,"wind_cdir":"NNW","rh":88,"pod":"n","pres":1008,"clouds":100,"vis":14.896,"pop":0,"ozone":280,"wind_cdir_full":"north-northwest","slp":1014.5,"clouds_low":100,"ts":1664776800,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-03:06","wind_spd":5.66,"clouds_hi":22,"timestamp_utc":"2022-10-03T06:00:00","snow_depth":0,"timestamp_local":"2022-10-03T02:00:00","solar_rad":0},{"dewpt":10.2,"uv":0,"wind_dir":357,"ghi":0,"dhi":0,"precip":0.35984516,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":12.2,"app_temp":12.2,"wind_gust_spd":13.09,"wind_cdir":"NNW","rh":88,"pod":"n","pres":1009,"clouds":100,"vis":14.696,"pop":30,"ozone":278.3,"wind_cdir_full":"north-northwest","slp":1014.5,"clouds_low":100,"ts":1664787600,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-03:09","wind_spd":5.01,"clouds_hi":0,"timestamp_utc":"2022-10-03T09:00:00","snow_depth":0,"timestamp_local":"2022-10-03T05:00:00","solar_rad":0},{"dewpt":9,"uv":0.5,"wind_dir":350,"ghi":112.96,"dhi":50.12,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04d","code":804},"temp":11.6,"app_temp":11.6,"wind_gust_spd":13.41,"wind_cdir":"NNW","rh":84,"pod":"d","pres":1010,"clouds":100,"vis":16.496,"pop":0,"ozone":277.8,"wind_cdir_full":"north-northwest","slp":1016,"clouds_low":100,"ts":1664798400,"dni":450.23,"clouds_mid":0,"snow":0,"datetime":"2022-10-03:12","wind_spd":5.27,"clouds_hi":0,"timestamp_utc":"2022-10-03T12:00:00","snow_depth":0,"timestamp_local":"2022-10-03T08:00:00","solar_rad":61.416},{"dewpt":9.4,"uv":1.6,"wind_dir":349,"ghi":660.68,"dhi":107.04,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04d","code":804},"temp":12.6,"app_temp":12.6,"wind_gust_spd":12.03,"wind_cdir":"NNW","rh":81,"pod":"d","pres":1010.5,"clouds":95,"vis":17.888,"pop":0,"ozone":280.3,"wind_cdir_full":"north-northwest","slp":1017.5,"clouds_low":95,"ts":1664809200,"dni":855.58,"clouds_mid":0,"snow":0,"datetime":"2022-10-03:15","wind_spd":5.8,"clouds_hi":0,"timestamp_utc":"2022-10-03T15:00:00","snow_depth":0,"timestamp_local":"2022-10-03T11:00:00","solar_rad":161.2278},{"dewpt":10.7,"uv":2.9,"wind_dir":352,"ghi":765.62,"dhi":113.49,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04d","code":804},"temp":14.4,"app_temp":14.4,"wind_gust_spd":12.66,"wind_cdir":"NNW","rh":78,"pod":"d","pres":1010,"clouds":76,"vis":19.6,"pop":0,"ozone":279,"wind_cdir_full":"north-northwest","slp":1018,"clouds_low":76,"ts":1664820000,"dni":888.69,"clouds_mid":0,"snow":0,"datetime":"2022-10-03:18","wind_spd":7.14,"clouds_hi":0,"timestamp_utc":"2022-10-03T18:00:00","snow_depth":0,"timestamp_local":"2022-10-03T14:00:00","solar_rad":470.6552},{"dewpt":10.3,"uv":1.2,"wind_dir":354,"ghi":329.23,"dhi":80.32,"precip":0,"weather":{"description":"Broken clouds","icon":"c03d","code":803},"temp":15.3,"app_temp":15.3,"wind_gust_spd":12.82,"wind_cdir":"NNW","rh":72,"pod":"d","pres":1010,"clouds":68,"vis":23.296,"pop":0,"ozone":278,"wind_cdir_full":"north-northwest","slp":1017.5,"clouds_low":68,"ts":1664830800,"dni":694.06,"clouds_mid":0,"snow":0,"datetime":"2022-10-03:21","wind_spd":6.8,"clouds_hi":0,"timestamp_utc":"2022-10-03T21:00:00","snow_depth":0,"timestamp_local":"2022-10-03T17:00:00","solar_rad":239.45114},{"dewpt":7.9,"uv":0,"wind_dir":351,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":12.2,"app_temp":12.2,"wind_gust_spd":15.16,"wind_cdir":"NNW","rh":75,"pod":"n","pres":1011.5,"clouds":100,"vis":20.992,"pop":0,"ozone":282.8,"wind_cdir_full":"north-northwest","slp":1018.5,"clouds_low":100,"ts":1664841600,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-04:00","wind_spd":5.88,"clouds_hi":0,"timestamp_utc":"2022-10-04T00:00:00","snow_depth":0,"timestamp_local":"2022-10-03T20:00:00","solar_rad":0},{"dewpt":6.8,"uv":0,"wind_dir":355,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Few clouds","icon":"c02n","code":801},"temp":9.9,"app_temp":9.9,"wind_gust_spd":14.79,"wind_cdir":"NNW","rh":81,"pod":"n","pres":1012,"clouds":16,"vis":17.6,"pop":0,"ozone":287.8,"wind_cdir_full":"north-northwest","slp":1019,"clouds_low":16,"ts":1664852400,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-04:03","wind_spd":5.5,"clouds_hi":0,"timestamp_utc":"2022-10-04T03:00:00","snow_depth":0,"timestamp_local":"2022-10-03T23:00:00","solar_rad":0},{"dewpt":6.3,"uv":0,"wind_dir":352,"ghi":0,"dhi":0,"precip":0.0069999695,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":10,"app_temp":10,"wind_gust_spd":13.23,"wind_cdir":"NNW","rh":78,"pod":"n","pres":1010.5,"clouds":100,"vis":19.392,"pop":20,"ozone":292.3,"wind_cdir_full":"north-northwest","slp":1018,"clouds_low":100,"ts":1664863200,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-04:06","wind_spd":4.67,"clouds_hi":0,"timestamp_utc":"2022-10-04T06:00:00","snow_depth":0,"timestamp_local":"2022-10-04T02:00:00","solar_rad":0},{"dewpt":6.1,"uv":0,"wind_dir":340,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":10.1,"app_temp":10.1,"wind_gust_spd":9.28,"wind_cdir":"NNW","rh":76,"pod":"n","pres":1010,"clouds":100,"vis":20.192,"pop":0,"ozone":290.8,"wind_cdir_full":"north-northwest","slp":1017.5,"clouds_low":100,"ts":1664874000,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-04:09","wind_spd":3.95,"clouds_hi":0,"timestamp_utc":"2022-10-04T09:00:00","snow_depth":0,"timestamp_local":"2022-10-04T05:00:00","solar_rad":0},{"dewpt":5.7,"uv":1.6,"wind_dir":330,"ghi":110.28,"dhi":49.59,"precip":0,"weather":{"description":"Clear Sky","icon":"c01d","code":800},"temp":9.3,"app_temp":9.3,"wind_gust_spd":7.73,"wind_cdir":"NNW","rh":78,"pod":"d","pres":1010,"clouds":1,"vis":19.392,"pop":0,"ozone":291.8,"wind_cdir_full":"north-northwest","slp":1018,"clouds_low":1,"ts":1664884800,"dni":445.23,"clouds_mid":0,"snow":0,"datetime":"2022-10-04:12","wind_spd":3.77,"clouds_hi":0,"timestamp_utc":"2022-10-04T12:00:00","snow_depth":0,"timestamp_local":"2022-10-04T08:00:00","solar_rad":110.27998},{"dewpt":5.8,"uv":1.4,"wind_dir":346,"ghi":656.61,"dhi":106.81,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04d","code":804},"temp":12.6,"app_temp":12.6,"wind_gust_spd":14.13,"wind_cdir":"NNW","rh":63,"pod":"d","pres":1009.5,"clouds":100,"vis":28.8,"pop":0,"ozone":294,"wind_cdir_full":"north-northwest","slp":1018,"clouds_low":100,"ts":1664895600,"dni":854.55,"clouds_mid":91,"snow":0,"datetime":"2022-10-04:15","wind_spd":6.42,"clouds_hi":100,"timestamp_utc":"2022-10-04T15:00:00","snow_depth":0,"timestamp_local":"2022-10-04T11:00:00","solar_rad":172.471},{"dewpt":6.5,"uv":2.3,"wind_dir":328,"ghi":760.49,"dhi":113.23,"precip":0.0009994507,"weather":{"description":"Overcast clouds","icon":"c04d","code":804},"temp":13.2,"app_temp":13.2,"wind_gust_spd":11.88,"wind_cdir":"NNW","rh":64,"pod":"d","pres":1008.5,"clouds":88,"vis":28.688,"pop":20,"ozone":294.3,"wind_cdir_full":"north-northwest","slp":1016.5,"clouds_low":88,"ts":1664906400,"dni":887.58,"clouds_mid":0,"snow":0,"datetime":"2022-10-04:18","wind_spd":4.86,"clouds_hi":100,"timestamp_utc":"2022-10-04T18:00:00","snow_depth":0,"timestamp_local":"2022-10-04T14:00:00","solar_rad":317.3131},{"dewpt":7.2,"uv":2,"wind_dir":356,"ghi":323.87,"dhi":79.79,"precip":0,"weather":{"description":"Few clouds","icon":"c02d","code":801},"temp":17.4,"app_temp":17.4,"wind_gust_spd":10.3,"wind_cdir":"NNW","rh":51,"pod":"d","pres":1008,"clouds":6,"vis":24.096,"pop":0,"ozone":296.3,"wind_cdir_full":"north-northwest","slp":1015.5,"clouds_low":6,"ts":1664917200,"dni":690.48,"clouds_mid":6,"snow":0,"datetime":"2022-10-04:21","wind_spd":5.66,"clouds_hi":0,"timestamp_utc":"2022-10-04T21:00:00","snow_depth":0,"timestamp_local":"2022-10-04T17:00:00","solar_rad":323.84955},{"dewpt":6.8,"uv":0,"wind_dir":322,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Few clouds","icon":"c02n","code":801},"temp":14.5,"app_temp":14.5,"wind_gust_spd":4.7,"wind_cdir":"NW","rh":60,"pod":"n","pres":1009,"clouds":4,"vis":24.096,"pop":0,"ozone":300.8,"wind_cdir_full":"northwest","slp":1016.5,"clouds_low":0,"ts":1664928000,"dni":0,"clouds_mid":4,"snow":0,"datetime":"2022-10-05:00","wind_spd":1.91,"clouds_hi":1,"timestamp_utc":"2022-10-05T00:00:00","snow_depth":0,"timestamp_local":"2022-10-04T20:00:00","solar_rad":0},{"dewpt":6.5,"uv":0,"wind_dir":294,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Few clouds","icon":"c02n","code":801},"temp":12.3,"app_temp":12.3,"wind_gust_spd":2.1,"wind_cdir":"WNW","rh":68,"pod":"n","pres":1009,"clouds":4,"vis":24.096,"pop":0,"ozone":299.8,"wind_cdir_full":"west-northwest","slp":1016.5,"clouds_low":2,"ts":1664938800,"dni":0,"clouds_mid":4,"snow":0,"datetime":"2022-10-05:03","wind_spd":1.82,"clouds_hi":0,"timestamp_utc":"2022-10-05T03:00:00","snow_depth":0,"timestamp_local":"2022-10-04T23:00:00","solar_rad":0},{"dewpt":5.8,"uv":0,"wind_dir":294,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Clear Sky","icon":"c01n","code":800},"temp":10.8,"app_temp":10.8,"wind_gust_spd":2.4,"wind_cdir":"WNW","rh":71,"pod":"n","pres":1008,"clouds":0,"vis":24.096,"pop":0,"ozone":297.5,"wind_cdir_full":"west-northwest","slp":1016,"clouds_low":0,"ts":1664949600,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-05:06","wind_spd":2.1,"clouds_hi":0,"timestamp_utc":"2022-10-05T06:00:00","snow_depth":0,"timestamp_local":"2022-10-05T02:00:00","solar_rad":0},{"dewpt":2.6,"uv":0,"wind_dir":316,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":12.4,"app_temp":12.4,"wind_gust_spd":10.7,"wind_cdir":"NW","rh":51,"pod":"n","pres":1007,"clouds":100,"vis":24.128,"pop":0,"ozone":296.8,"wind_cdir_full":"northwest","slp":1015,"clouds_low":100,"ts":1664960400,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-05:09","wind_spd":3.48,"clouds_hi":0,"timestamp_utc":"2022-10-05T09:00:00","snow_depth":0,"timestamp_local":"2022-10-05T05:00:00","solar_rad":0},{"dewpt":3.5,"uv":0.5,"wind_dir":315,"ghi":107.59,"dhi":49.05,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04d","code":804},"temp":12.5,"app_temp":12.5,"wind_gust_spd":8.9,"wind_cdir":"NW","rh":54,"pod":"d","pres":1007.5,"clouds":94,"vis":24.128,"pop":0,"ozone":297.3,"wind_cdir_full":"northwest","slp":1015.5,"clouds_low":94,"ts":1664971200,"dni":440.1,"clouds_mid":0,"snow":0,"datetime":"2022-10-05:12","wind_spd":3.09,"clouds_hi":0,"timestamp_utc":"2022-10-05T12:00:00","snow_depth":0,"timestamp_local":"2022-10-05T08:00:00","solar_rad":77.4681},{"dewpt":5.7,"uv":4.5,"wind_dir":337,"ghi":652.51,"dhi":106.58,"precip":0,"weather":{"description":"Few clouds","icon":"c02d","code":801},"temp":18.5,"app_temp":17.6,"wind_gust_spd":7.2,"wind_cdir":"NNW","rh":43,"pod":"d","pres":1008,"clouds":2,"vis":24.128,"pop":0,"ozone":293.8,"wind_cdir_full":"north-northwest","slp":1016,"clouds_low":2,"ts":1664982000,"dni":853.5,"clouds_mid":0,"snow":0,"datetime":"2022-10-05:15","wind_spd":4.6,"clouds_hi":0,"timestamp_utc":"2022-10-05T15:00:00","snow_depth":0,"timestamp_local":"2022-10-05T11:00:00","solar_rad":652.50867},{"dewpt":10.2,"uv":5.5,"wind_dir":339,"ghi":755.35,"dhi":112.97,"precip":0,"weather":{"description":"Few clouds","icon":"c02d","code":801},"temp":22,"app_temp":21.5,"wind_gust_spd":5.41,"wind_cdir":"NNW","rh":47,"pod":"d","pres":1007,"clouds":10,"vis":24.128,"pop":0,"ozone":291.3,"wind_cdir_full":"north-northwest","slp":1014.5,"clouds_low":10,"ts":1664992800,"dni":886.46,"clouds_mid":0,"snow":0,"datetime":"2022-10-05:18","wind_spd":4.4,"clouds_hi":0,"timestamp_utc":"2022-10-05T18:00:00","snow_depth":0,"timestamp_local":"2022-10-05T14:00:00","solar_rad":755.0609},{"dewpt":10.7,"uv":1.4,"wind_dir":353,"ghi":318.53,"dhi":79.26,"precip":0,"weather":{"description":"Broken clouds","icon":"c03d","code":803},"temp":20.3,"app_temp":19.8,"wind_gust_spd":5.91,"wind_cdir":"NNW","rh":54,"pod":"d","pres":1006.5,"clouds":50,"vis":24.128,"pop":0,"ozone":293.3,"wind_cdir_full":"north-northwest","slp":1014.5,"clouds_low":50,"ts":1665003600,"dni":686.84,"clouds_mid":0,"snow":0,"datetime":"2022-10-05:21","wind_spd":5.34,"clouds_hi":0,"timestamp_utc":"2022-10-05T21:00:00","snow_depth":0,"timestamp_local":"2022-10-05T17:00:00","solar_rad":282.52707},{"dewpt":10.1,"uv":0,"wind_dir":341,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":16.2,"app_temp":16.2,"wind_gust_spd":2.62,"wind_cdir":"NNW","rh":67,"pod":"n","pres":1008.5,"clouds":81,"vis":24.128,"pop":0,"ozone":295,"wind_cdir_full":"north-northwest","slp":1016.5,"clouds_low":81,"ts":1665014400,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:00","wind_spd":2.53,"clouds_hi":0,"timestamp_utc":"2022-10-06T00:00:00","snow_depth":0,"timestamp_local":"2022-10-05T20:00:00","solar_rad":0},{"dewpt":10.2,"uv":0,"wind_dir":20,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":17,"app_temp":17,"wind_gust_spd":8.01,"wind_cdir":"NNE","rh":64,"pod":"n","pres":1008.5,"clouds":95,"vis":24.128,"pop":0,"ozone":294.3,"wind_cdir_full":"north-northeast","slp":1016.5,"clouds_low":95,"ts":1665025200,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:03","wind_spd":2.52,"clouds_hi":0,"timestamp_utc":"2022-10-06T03:00:00","snow_depth":0,"timestamp_local":"2022-10-05T23:00:00","solar_rad":0},{"dewpt":9.3,"uv":0,"wind_dir":342,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Overcast clouds","icon":"c04n","code":804},"temp":16.3,"app_temp":16.3,"wind_gust_spd":5.61,"wind_cdir":"NNW","rh":63,"pod":"n","pres":1009,"clouds":90,"vis":24.128,"pop":0,"ozone":294.8,"wind_cdir_full":"north-northwest","slp":1017,"clouds_low":90,"ts":1665036000,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:06","wind_spd":2.17,"clouds_hi":0,"timestamp_utc":"2022-10-06T06:00:00","snow_depth":0,"timestamp_local":"2022-10-06T02:00:00","solar_rad":0},{"dewpt":8.6,"uv":0,"wind_dir":337,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Few clouds","icon":"c02n","code":801},"temp":14.6,"app_temp":14.6,"wind_gust_spd":3.11,"wind_cdir":"NNW","rh":67,"pod":"n","pres":1009,"clouds":1,"vis":24.128,"pop":0,"ozone":297.8,"wind_cdir_full":"north-northwest","slp":1017,"clouds_low":0,"ts":1665046800,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:09","wind_spd":2.29,"clouds_hi":5,"timestamp_utc":"2022-10-06T09:00:00","snow_depth":0,"timestamp_local":"2022-10-06T05:00:00","solar_rad":0},{"dewpt":8.8,"uv":1.5,"wind_dir":302,"ghi":104.89,"dhi":48.5,"precip":0,"weather":{"description":"Clear Sky","icon":"c01d","code":800},"temp":14.2,"app_temp":14.2,"wind_gust_spd":1.93,"wind_cdir":"WNW","rh":70,"pod":"d","pres":1009.5,"clouds":1,"vis":24.128,"pop":0,"ozone":300.8,"wind_cdir_full":"west-northwest","slp":1017.5,"clouds_low":0,"ts":1665057600,"dni":434.85,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:12","wind_spd":1.67,"clouds_hi":2,"timestamp_utc":"2022-10-06T12:00:00","snow_depth":0,"timestamp_local":"2022-10-06T08:00:00","solar_rad":104.89},{"dewpt":11.5,"uv":4.5,"wind_dir":245,"ghi":648.36,"dhi":106.35,"precip":0,"weather":{"description":"Clear Sky","icon":"c01d","code":800},"temp":20.8,"app_temp":20.4,"wind_gust_spd":3.8,"wind_cdir":"WSW","rh":55,"pod":"d","pres":1010.5,"clouds":0,"vis":24.128,"pop":0,"ozone":298.8,"wind_cdir_full":"west-southwest","slp":1018.5,"clouds_low":0,"ts":1665068400,"dni":852.42,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:15","wind_spd":2.88,"clouds_hi":0,"timestamp_utc":"2022-10-06T15:00:00","snow_depth":0,"timestamp_local":"2022-10-06T11:00:00","solar_rad":627.3599},{"dewpt":11.2,"uv":5.8,"wind_dir":254,"ghi":750.18,"dhi":112.7,"precip":0,"weather":{"description":"Clear Sky","icon":"c01d","code":800},"temp":24.6,"app_temp":24.2,"wind_gust_spd":5.41,"wind_cdir":"WSW","rh":43,"pod":"d","pres":1008.5,"clouds":0,"vis":24.128,"pop":0,"ozone":294.5,"wind_cdir_full":"west-southwest","slp":1016.5,"clouds_low":0,"ts":1665079200,"dni":885.31,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:18","wind_spd":4.07,"clouds_hi":0,"timestamp_utc":"2022-10-06T18:00:00","snow_depth":0,"timestamp_local":"2022-10-06T14:00:00","solar_rad":726.7842},{"dewpt":10.5,"uv":2.1,"wind_dir":257,"ghi":313.22,"dhi":78.72,"precip":0,"weather":{"description":"Few clouds","icon":"c02d","code":801},"temp":25,"app_temp":24.6,"wind_gust_spd":5.3,"wind_cdir":"WSW","rh":40,"pod":"d","pres":1007.5,"clouds":1,"vis":24.128,"pop":0,"ozone":295.3,"wind_cdir_full":"west-southwest","slp":1015,"clouds_low":0,"ts":1665090000,"dni":683.15,"clouds_mid":0,"snow":0,"datetime":"2022-10-06:21","wind_spd":3.6,"clouds_hi":5,"timestamp_utc":"2022-10-06T21:00:00","snow_depth":0,"timestamp_local":"2022-10-06T17:00:00","solar_rad":303.71323},{"dewpt":9.4,"uv":0,"wind_dir":272,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Clear Sky","icon":"c01n","code":800},"temp":18.7,"app_temp":18,"wind_gust_spd":2.11,"wind_cdir":"W","rh":55,"pod":"n","pres":1008.5,"clouds":0,"vis":24.128,"pop":0,"ozone":295.5,"wind_cdir_full":"west","slp":1016.5,"clouds_low":0,"ts":1665100800,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:00","wind_spd":2.07,"clouds_hi":0,"timestamp_utc":"2022-10-07T00:00:00","snow_depth":0,"timestamp_local":"2022-10-06T20:00:00","solar_rad":0},{"dewpt":8.3,"uv":0,"wind_dir":239,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Clear Sky","icon":"c01n","code":800},"temp":16.9,"app_temp":16.9,"wind_gust_spd":2.5,"wind_cdir":"WSW","rh":57,"pod":"n","pres":1009.5,"clouds":0,"vis":24.128,"pop":0,"ozone":301.8,"wind_cdir_full":"west-southwest","slp":1017.5,"clouds_low":0,"ts":1665111600,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:03","wind_spd":2.49,"clouds_hi":0,"timestamp_utc":"2022-10-07T03:00:00","snow_depth":0,"timestamp_local":"2022-10-06T23:00:00","solar_rad":0},{"dewpt":7.9,"uv":0,"wind_dir":245,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Clear Sky","icon":"c01n","code":800},"temp":15.6,"app_temp":15.6,"wind_gust_spd":4.9,"wind_cdir":"WSW","rh":60,"pod":"n","pres":1009.5,"clouds":0,"vis":24.128,"pop":0,"ozone":300.5,"wind_cdir_full":"west-southwest","slp":1017.5,"clouds_low":0,"ts":1665122400,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:06","wind_spd":3.08,"clouds_hi":0,"timestamp_utc":"2022-10-07T06:00:00","snow_depth":0,"timestamp_local":"2022-10-07T02:00:00","solar_rad":0},{"dewpt":9.2,"uv":0,"wind_dir":245,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Few clouds","icon":"c02n","code":801},"temp":14.6,"app_temp":14.6,"wind_gust_spd":5.8,"wind_cdir":"WSW","rh":70,"pod":"n","pres":1009.5,"clouds":4,"vis":24.128,"pop":0,"ozone":300.8,"wind_cdir_full":"west-southwest","slp":1017.5,"clouds_low":4,"ts":1665133200,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:09","wind_spd":2.99,"clouds_hi":0,"timestamp_utc":"2022-10-07T09:00:00","snow_depth":0,"timestamp_local":"2022-10-07T05:00:00","solar_rad":0},{"dewpt":9.5,"uv":1.5,"wind_dir":242,"ghi":102.19,"dhi":47.94,"precip":0,"weather":{"description":"Clear Sky","icon":"c01d","code":800},"temp":14.7,"app_temp":14.7,"wind_gust_spd":5.91,"wind_cdir":"WSW","rh":71,"pod":"d","pres":1010,"clouds":0,"vis":24.128,"pop":0,"ozone":299.3,"wind_cdir_full":"west-southwest","slp":1018,"clouds_low":0,"ts":1665144000,"dni":429.47,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:12","wind_spd":2.72,"clouds_hi":0,"timestamp_utc":"2022-10-07T12:00:00","snow_depth":0,"timestamp_local":"2022-10-07T08:00:00","solar_rad":102.19},{"dewpt":9.8,"uv":4.5,"wind_dir":242,"ghi":644.19,"dhi":106.11,"precip":0,"weather":{"description":"Few clouds","icon":"c02d","code":801},"temp":22.7,"app_temp":22.1,"wind_gust_spd":6.11,"wind_cdir":"WSW","rh":44,"pod":"d","pres":1011,"clouds":1,"vis":24.128,"pop":0,"ozone":297.8,"wind_cdir_full":"west-southwest","slp":1018.5,"clouds_low":0,"ts":1665154800,"dni":851.32,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:15","wind_spd":4.2,"clouds_hi":4,"timestamp_utc":"2022-10-07T15:00:00","snow_depth":0,"timestamp_local":"2022-10-07T11:00:00","solar_rad":644.1899},{"dewpt":9.5,"uv":5.7,"wind_dir":256,"ghi":744.99,"dhi":112.43,"precip":0,"weather":{"description":"Clear Sky","icon":"c01d","code":800},"temp":26.7,"app_temp":26.4,"wind_gust_spd":4.8,"wind_cdir":"WSW","rh":34,"pod":"d","pres":1009,"clouds":0,"vis":24.128,"pop":0,"ozone":296,"wind_cdir_full":"west-southwest","slp":1016.5,"clouds_low":0,"ts":1665165600,"dni":884.15,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:18","wind_spd":3.59,"clouds_hi":0,"timestamp_utc":"2022-10-07T18:00:00","snow_depth":0,"timestamp_local":"2022-10-07T14:00:00","solar_rad":744.99},{"dewpt":11.4,"uv":2,"wind_dir":265,"ghi":307.93,"dhi":78.17,"precip":0,"weather":{"description":"Clear Sky","icon":"c01d","code":800},"temp":26.9,"app_temp":26.7,"wind_gust_spd":5.81,"wind_cdir":"W","rh":38,"pod":"d","pres":1008,"clouds":0,"vis":24.128,"pop":0,"ozone":294.3,"wind_cdir_full":"west","slp":1015.5,"clouds_low":0,"ts":1665176400,"dni":679.4,"clouds_mid":0,"snow":0,"datetime":"2022-10-07:21","wind_spd":3.36,"clouds_hi":0,"timestamp_utc":"2022-10-07T21:00:00","snow_depth":0,"timestamp_local":"2022-10-07T17:00:00","solar_rad":297.98105},{"dewpt":10.7,"uv":0,"wind_dir":255,"ghi":0,"dhi":0,"precip":0,"weather":{"description":"Scattered clouds","icon":"c02n","code":802},"temp":20.6,"app_temp":20.1,"wind_gust_spd":1.21,"wind_cdir":"WSW","rh":53,"pod":"n","pres":1009,"clouds":25,"vis":24.128,"pop":0,"ozone":293,"wind_cdir_full":"west-southwest","slp":1016.5,"clouds_low":7,"ts":1665187200,"dni":0,"clouds_mid":0,"snow":0,"datetime":"2022-10-08:00","wind_spd":1.13,"clouds_hi":98,"timestamp_utc":"2022-10-08T00:00:00","snow_depth":0,"timestamp_local":"2022-10-07T20:00:00","solar_rad":0}],"lat":35.5}