Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time


Fetch latest data and deploy with Datasette

Deploys a Datasette instance with data from the following sources:

The Datasette instance lives at and is updated hourly using a scheduled GitHub Action.

More about this project on my blog: COVID-19 numbers in Datasette.

This repository uses the deployment pattern described in Deploying a data API using GitHub Actions and Cloud Run.

Using this data responsibly

Please do not use this tool to share information about COVID-19 without making absolutely sure you understand how the data is structured and sourced.

Recommended reading:

Johns Hopkins

The database is partly built from the daily report CSV files in the Johns Hopkins CSSE csse_covid_19_data folder - be sure to consult their README for documentation of the fields.

They are actively making changes to how they report data. You should follow their issues closely for updates - for example this issue about switching from reporting USA data at the county to the state level.

The build script for the database makes one alteration to their data: it attempts to fill any missing latitude and longitude columns with values from similar rows.

If you are going to make use of those columns, make sure you understand how that backfill mechanism works in case it affects your calculations in some way.

The New York Times

The New York Times has a comprehensive README describing how their data is sourced. You should read it! They announced their data in We’re Sharing Coronavirus Case Data for Every U.S. County.

They are using the data for their Coronavirus in the U.S.: Latest Map and Case Count article.

The Los Angeles Times

The Los Angeles Time comprehensive README describes the data in the latimes_agency_totals, latimes_county_totals, latimes_place_totals and latimes_state_totals tables.

See To aid coronavirus fight, The Times releases database of California cases for background on the release of this data.

The data is used for their Tracking coronavirus in California page, which is constantly updated.

The Economist

The Economist publish the data behind their ongoing interactive Tracking covid-19 excess deaths across countries. Their README describes the data sources they use for individual countries in detail.

This data is imported into the economist_excess_deaths and economist_historical_deaths tables, with one alteration: a cadence column is added showing if each row is being collected on either a weekly or monthly basis.

US Census

Two additional tables contain population data from the US Census.

This repository includes CSV data for both of these tables.

The latest_ny_times_counties_with_populations view uses this data to calculate cases and deaths per million for US counties, based on the latest county figures from the New York Times.

Example issues

  • Remember: the number of reported cases is very heavily influenced by the availability of testing.
  • This Twitter thread is an excellent overview of the challenges involved in comparing numbers from different states and countries.
  • On the 23rd March 2020 Johns Hopkins added four new columns to the daily CSV file: admin2, fips, active and combined_key. These are not present in older CSV files. #4.
  • Some countries (like Italy) are represented by just the rows with country_or_region set to Italy (and province_or_state set to null). Larger countries such as the United States have multiple rows for each day divided into separate province_or_state values - example.
  • Santa Clara County appears to be represented as Santa Clara, CA in some records and Santa Clara County, CA in others - example.
  • Passengers from the Diamond Princess cruise are represented by a number of different rows with "From Diamond Princess" in their province_or_state column - example.
  • The latest_ny_times_counties_with_populations view omits some counties, notably all New York City counties, because the New York Times groups all New York City data into rows with county equal to "New York City" and an empty fips column. Thus total cases represented in latest_ny_times_counties_with_populations are lower than total cases represented in ny_times_us_states by at least the number of cases in New York City.