# Turn runtime support dates into an upgrade review

Track exact Node.js and Python release cycles, preserve support-policy evidence, and attach the observations to your own service inventory.

## Quick start without code

Open https://apify.com/maydit/software-lifecycle-watchlist-monitor, paste input.json into its JSON input editor, review current pricing and set a maximum run charge of $0.05. Run manually, check SUMMARY and the result count, then export CSV. Use your own Apify account.

## Downloadable manual runner

Save config.json and run-workflow.mjs in the same new folder. Requires Node.js 22 or newer; no npm install. Supply APIFY_TOKEN through a secure environment variable using your own token. Do not put it in config.json or a URL.

Run without flags for offline instructions:

    node run-workflow.mjs

After reviewing input, scope and current pricing, start one potentially chargeable run:

    node run-workflow.mjs --run

The runner requests 256 MiB, 180 seconds and a $0.05 maximum total charge. The input time budget is 120 seconds. This cap may stop a run before all requested data is saved. It never retries the launch POST, creates a schedule, sends messages, or writes to a remote destination. It uses the Actor's current default build.

If a launch response is uncertain, inspect Apify Console before doing anything else. Resume the accepted run using its ID, with the same config and a new output folder:

    node run-workflow.mjs --resume RUN_ID

The runner checks Actor identity, original input, terminal status, SUMMARY, result count and row identities. It stops on source failures and time/charge stops; a deliberate result cap is allowed and remains a bounded sample. It polls for at most 270 seconds; timeout does not abort or relaunch the Actor.

## Destination

CSV and JSON are written into a new local results folder. Import CSV as literal text (RAW), preserving JSON for exact types. Upsert on record_key and deduplicate replay_key. Add owner/review notes in your own sheet. No sheet is automatically connected. Empty or absent rows never authorize deletion.

## Steps

1. Replace the four example cycles with exact versions from your own inventory. This Actor does not scan installed software.
2. Read endOfLifeDate and activeSupportEnds separately. A general maintained flag does not establish your entitlement to commercial or extended support.
3. Open vendorPolicyUrl to confirm the policy for the specific release and your support arrangement.
4. Join product and cycle to your inventory, then assign an owner and a proposed migration date in your review sheet.
5. For repeated date-change observations, enable comparePrevious with your own snapshotName and run sequentially. The supplied sample leaves history off.

## Limits

- Dates come from the community-maintained endoflife.date service. The vendor policy is the follow-up authority.
- Countdowns use the observation date in UTC and will change when you rerun.
- A support deadline is not a vulnerability scan or proof of compliance.

## Example pricing

At FREE-tier rates observed October 18, 2026, 4 saved rows × $0.002 plus $0.00005 Actor Start = $0.00805 in modeled event charges for this sample. This is not an owner invoice or a complete account-cost quote. Platform/API/storage and plan pricing may differ. Check https://apify.com/maydit/software-lifecycle-watchlist-monitor/pricing before running.

## Evidence

Saved observation: 2026-10-18T13:04:39.436Z; build 1.0.1; 4 records. Historical output is included in sample.json and sample.csv. Later results can differ. Product: https://mayd-it.com/data-tools/actors/software-lifecycle-watchlist-monitor/
