Skip to main content
This guide builds a small monitor: each run reads every new pipeline change for a watchlist of companies since the last run, prints it, and saves a checkpoint. Schedule it with cron or any job runner.

Prerequisites

  • A Pav API key in PAV_API_KEY. See Quickstart.
  • Python 3.9+ and pip install requests.
  • The company_id of each company to watch, from GET /v1/companies?q=<name>.

How the feed works

  • change_type is insert (program added), delete (program removed) or update (phase changed).
  • since returns events detected at or after a timestamp. It is inclusive.
  • next_cursor pages through the results; the last page has none. Cursor paging never skips or repeats an event while new events arrive.
  • Retracted events are hidden by default.
See Changes for fields and filters.

Script

track_changes.py
First run (trimmed):
Example output (September 2026)
Second run, with no new changes:
Example output

Interpreting events

  • Phases in the feed are the company’s own labels (Under Review, Clinical), not normalized phases. Fetch the program for phase_norm.
  • A delete means the program left the company’s published pipeline: a discontinuation, an approval moving it off the page, or a rename. A rename shows as a delete and an insert for the same company on the same day; pair them before alerting.
  • To see every company, drop company_id. To follow only phase moves, add change_type=update.

Push delivery

Webhooks for change events are planned. See the Webhook Reference. Until then, poll this feed; a few requests per run fit well inside the rate limit.