Global Health Stats Scraper - COVID, Vaccines & Epidemiology avatar

Global Health Stats Scraper - COVID, Vaccines & Epidemiology

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Global Health Stats Scraper - COVID, Vaccines & Epidemiology

Global Health Stats Scraper - COVID, Vaccines & Epidemiology

Scrape global epidemiological data by country, continent, or US state. Extract COVID-19 cases, deaths, recoveries, vaccinations, and historical time series. No API key, no login.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Global Health Stats Scraper — COVID-19 Data, Vaccines, Historical Time Series & US States

Extract comprehensive epidemiological data for 200+ countries, all US states, and global continents — including COVID-19 case counts, deaths, recoveries, vaccination coverage, and historical time series — with zero API keys or login required.

What does Global Health Stats Scraper do?

This actor queries the disease.sh open-source disease data API (https://disease.sh/v3/) to retrieve real-time and historical epidemiological statistics. It operates in four configurable modes:

  • Countries mode fetches live COVID-19 stats for all 200+ countries or a filtered subset — cases, deaths, recoveries, active cases, critical patients, tests performed, and population figures, all in a single structured dataset.
  • Historical mode unpacks time-series data across every date available (up to 1,000+ days per country), producing one row per country per date with cumulative case/death/recovered counts.
  • Vaccine mode retrieves vaccination coverage timelines, showing how many doses were administered per country per day across the entire rollout period.
  • US States mode delivers state-level breakdowns for all 50+ US states, mirroring the country format but granular to individual states.

All data is fetched from a stable, openly accessible JSON API — no scraping of HTML, no CAPTCHA challenges, no login walls. The API is updated multiple times per day from Johns Hopkins, Worldometer, and other authoritative sources.

Who is it for?

  • Epidemiologists and public health researchers who need structured, downloadable disease datasets without manual data collection.
  • Journalists and data analysts tracking pandemic trends, comparing country responses, or building interactive dashboards.
  • Software developers building health apps, monitoring tools, or integrating live disease stats into their platforms.
  • Students and academics who need historical COVID-19 data for statistical modeling, machine learning, or coursework projects.
  • Policy analysts and NGOs monitoring vaccination rollouts and healthcare outcomes across specific countries or regions.

Use cases

  • Download complete COVID-19 country-by-country statistics for 200+ nations in one run for a global comparison spreadsheet.
  • Pull historical case time series for a set of countries (e.g., USA, Germany, Brazil) and load into Google Sheets for trend visualization.
  • Track vaccination coverage progress per country over the entire rollout period, extracting daily vaccination totals.
  • Monitor all US state-level data simultaneously, feeding a real-time dashboard or alerting system.
  • Build training datasets for machine learning models predicting disease spread, healthcare system strain, or policy intervention effects.

Why use Global Health Stats Scraper?

  • Completely keyless: no API registration, no token management, no account needed.
  • 20+ output fields per record: country, continent, ISO codes, cases, deaths, recoveries, active, critical, tests, population, per-million ratios, vaccination totals, and flag URLs.
  • Bulk output: countries mode yields 200+ rows, historical mode yields tens of thousands of time-series rows in a single run.
  • Four modes in one actor: switch between live stats, historical trends, vaccination data, and US state detail without switching tools.
  • Country filtering: supply a list of country names or ISO codes to narrow output to only the countries you care about.
  • Export to CSV, JSON, or Excel directly from the Apify dataset interface or via API — no post-processing required.

What data can you extract?

The actor returns structured records with the following fields depending on mode:

FieldTypeDescription
modestringScrape mode: countries, historical, vaccine, usStates
countrystringCountry name (or US state name in usStates mode)
continentstringContinent name (e.g., Asia, Europe, North America)
datestringDate in YYYY-MM-DD (historical/vaccine mode only)
iso2stringISO 3166-1 alpha-2 country code (e.g., US, DE)
iso3stringISO 3166-1 alpha-3 country code (e.g., USA, DEU)
flagstringURL to country flag image
casesstringCumulative confirmed COVID-19 cases
todayCasesstringNew cases reported today
deathsstringCumulative COVID-19 deaths
todayDeathsstringNew deaths reported today
recoveredstringTotal recovered patients
activestringCurrently active (cases - deaths - recovered)
criticalstringPatients in critical/ICU condition
testsstringTotal COVID-19 tests performed
populationstringCountry population
casesPerMillionstringCases per one million population
deathsPerMillionstringDeaths per one million population
testsPerMillionstringTests per one million population
vaccinatedstringTotal vaccine doses administered (vaccine mode)
vaccinatedPerHundredstringDaily doses or per-hundred rate (vaccine mode)
updatedstringDate of last data update (YYYY-MM-DD)

Sample JSON output (countries mode):

{
"mode": "countries",
"country": "Germany",
"continent": "Europe",
"date": null,
"iso2": "DE",
"iso3": "DEU",
"flag": "https://disease.sh/assets/img/flags/de.png",
"cases": "38437756",
"todayCases": "0",
"deaths": "174979",
"todayDeaths": "0",
"recovered": "37900000",
"active": "362777",
"critical": "605",
"tests": "122332384",
"population": "84270625",
"casesPerMillion": "456216",
"deathsPerMillion": "2077",
"testsPerMillion": "1452176",
"vaccinated": null,
"vaccinatedPerHundred": null,
"updated": "2024-03-15"
}

How to use

Option A — All countries (countries mode)

Get live COVID-19 statistics for every country in one run. No filters needed.

Steps:

  1. Open the actor on Apify and click Try for free.
  2. Set Mode to countries.
  3. Leave the Countries filter empty.
  4. Click Start and wait for results (typically under 30 seconds).

Input JSON:

{
"mode": "countries"
}

Option B — Specific countries with historical time series

Pull day-by-day case counts for a specific list of countries over a custom time window.

Steps:

  1. Set Mode to historical.
  2. Enter country names or ISO codes in the Countries filter (e.g., USA, Germany, Turkey).
  3. Set Historical days to the number of days back (e.g., 90 for three months, 0 for all data).
  4. Click Start.

Input JSON:

{
"mode": "historical",
"countries": ["USA", "Germany", "Turkey"],
"lastDays": 90
}

Option C — Vaccination coverage

Retrieve daily vaccination dose counts per country.

Input JSON:

{
"mode": "vaccine",
"countries": ["USA", "UK", "India"],
"lastDays": 60
}

Option D — US States breakdown

Get per-state COVID statistics for all US states.

Input JSON:

{
"mode": "usStates"
}

Input parameters

ParameterTypeDefaultDescription
modestringcountriesData mode: countries, historical, vaccine, usStates
countriesarray[]Optional list of country names or ISO codes to filter. Empty = all countries.
lastDaysinteger30Days of historical or vaccine data to retrieve. Set 0 for all available history.
proxyobjectdatacenterApify proxy configuration. Datacenter proxies work fine.

Full input example:

{
"mode": "historical",
"countries": ["USA", "Brazil", "India", "Germany"],
"lastDays": 365,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["SHADER_DATACENTER"]
}
}

