Global Health & Epidemic Statistics Scraper avatar

Global Health & Epidemic Statistics Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Global Health & Epidemic Statistics Scraper

Global Health & Epidemic Statistics Scraper

$0.5/1K ๐Ÿ”ฅ Global health stats scraper! Country epidemic counters, historical curves & vaccination data. No key. JSON, CSV, Excel or API in seconds. Feed dashboards & research โšก

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape country-level epidemic counters, vaccination coverage curves, daily historical time series and continent rollups into one flat table โ€” no API key, no login, no proxy required.

The Actor pulls from the free public disease.sh v3 API (the aggregation layer over Johns Hopkins CSSE, Our World in Data vaccination data and world population figures) and turns its nested JSON into clean, one-row-per-record datasets you can export as CSV, JSON, Excel, XML or feed straight into a BI tool.


โš ๏ธ Read this first: how fresh is this data?

Be aware that these are historical, largely frozen pandemic-era datasets โ€” not a live outbreak feed. We would rather tell you up front than have you discover it after a run. Measured on 28 July 2026:

ModeData coverage actually observedStatus
countriesCumulative totals per country; updated field re-stamped 2026-07-28T17:57:28ZTimestamp is live, the numbers are not โ€” todayCases / todayDeaths came back null/zero for all 231 countries
historical2020-01-22 โ†’ 2023-03-09 (1,143 days)Frozen. Johns Hopkins CSSE stopped collecting on 10 March 2023
vaccine2021-06-13 โ†’ 2025-07-21 (1,500 days available)Frozen at the tail; recent days repeat the same cumulative dose count
continents6 continents, same cumulative basis as countriesFrozen, timestamp re-stamped

In plain words: the updated field will always look like "a few minutes ago" because the disease.sh servers restamp their cache โ€” but the underlying counters have not moved since the global COVID-19 reporting programmes wound down. Treat this as an archive of the pandemic, which is exactly what makes it useful for teaching, retrospective epidemiology, dashboard prototyping and reproducible research: the numbers are stable, complete and free.

If you need currently updated official health indicators (immunization coverage, life expectancy, mortality, NCDs, health-system metrics), use the sibling Actor described below.

How this differs from who-gho-scraper

They are complementary, not duplicates:

who-gho-scraperglobal-health-stats-scraper (this one)
SourceWHO Global Health Observatory (official WHO indicator API)disease.sh v3 (JHU CSSE + OWID aggregation)
ShapeIndicator time series โ€” pick an indicator code, get country-year values with WHO dimensionsCountry-level epidemic counters, curves and continent rollups in one flat schema
ContentThousands of health indicators: life expectancy, immunization, TB, malaria, NCDs, health financingPandemic case/death/test/recovery counters, per-million rates, CFR, vaccine doses, continent aggregates
GranularityOne row per indicator ร— country ร— yearOne row per country (current) or per country ร— day
RecencyUpdated by WHO on its own reporting cycleFrozen archive โ€” see the table above

Use who-gho-scraper for official WHO indicator research. Use this Actor when you want the flat, daily-granular epidemic counter table with per-million normalisation and ready-made day-over-day diffs.


Modes

Every mode was probed against the live API before shipping; retired disease.sh sub-APIs (/v3/influenza/*, /v3/gov/* โ€” both return 404) are deliberately not offered, so no mode can silently return nothing.

1. countries โ€” current per-country counters (default)

One row per country: cases, deaths, recovered, active, critical, tests, plus population, ISO codes, coordinates, flag URL, per-million rates and a computed case-fatality percentage. 231 countries available.

2. historical โ€” daily time series

The disease.sh timeline is a dict keyed by a M/D/YY string ("3/9/23" = 9 March 2023). This Actor un-pivots it into proper chronological rows with ISO dates and computes new_cases / new_deaths day-over-day diffs for you (first row is null, never a fake zero).

3. continents โ€” rollups

Six continent aggregates with the member-country list included.

4. vaccine โ€” vaccination coverage curves

Cumulative doses administered per country and day, with new_doses diffs.


Input

FieldTypeDefaultDescription
modeselectcountriescountries, historical, continents or vaccine
countriesarray["Germany","USA","Brazil"]Country names or ISO-2/ISO-3 codes. Empty = all countries (countries mode)
lastDaysinteger30Days of history for historical / vaccine (max 1500 = full series)
continentFilterstringโ€“Europe, Asia, Africa, North America, South America, Australia-Oceania
maxItemsinteger500Row cap (max 5000)
{
"mode": "historical",
"countries": ["Germany", "USA", "Brazil"],
"lastDays": 90,
"maxItems": 1000
}

Output

countries mode:

{
"type": "country",
"country": "Germany",
"iso2": "DE",
"iso3": "DEU",
"continent": "Europe",
"population": 83883596,
"latitude": 51,
"longitude": 9,
"flag_url": "https://disease.sh/assets/img/flags/de.png",
"cases": 38828995,
"today_cases": null,
"deaths": 183027,
"today_deaths": null,
"recovered": 38240600,
"active": 405368,
"critical": null,
"tests": 122332384,
"cases_per_million": 462891,
"deaths_per_million": 2182,
"tests_per_million": 1458359,
"active_per_million": 4832.51,
"critical_per_million": null,
"case_fatality_pct": 0.471,
"updated": "2026-07-28T17:57:27Z",
"source": "disease.sh",
"scraped_at": "2026-07-28T18:07:27Z"
}

historical mode:

{
"type": "historical",
"country": "Germany",
"province": "mainland",
"date": "2023-03-09",
"cases": 38249060,
"deaths": 168935,
"recovered": 0,
"new_cases": 7829,
"new_deaths": 127,
"source": "disease.sh",
"scraped_at": "2026-07-28T18:07:28Z"
}

vaccine mode returns doses_administered + new_doses; continents mode returns the aggregate counters plus the countries member list. Every field is nullable โ€” missing upstream values stay null instead of being faked as 0.

Use cases

  • Public health dashboards โ€” a stable, key-less backing dataset for Grafana / Power BI / Looker Studio prototypes with per-million normalisation already computed.
  • Epidemiology research โ€” reproducible cumulative and incident curves for 231 countries over the full 2020โ€“2023 window, with the M/D/YY timeline properly parsed.
  • Data journalism โ€” cross-country comparisons of case-fatality rates, testing intensity and vaccination rollout speed, exportable to CSV in one click.
  • Teaching datasets โ€” a clean, frozen, well-documented time series for statistics, data-science and public-health courses; results never shift under students' feet mid-semester.

Pricing

Roughly $0.50 per 1,000 rows on the Apify platform, plus the usual platform compute. A full countries run is 231 rows; a 90-day, 3-country historical run is 270 rows.

Notes & limits

  • The upstream API is free and key-less but rate-limited; requests are batched (up to 20 countries per historical call) and paced.
  • province is usually mainland; a handful of territories are reported separately upstream.
  • recovered is 0 for many countries after mid-2021 โ€” that is an upstream reporting artefact, not a scraper bug.
  • Unknown country names return no data for that country; the run raises a clear error if nothing was scraped.

Data originates from public, freely accessible endpoints. disease.sh aggregates Johns Hopkins CSSE, Our World in Data and Worldometer figures; check their terms and cite the original sources in any publication. No personal data is collected.