CDC NNDSS Weekly Outbreak & Disease Anomaly Monitor avatar

CDC NNDSS Weekly Outbreak & Disease Anomaly Monitor

Pricing

from $3.85 / 1,000 results

Go to Apify Store
CDC NNDSS Weekly Outbreak & Disease Anomaly Monitor

CDC NNDSS Weekly Outbreak & Disease Anomaly Monitor

Monitor CDC NNDSS weekly notifiable-disease cases. Computes spike ratio (current vs 52-week max), YoY cumulative change, and flags outbreak anomalies (new 52-week highs / spikes) per disease and reporting area. Keyless.

Pricing

from $3.85 / 1,000 results

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

CDC NNDSS Weekly Outbreak and Disease Anomaly Monitor

Turns CDC's National Notifiable Diseases Surveillance System weekly feed (1.9 million rows, keyless) into per-disease, per-reporting-area rows with spike ratio, year-over-year change and anomaly flags - plus the one thing raw NNDSS scrapers throw away: what a blank cell actually means.

The blank-cell problem, in numbers

CDC does not publish a number in most NNDSS cells. It publishes a flag. Measured live on 2026-08-01 across all 1,924,440 rows:

m1_flagRowsShareWhat it means
-1,770,93192.0%No reported cases - a verified ZERO
N70,1923.6%Not notifiable in that jurisdiction - unknown
U6,9670.36%Unavailable - unknown
(none)76,3504.0%A real case count is published

A verified zero and a jurisdiction that does not track the disease are different facts. This Actor reports both, separately, on every row.

Who it's for

  • Public-health and epidemiology teams watching a disease across states.
  • Pharma, diagnostics and biotech tracking disease burden by geography.
  • Journalists and researchers covering outbreaks.
  • AI agents needing a "check current US notifiable-disease signals" tool.

Example input

{
"diseases": ["Measles"],
"areas": ["Colorado", "Texas"],
"onlyAnomalies": true,
"maxResults": 1000
}

Inputs

InputTypeNotes
diseasesarraySubstring match, on purpose - Measles reaches Measles, Imported and Measles, Indigenous.
areasarrayReporting areas. An exact CDC area name is matched exactly; anything else falls back to a substring match and the row says so.
yearstringe.g. 2026. Blank = latest published weeks first.
weekFrom / weekTointegerMMWR week window.
minCasesintegerMinimum current-week cases, applied to the resolved count.
anomalyThresholdstringSpike ratio at which a row is flagged. Default 2.0.
onlyAnomaliesbooleanEmit only flagged rows.
maxResultsintegerRow cap. Truncation is reported in result_truncated.

Output fields

Identity

FieldDescription
diseaseCDC condition label.
reporting_areaCDC reporting area (state, region, or a Total roll-up).
year / weekMMWR year and week.
sort_orderCDC sort key (YYYYWW + geo). Unique across the whole dataset.
location_level_1 / location_level_2CDC location hierarchy.

Case counts, raw and resolved

FieldDescription
current_week_casesRaw current-week count. Null whenever CDC published a flag instead of a number.
current_week_cases_resolvedThe same cell with CDC's flag applied: the number, or 0 for a verified -, or null for a genuine unknown.
current_week_statusreported, zero_reported, not_notifiable, not_nationally_notifiable, not_previously_published, unavailable, not_calculated, unknown.
current_week_flagThe raw CDC flag.
max_52wk / max_52wk_resolved / max_52wk_status / max_52wk_flagPrior-52-week maximum, same treatment.
cum_ytd / cum_ytd_resolved / cum_ytd_status / cum_ytd_flagCumulative year to date.
cum_prior_ytd / cum_prior_ytd_resolved / cum_prior_ytd_status / cum_prior_ytd_flagPrior-year cumulative for the same period.
reported_this_weekTrue when cases were reported, false when CDC published an explicit zero, null when the jurisdiction does not report it.
surveillance_applicableFalse where the disease is not notifiable in that area. A false here is not a clean week.

Signals

FieldDescription
spike_ratioCurrent week divided by the 52-week maximum.
yoy_cum_change_pctCumulative YTD vs the same period last year, percent.
anomalyTrue when any reason fired.
anomaly_reasonsnew_52wk_high, spike_ratio>=N, emergence_after_zero_52wk, yoy_from_zero.
anomaly_threshold_usedThe threshold this run applied.

