# Changelog of ClinicalTrials.gov Monitor 🔬 (new trials, status alerts) (`tagadanar/clinicaltrials-monitor`) Actor

- **URL**: https://apify.com/tagadanar/clinicaltrials-monitor/changelog.md
- **Full Actor documentation**: https://apify.com/tagadanar/clinicaltrials-monitor.md

## Changelog

### 2026-09-08

- **A run can no longer spend more time than it has.** The retry ladder booked
  its worst case up front — five attempts at a 30-second timeout plus up to 31
  seconds of backoff, about 181 seconds for a single request — under loops with
  no ceiling. Because everything was collected before anything was delivered, a
  run killed by the platform timeout handed back nothing at all and could not
  even say why.
- Every request now plans against the time actually left, and a run that hits
  its limit delivers what it did read, then says plainly that the result is
  PARTIAL and names what it never reached — rather than reporting an empty
  search, which is a claim it has not earned.
- A request the source rejects outright (a 4xx that is not a rate limit) leaves
  the ladder at once instead of being retried five times.

### 2026-08-30

- New input **Locations**: return only trials with a study site in the places
  you name — a city, a state, a country or a facility name. It maps to the
  registry's own location search (`query.locn`) and multiple entries are
  OR-combined. Verified live against the v2 API: `diabetes` alone returns
  24,297 studies, with `Boston` 724, with `Boston` or `Paris` 1,064.
- Every run now finishes with a status message that says what actually
  happened, chosen from counters rather than from an empty dataset. A run that
  returned nothing now distinguishes: the API never answered; the API answered
  but reported an empty registry on a no-filter control query (an upstream
  change, ours to fix, never blamed on your watchlist); nothing in the registry
  matches your watchlist; studies were read but your "Study type" filter
  dropped every one (with the count it dropped); the monitor seeded its
  baseline; the monitor found nothing changed. Previously an empty result
  either failed the run outright or left the run card blank.

### 2026-08-19

- The User-Agent contact is now the actor's own Apify URL instead of an email
  address. Same identification, same reachability (the actor page's Issues tab),
  no published mailbox.

### 2026-07-13

- README: removed a stale "no minimum" claim in the pricing intro that contradicted the $0.001 run-started fee already listed in the table below it.

### 2026-07-12

- Invalid input no longer fails the run. The run now finishes cleanly with a clear explanation in its status message, so a typo or an empty list is easy to spot and fix.
- List inputs now accept datasets piped straight from another scraper: entries
  that are objects are read through their usual key names (url/link,
  query/keyword/title, name/company and similar) instead of being rejected.

### 2026-07-11

- Billing: on paid runs every row is billed before it is written, and a run
  now stops visibly if billing fails instead of continuing unbilled.

### 2026-07-09

- Input is now tolerant of common shapes that previously failed the run: a bare
  string / bare object / delimited string for "conditions"/"terms"/"sponsors" is
  coerced into a list instead of erroring. Empty input still errors.

### 2026-07-07

- Initial public release on Apify Store.
- Watch ClinicalTrials.gov by condition, free-text/drug term, sponsor, phase, status and study type.
- Monitor mode: persistent seen-set returns only new or changed trials (new, status-changed, phase-changed, sponsor-changed) with the previous status.
- Slack-compatible webhook digest for new/changed trials only.
- Official ClinicalTrials.gov v2 REST API, no API key.
