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 19 Aug 2026

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 19 Aug 2026, 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

Alternatives to disease.sh API

If disease.sh does not fit, these news & open data apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
Hacker NewsOfficial Hacker News API with no key: top stories, comments, users and live item feeds via Firebase. Extremely stable. Tested curl example and live JSON.No keyYes19 Aug 2026
Spaceflight NewsFree spaceflight news API with no key: articles, blogs and reports from major space outlets, with search, filtering and pagination. Tested curl example.No keyYes19 Aug 2026
Hacker News Search (Algolia)Free Algolia-powered Hacker News search API with no key: full-text search across all stories and comments with filtering by points, date and author. Tested.No keyYes20 Aug 2026
LobstersFree Lobsters API with no key: hottest and newest technology stories with tags, scores, comments and submitter data as plain JSON. No signup. Tested.No keyNo20 Aug 2026
NoozraFree news headlines API with no key: articles from 200+ curated sources with headline, source, category, image URL and its pixel dimensions. Tested example included.No keyYes21 Aug 2026
RSS to JSONFree RSS to JSON API with no key: convert any RSS or Atom feed into clean JSON, with feed metadata, items, thumbnails and publication dates. Tested example.No keyYes20 Aug 2026
All News & Open Data APIs

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