Output example

Historical time series row:

{
"mode": "historical",
"country": "USA",
"continent": null,
"date": "2022-01-15",
"iso2": null,
"iso3": null,
"flag": null,
"cases": "64984610",
"todayCases": null,
"deaths": "848877",
"todayDeaths": null,
"recovered": "40547832",
"active": null,
"critical": null,
"tests": null,
"population": null,
"casesPerMillion": null,
"deathsPerMillion": null,
"testsPerMillion": null,
"vaccinated": null,
"vaccinatedPerHundred": null,
"updated": null
}

Tips for best results

  • Use mode: countries for a quick snapshot of all 200+ countries — it completes in under 30 seconds and returns 200+ rows.
  • For historical analysis, set lastDays: 0 to retrieve the entire available timeline — this can return 50,000+ rows for all countries combined.
  • When targeting specific countries, use ISO codes (e.g., US, DE, TR) rather than full country names to avoid mismatches.
  • The vaccine mode with fullData: true returns daily dose counts — more useful for trend analysis than cumulative totals alone.
  • For US state data, no countries filter is needed — the usStates mode always returns all 50+ states.
  • Schedule this actor daily using Apify Scheduler to build a running historical archive of global health data.
  • Use Apify Webhooks to trigger a Slack or email notification when a run completes, giving you fresh data alerts automatically.
  • Combine countries and historical modes in consecutive scheduled runs to maintain both a current snapshot and a growing time series dataset.
  • Export results directly to Google Sheets via the Apify Google Sheets integration for automatic dashboard updates.
  • The API updates multiple times per day — running this actor twice daily captures both morning and evening data cycles.