Freshness, status and provenance

FieldDescription
is_latest_published_weekTrue for the newest published week - the most provisional and the most likely to be revised upward.
latest_published_year / latest_published_weekNewest week CDC had published at run time.
weeks_behind_todayPublication lag in ISO weeks (measured 2026-08-01: 2).
data_is_provisionalAlways true. NNDSS weekly counts are provisional.
area_match_modeexact, substring, mixed or none.
cdc_nndss_statusok or partial_error. Never blank.
cdc_nndss_errorError text if a page failed mid-run. Null on a healthy run.
rows_pulledRaw CDC rows retrieved before filtering.
result_truncatedTrue when the cap or a failure stopped the pull, so the anomaly list is not exhaustive.
dataset_url / source_system / retrieved_atProvenance.

Reliability - what this Actor asserts live, on every run

An offline fixture cannot see a degraded upstream, because the fixture was shaped from the degraded data. Before any billable row is emitted, the run fails if any of these regress. Every measured value is logged.

  1. Column presence - all 15 NNDSS columns it reads, including all four suppression flags. Losing m1_flag would silently erase the only signal that separates a verified zero from an unknown.
  2. Closed flag vocabulary - an unrecognised suppression flag fails the run. A new code could mean "zero" or could mean "unknown", and guessing fabricates a clean week or erases a real one.
  3. Dataset size - measured 2026-08-01: 1,924,440 rows.
  4. Negative control - an impossible disease name must match exactly 0 rows. If Socrata ever stops applying an unsatisfied $where, every filtered outbreak pull would silently become an unfiltered slice of the whole file.
  5. Positive canary - label LIKE %MEASLES% must match a plausible band (measured 2026-08-01: 33,320).
  6. Freshness - the latest published week must be within 20 ISO weeks of today (measured 2026-08-01: 2 weeks). A frozen surveillance feed is the classic silent failure.
  7. Reporting-area vocabulary - at least 20 distinct areas must be published, because area filters are resolved against that list.

If CDC never answers the outbreak query at all, the run fails with an explicit message. It never emits "no outbreak signals detected", which is a different fact.

Limits you should know

  • NNDSS weekly counts are provisional and are revised as jurisdictions report. The newest week is the least complete; is_latest_published_week marks it.
  • Reporting areas appear in two vintages, mixed case and uppercase (Virginia and VIRGINIA). Exact matching handles both.
  • Total and regional rows (New England, and so on) are roll-ups, not states. Filter on reporting_area if you want states only.
  • These are notifiable-disease case reports, not deaths and not hospitalisations.

Use as an MCP tool

Available to AI agents through Apify's MCP server. An agent can read current_week_status to tell "zero cases" from "not tracked here" before drawing a conclusion, and result_truncated to decide whether to re-query.

Pricing

Pay per result: one event per emitted disease-week row. A run that fails a drift assertion or never reaches CDC emits nothing and bills nothing.

FAQ

Why is current_week_cases null but current_week_cases_resolved 0? Because CDC published the - flag rather than the digit 0. The raw column is preserved for pipelines built against it; the resolved column is the fact.

Why does v1.1 flag more rows than v1.0? Two reasons were added: emergence_after_zero_52wk and yoy_from_zero. Both fire only when CDC published an explicit - (verified zero) baseline, never on an unknown one. Measured on a live 1,000-row Measles pull: 122 rows newly flagged, all yoy_from_zero. No row that v1.0 flagged is unflagged. If you want the v1.0 signal set, filter anomaly_reasons to new_52wk_high and spike_ratio>=N.

Does an anomaly flag mean an outbreak? No. These are screening signals over provisional counts. Confirm against the CDC weekly tables before acting.

Why did my Virginia query used to include West Virginia? Because areas were matched as substrings. Measured live, %VIRGINIA% returned 54,984 rows of which exactly half were West Virginia. Exact area names are now matched exactly.

  • CMS Open Payments Roll-up - industry payments to physicians.
  • Drug Shortage Delta Monitor - openFDA drug shortage changes.
  • HRSA Shortage Designation Monitor - HPSA and MUA designations.