Global Health Stats Scraper - COVID, Vaccines & Epidemiology
Pricing
from $1.50 / 1,000 results
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.
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:
| Field | Type | Description |
|---|---|---|
mode | string | Scrape mode: countries, historical, vaccine, usStates |
country | string | Country name (or US state name in usStates mode) |
continent | string | Continent name (e.g., Asia, Europe, North America) |
date | string | Date in YYYY-MM-DD (historical/vaccine mode only) |
iso2 | string | ISO 3166-1 alpha-2 country code (e.g., US, DE) |
iso3 | string | ISO 3166-1 alpha-3 country code (e.g., USA, DEU) |
flag | string | URL to country flag image |
cases | string | Cumulative confirmed COVID-19 cases |
todayCases | string | New cases reported today |
deaths | string | Cumulative COVID-19 deaths |
todayDeaths | string | New deaths reported today |
recovered | string | Total recovered patients |
active | string | Currently active (cases - deaths - recovered) |
critical | string | Patients in critical/ICU condition |
tests | string | Total COVID-19 tests performed |
population | string | Country population |
casesPerMillion | string | Cases per one million population |
deathsPerMillion | string | Deaths per one million population |
testsPerMillion | string | Tests per one million population |
vaccinated | string | Total vaccine doses administered (vaccine mode) |
vaccinatedPerHundred | string | Daily doses or per-hundred rate (vaccine mode) |
updated | string | Date 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:
- Open the actor on Apify and click Try for free.
- Set Mode to
countries. - Leave the Countries filter empty.
- 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:
- Set Mode to
historical. - Enter country names or ISO codes in the Countries filter (e.g.,
USA,Germany,Turkey). - Set Historical days to the number of days back (e.g.,
90for three months,0for all data). - 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
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | countries | Data mode: countries, historical, vaccine, usStates |
countries | array | [] | Optional list of country names or ISO codes to filter. Empty = all countries. |
lastDays | integer | 30 | Days of historical or vaccine data to retrieve. Set 0 for all available history. |
proxy | object | datacenter | Apify 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: truereturns daily dose counts — more useful for trend analysis than cumulative totals alone. - For US state data, no
countriesfilter is needed — theusStatesmode 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 ApifyClientclient = 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.
Is this legal to use?
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.
Are there related actors for other health data?
Yes — see the Related scrapers section below for links to other data extraction tools in the logiover portfolio.
Is it legal?
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.
Related scrapers
- logiover/b2b-lead-scraper — Extract B2B company leads by industry and country using OSM/Overpass data.
- logiover/ct-domain-monitor — Monitor Certificate Transparency logs for new domain registrations.
- logiover/cve-advisory-tracker — Track CVE vulnerability advisories from NVD, OSV, and GitHub Security Advisories.
- logiover/news-multi-source-scraper — Aggregate news from multiple sources by keyword or topic for media monitoring.