BYTETOOLS

disease.sh API

Free open disease and health statistics API with no key: global and per-country case data, historical time series and vaccination figures. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the disease.sh API?

disease.sh is a free, key-free API providing global disease and public health statistics, including per-country breakdowns, historical time series and vaccination data, aggregated from official sources.

disease.sh aggregates public health data from official sources including Johns Hopkins University and the World Health Organization, and exposes it through a single consistent JSON interface with no key.

It is a good example of an API worth using for its structure rather than its novelty: the country endpoints return consistent, comparable records, which makes cross-country charts straightforward to build. Bear in mind that reporting cadence varies by country, so timestamps are per-record rather than global.

Quick facts

Base URL
https://disease.sh/v3
Authentication
No key required.
Rate limit
Approximately 100 requests per minute per IP.
Pricing
Free and open source.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the disease.sh API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Fetch global health statistics

GET https://disease.sh/v3/covid-19/all

curl
curl 'https://disease.sh/v3/covid-19/all'
JavaScript (fetch)
const res = await fetch("https://disease.sh/v3/covid-19/all");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://disease.sh/v3/covid-19/all", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "updated": 1787144493887,
  "cases": 704753890,
  "todayCases": 0,
  "deaths": 7010681,
  "todayDeaths": 0,
  "recovered": 675619811,
  "todayRecovered": 790,
  "active": 22123398,
  "critical": 34794,
  "casesPerOneMillion": 90413,
  "deathsPerOneMillion": 899.4,
  "tests": 7026505313,
  "testsPerOneMillion": 884400.59,
  "population": 7944935131,
  "oneCasePerPeople": 0,
  "oneDeathPerPeople": 0,
  "oneTestPerPeople": 0,
  "activePerOneMillion": 2784.59,
  "recoveredPerOneMillion": 85037.8,
  "criticalPerOneMillion": 4.38,
  "affectedCountries": 231
}

Parameters

ParameterTypeRequiredDescription
<scope>pathRequiredall for global totals, countries for per-country data. all
<country>pathOptionalCountry name, ISO2 or ISO3 code. pakistan
lastdaysqueryOptionalDays of history on historical endpoints. 30
sortqueryOptionalSort country results by a field. cases

Response fields

cases / deaths / recoveredinteger
Cumulative totals.
todayCases / todayDeathsinteger
Change reported today.
active / criticalinteger
Current active and critical counts.
populationinteger
Country population, useful for per-capita normalisation.
updatedinteger
Unix timestamp in milliseconds of the last update.

What you can build with the disease.sh API

  • Build public health dashboards and comparison charts
  • Analyse per-capita rates by combining counts with population
  • Plot historical time series for a country or region
  • Teach data visualisation with a real, structured dataset

Common errors and how to fix them

404

Country name not recognised.

Fix: Use ISO2 or ISO3 codes rather than informal country names, which vary.

Stale `updated` timestamp

Reporting cadence differs by country.

Fix: Display the per-record `updated` value rather than implying all data is equally fresh.

disease.sh API — frequently asked questions

Is disease.sh free to use?

Yes, completely free and open source with no API key, limited to roughly 100 requests per minute per IP.

Where does the data come from?

It aggregates official sources including Johns Hopkins University and the World Health Organization, normalising them into one consistent JSON schema.

Can I get historical data?

Yes, the historical endpoints accept a `lastdays` parameter and return time series suitable for charting trends.

How do I calculate per-capita rates?

Country records include a `population` field, so you can divide case or death counts by population directly without sourcing demographics separately.

Tools that pair with this API

disease.sh is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.