Prerequisites
- A Pav API key in
PAV_API_KEY. See Quickstart. - Python 3.9+ and
pip install requests.
Approach
- Search every phrasing. Deal
qmatches exact terms with no synonym expansion, so searchantibody-drug conjugateandADCseparately and merge bydeal_id. - Filter by type and date with
deal_typeandannounced_from. - Rank by a stated term. List rows carry
total_value,upfrontand milestone values. Many deals disclose no figure; skip those rather than treating them as zero. - Open the deal with
GET /v1/deals/{deal_id}for royalties, territories, rights and the source of each lifecycle event.
Script
deal_screen.py
Example output (September 2026)
summary and rights_summary before treating a hit as a comparable.
Reading deal terms
amountis in base currency units with an ISOcurrency.raw_textkeeps the source wording, including qualifiers such as “up to”.not_disclosed: truemeans the source explicitly withheld the term. A missing term means none was stated.evidenceis the source sentence each value was read from; each lifecycle event carries thesource_urlthat reported it.latest_event_typeis the deal’s current state. Filter withevent_type=completedfor closed deals, orterminatedfor failed ones.
Variations
- One company’s deal history:
company_id=<id>withsort=announced_at. - Large M&A:
deal_type=acquisition&min_value_usd=1000000000&sort=headline_value. - Exact count for a screen: add
include_total=true.