Integrations

Google Sheets — Use the native Apify → Google Sheets integration to automatically push every new run's results into a spreadsheet. Ideal for building live dashboards that update without manual downloads.

Slack — Configure a Webhook in Apify to post a message to your Slack channel whenever a scheduled run completes, keeping your team updated on the latest data.

Zapier / Make — Connect Apify to thousands of apps via Zapier or Make. Trigger workflows on run completion, push data to Airtable, Notion, or any database, or send automated reports.

Scheduled runs — Use Apify Scheduler to run this actor daily or weekly. Build a continuously growing time series dataset that logs global health stats automatically over months.

Webhooks — POST run results to your own endpoint for custom processing — feed a dashboard, trigger analytics pipelines, or archive data to S3.

API usage

cURL:

curl -X POST \
"https://api.apify.com/v2/acts/logiover~global-health-stats-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"countries"}'

Node.js (Apify client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/global-health-stats-scraper').call({
mode: 'countries',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Fetched ${items.length} health records`);

Python:

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_TOKEN")
run = client.actor("logiover/global-health-stats-scraper").call(run_input={
"mode": "historical",
"countries": ["USA", "Germany"],
"lastDays": 90,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["country"], item["date"], item["cases"])

Use with AI agents (MCP)

Global Health Stats Scraper is available as an MCP (Model Context Protocol) tool, making it directly callable from Claude and other AI agents. You can prompt an AI to pull live health data on your behalf:

"Use the Global Health Stats Scraper to fetch the latest COVID-19 statistics for Germany, France, and Italy, then summarize which country has the highest active case rate per million population."

The actor returns structured JSON that AI agents can reason over directly — no manual data wrangling required.

FAQ

Does this actor require an API key?

No. The disease.sh API is fully open and keyless. You do not need to register, create an account, or obtain any token. Just run the actor and get data.

How many countries are covered?

The countries mode covers 200+ countries and territories globally. The usStates mode covers all 50 US states plus territories. The historical and vaccine modes cover roughly the same set of countries, depending on data availability.

How far back does historical data go?

The disease.sh API provides historical data back to early 2020 for most countries. Set lastDays: 0 to retrieve the entire available timeline. For popular countries like the USA, this yields 1,000+ daily data points.

Why are some fields null?

Not all endpoints return all fields. For example, historical mode only returns cases, deaths, and recovered — not tests or population. vaccine mode returns vaccination figures only. Fields not available in a given mode are returned as null.

What happens if I search for a country that doesn't exist?

The actor will log a warning and exit cleanly. Make sure to use either the full country name (e.g., "Germany") or a valid ISO-2 code (e.g., "DE"). You can check valid names against the list returned by an unfiltered countries mode run.

Can I export results to Excel or CSV?

Yes. From the Apify dataset view, click Export and select your preferred format — CSV, JSON, Excel (XLSX), XML, or RSS. All formats are available for free.

How fast does it run?

Countries mode completes in 10–30 seconds for all 200+ countries. Historical mode with lastDays: 0 for all countries may take 2–5 minutes due to the volume of data rows. US states mode completes in under 15 seconds.

Yes. disease.sh is an open-source project that aggregates publicly available health data from sources including Johns Hopkins University and Worldometer. The data is freely available and intended for public use. This actor simply accesses the API as any browser or app would.

How often is the data updated?

The disease.sh API typically updates multiple times per day — approximately every 15–30 minutes for live data, and once per day for historical snapshots. Schedule your runs accordingly.

Can I filter by continent?

The continents endpoint exists on disease.sh, but this actor focuses on country and state-level granularity. To filter by continent, run countries mode without filters and then group the results by the continent field in your spreadsheet or database.

What if I get zero results?

Zero results can happen if you specify an invalid country name or ISO code. Try using the actor without a countries filter first to confirm the API is responding, then verify your country names against the output list.

Yes — see the Related scrapers section below for links to other data extraction tools in the logiover portfolio.

This actor retrieves data from the disease.sh open API, which aggregates publicly available epidemiological data from Johns Hopkins University, Worldometer, CDC, and other authoritative sources. All data accessed is public domain and provided by disease.sh explicitly for open use. No authentication is bypassed, no private data is accessed, and no terms of service are violated. Users are responsible for ensuring their use of the extracted data complies with applicable laws and platform terms in their jurisdiction.