Python RapidAPI
APIs can be found all over the internet. A great consolidator of many APIs is RapidAPI. In this blog we will use a site to consolidates API stats. Learning a few lines of code and you can start extracting lots of data from the internet via APIs.
• 39 min read
- Python, RapidAPI Terms
- Covid19 RapidAPI Example
- Digital Coin Example
- Formatting Digital Coin example
- Go deeper into APIs
- Hacks
Covid19 RapidAPI Example
To begin the API journey. You need to find an API provider.
- RapidAPI is a great option. You must setup and account, but there are many free options.
- Goto this page for starters, the Corona virus World and India data- Under Code Snippets pick Python - Requests
RapidAPI, you will select Python Requests type of code to work with you Notebook.
- The url is the endpoint to which the API is directed
- The headers is a dictionary data structure to send special messaging to the endpoint
- The requests.request() python function is used to send a request and retrieve their responses
- The response variable receives result of of the request in JSON text
Next step, is to format the response according to your data science needs
"""
Requests is a HTTP library for the Python programming language.
The goal of the project is to make HTTP requests simpler and more human-friendly.
"""
import requests
"""
RapidAPI is the world's largest API Marketplace.
Developers use Rapid API to discover and connect to thousands of APIs.
"""
url = "https://corona-virus-world-and-india-data.p.rapidapi.com/api"
headers = {
'x-rapidapi-key': "dec069b877msh0d9d0827664078cp1a18fajsn2afac35ae063",
'x-rapidapi-host': "corona-virus-world-and-india-data.p.rapidapi.com"
}
# Request Covid Data
response = requests.request("GET", url, headers=headers)
# print(response.text) # uncomment this line to see raw data
# This code looks for "world data"
print("World Totals")
world = response.json().get('world_total') # turn response to json() so we can extract "world_total"
for key, value in world.items(): # this finds key, value pairs in country
print(key, value)
# This code looks for USA in "countries_stats"
print("Country Totals")
countries = response.json().get('countries_stat')
for country in countries: # countries is a list
if country["country_name"] == "USA": # this filters for USA
for key, value in country.items(): # this finds key, value pairs in country
print(key, value)
World Totals 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 Country Totals 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': '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éunion', '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çao', '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'}]
# RapidAPI page https://rapidapi.com/Coinranking/api/coinranking1/
# Begin Rapid API Code
import requests
url = "https://coinranking1.p.rapidapi.com/coins"
querystring = {"referenceCurrencyUuid":"yhjMzLPhuIDl","timePeriod":"24h","tiers[0]":"1","orderBy":"marketCap","orderDirection":"desc","limit":"50","offset":"0"}
headers = {
"X-RapidAPI-Key": "jcmbea0fa2ff5msh7f14bf69be38ca6p175482jsn6c4988114560", # place your key here
"X-RapidAPI-Host": "coinranking1.p.rapidapi.com"
}
response = requests.request("GET", url, headers=headers, params=querystring)
print(response.text)
# End Rapid API Code
json = response.json() # convert response to python json object
# Observe data from an API. This is how data transports over the internet in a "JSON" text form
# - The JSON "text" is formed in dictionary {} and list [] divisions
# - To read the result, Data Scientist of Developer converts JSON into human readable form
# - Review the first line, look for the keys -- "status" and "data"
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) /Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb Cell 6 in <cell line: 5>() <a href='vscode-notebook-cell:/Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb#W5sZmlsZQ%3D%3D?line=0'>1</a> # Request Digital Coin <a href='vscode-notebook-cell:/Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb#W5sZmlsZQ%3D%3D?line=1'>2</a> # RapidAPI page https://rapidapi.com/Coinranking/api/coinranking1/ <a href='vscode-notebook-cell:/Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb#W5sZmlsZQ%3D%3D?line=2'>3</a> <a href='vscode-notebook-cell:/Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb#W5sZmlsZQ%3D%3D?line=3'>4</a> # Begin Rapid API Code ----> <a href='vscode-notebook-cell:/Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb#W5sZmlsZQ%3D%3D?line=4'>5</a> import requests <a href='vscode-notebook-cell:/Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb#W5sZmlsZQ%3D%3D?line=6'>7</a> url = "https://coinranking1.p.rapidapi.com/coins" <a href='vscode-notebook-cell:/Users/Theo/vscode/theo-repo/_notebooks/2022-10-03-PBL-python_rapidapi.ipynb#W5sZmlsZQ%3D%3D?line=7'>8</a> querystring = {"referenceCurrencyUuid":"yhjMzLPhuIDl","timePeriod":"24h","tiers[0]":"1","orderBy":"marketCap","orderDirection":"desc","limit":"50","offset":"0"} ModuleNotFoundError: No module named 'requests'
Formatting Digital Coin example
JSON text transferred from the API in the previous cell was converted to a Python Dictionary called json. The "coins" in the dictionary contain a list of the most relevant data. Look at the code and comments to see how the original text is turned into something understandable. Additionally, there are error check to make sure we are starting the code with the expectation that the API was run correctly.
"""
This cell is dependent on valid run of API above.
- try and except code is making sure "json" was properly run above
- inside second try is code that is used to process Coin API data
Note. Run this cell repeatedly to format data without re-activating API
"""
try:
print("JSON data is Python type: " + str(type(json)))
try:
# Extracting Coins JSON status, if the API worked
status = json.get('status')
print("API status: " + status)
print()
# Extracting Coins JSON data, data about the coins
data = json.get('data')
# Procedural abstraction of Print code for coins
def print_coin(c):
print(c["symbol"], c["price"])
print("Icon Url: " + c["iconUrl"])
print("Rank Url: " + c["coinrankingUrl"])
# Coins data was observed to be a list
for coin in data['coins']:
print_coin(coin)
print()
except:
print("Did you insert a valid key in X-RapidAPI-Key of API cell above?")
print(json)
except:
print("This cell is dependent on running API call in cell above!")
JSON data is Python type: <class 'dict'> Did you insert a valid key in X-RapidAPI-Key of API cell above? {'message': 'You are not subscribed to this API.'}
Go deeper into APIs
Web Development vs Jupyter Notebook. A notebook is certainly a great place to start. But, for your end of Trimester project we want you to build the skill to reference and use APIs within your Project. Here are some resources to get you started with this journey.
- In the Nighthawk Coders APCSP you can find an Overview and Examples using APIs:APCSP APIs menu- Using Covid RapidAPI
- JavaScript frontend API code in APCSP Fastpages GitHub repo: https://github.com/nighthawkcoders/APCSP/blob/master/_posts/2022-07-10-PBL-rapidapi.md
- Making a Jokes API (this will next API tech talk)
- Frontend. JavaScript frontend code in APCSP fastpages GitHub repo: https://github.com/nighthawkcoders/APCSP/blob/master/_posts/2022-07-10-PBL-jokes.md
- Backend Endpoints. Python code that allows Frontend access: https://github.com/nighthawkcoders/flask_portfolio/blob/main/api.py
- Backend Jokes Management. Python code that support Create, Read, Update, Delete (CRUD): https://github.com/nighthawkcoders/flask_portfolio/blob/main/model_jokes.py
Hacks
Find and use an API as part of your project. An API and a little coding logic will be a big step toward getting meaningful data for a project. There are many API providers, find one that might work for your project to complete this hack. When picking an API you are looking for something that will work with either JavaScript Fetch or Python Request. Here are some samples, these are not qualified in any way.
Show API and format results in either Web Page or Jupyter Notebook. Ultimately, I will expect that we do APIs in backend (Python/Flask). However, for this Hack you can pick your preference. We will discuss pros and cons in next API tech talk.