> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pav.bio/llms.txt
> Use this file to discover all available pages before exploring further.

# List and search deals

> Biopharma deals — M&A, licensing, collaborations, options, joint ventures and distribution — from SEC filings and press releases, one row per deal with its current lifecycle state and headline economics.

Every filter is optional and filters combine with AND. `q` is an exact-term match (word forms such as plurals also match; every term must match) over the deal name, event headline, summary and rights, or a substring of a party's name. It does not expand synonyms, so search each phrasing you care about. With no filters you get the most recent deal activity.



## OpenAPI

````yaml /openapi.json get /v1/deals
openapi: 3.1.0
info:
  title: Pav Enterprise API
  description: >-
    Read-only `/v1` API over Pav's biopharma dataset: drug programs, companies,
    clinical trials, deals, patent families, FDA records, a change feed, and
    dataset stats.


    Authenticate every request with a Pav API key as a bearer token:
    `Authorization: Bearer <api_key>`. Mint a key in [Pav developer
    settings](https://app.pav.bio/settings/developer).


    All endpoints are `GET` and return JSON. List endpoints return a `{ data,
    pagination }` envelope. Pass `q=` to run relevance-ranked search that
    matches meaning as well as exact words; omit it for a filtered, paginated
    listing. Errors return `{ error: { code, message, request_id } }`.
  version: 1.2.0
servers:
  - url: https://api.pav.bio
    description: Production
  - url: /
    description: This server
security: []
tags:
  - name: programs
    description: >-
      Search and filter drug pipeline assets by company, indication, target,
      modality, phase, or free text. Includes get-by-id, similar-programs, and
      facet autocomplete.
  - name: companies
    description: >-
      Tracked biopharma companies and their pipeline ownership. List a company's
      programs and change history.
  - name: trials
    description: >-
      Search clinical trials — ClinicalTrials.gov records plus Pav
      program/company links. Relevance-ranked search when `q=` is set; filtered
      browse otherwise.
  - name: deals
    description: >-
      Biopharma deals (M&A, licensing, collaborations, options, joint ventures)
      from SEC filings and press releases, with lifecycle state, headline
      economics, and source documents.
  - name: patents
    description: >-
      US patent families from USPTO with owners linked to Pav companies, member
      applications, ownership history, and statutory term.
  - name: fda
    description: >-
      FDA records with applicants linked to Pav companies: Orange Book products,
      patents and exclusivities, Purple Book biologics, orphan designations,
      warning letters, and recalls.
  - name: changes
    description: >-
      Detected pipeline movement events per company — added and removed assets
      and phase changes — with before/after phase and detection time.
  - name: stats
    description: High-level dataset counts and facet coverage.
paths:
  /v1/deals:
    get:
      tags:
        - deals
      summary: List and search deals
      description: >-
        Biopharma deals — M&A, licensing, collaborations, options, joint
        ventures and distribution — from SEC filings and press releases, one row
        per deal with its current lifecycle state and headline economics.


        Every filter is optional and filters combine with AND. `q` is an
        exact-term match (word forms such as plurals also match; every term must
        match) over the deal name, event headline, summary and rights, or a
        substring of a party's name. It does not expand synonyms, so search each
        phrasing you care about. With no filters you get the most recent deal
        activity.
      operationId: list_deals
      parameters:
        - name: q
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Exact-term text or party-name substring.
            examples:
              - Bio-Techne
            title: Q
          description: Exact-term text or party-name substring.
        - name: company_id
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: integer
              - type: 'null'
            description: Deals with any of these Pav company ids as a party. Repeatable.
            title: Company Id
          description: Deals with any of these Pav company ids as a party. Repeatable.
        - name: deal_type
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  enum:
                    - acquisition
                    - merger
                    - asset_purchase
                    - licensing
                    - collaboration
                    - option
                    - joint_venture
                    - distribution
                    - other
                  type: string
              - type: 'null'
            description: Restrict to these deal types. Repeatable.
            examples:
              - licensing
            title: Deal Type
          description: Restrict to these deal types. Repeatable.
        - name: event_type
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  enum:
                    - proposed
                    - announced
                    - completed
                    - amended
                    - terminated
                    - update
                  type: string
              - type: 'null'
            description: >-
              Restrict to deals whose current lifecycle state is one of these.
              Repeatable.
            examples:
              - completed
            title: Event Type
          description: >-
            Restrict to deals whose current lifecycle state is one of these.
            Repeatable.
        - name: announced_from
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: Announced on or after this date (inclusive).
            title: Announced From
          description: Announced on or after this date (inclusive).
        - name: announced_to
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: Announced on or before this date (inclusive).
            title: Announced To
          description: Announced on or before this date (inclusive).
        - name: min_value_usd
          in: query
          required: false
          schema:
            anyOf:
              - type: number
                minimum: 0
              - type: 'null'
            description: >-
              Minimum headline deal value in USD. Only USD deals with a stated
              headline value qualify; many deals disclose none.
            examples:
              - 1000000000
            title: Min Value Usd
          description: >-
            Minimum headline deal value in USD. Only USD deals with a stated
            headline value qualify; many deals disclose none.
        - name: sort
          in: query
          required: false
          schema:
            enum:
              - latest_activity
              - announced_at
              - completed_at
              - headline_value
            type: string
            description: >-
              `latest_activity` (default), `announced_at`, `completed_at`, or
              `headline_value`; newest or largest first.
            default: latest_activity
            title: Sort
          description: >-
            `latest_activity` (default), `announced_at`, `completed_at`, or
            `headline_value`; newest or largest first.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            description: Rows per page (1-100).
            default: 25
            title: Limit
          description: Rows per page (1-100).
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            maximum: 100000
            minimum: 0
            description: Zero-based row offset for paging.
            default: 0
            title: Offset
          description: Zero-based row offset for paging.
        - name: include_total
          in: query
          required: false
          schema:
            type: boolean
            description: Compute the exact total match count.
            default: false
            title: Include Total
          description: Compute the exact total match count.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DealListResponse'
        '401':
          description: Missing or invalid API key (`unauthorized`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Unknown id or route (`not_found`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '422':
          description: Invalid parameter (`validation_error`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limit exceeded (`rate_limited`); honor `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      security:
        - EnterpriseApiKey: []
components:
  schemas:
    DealListResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Deal'
          type: array
          title: Data
          description: Page of deals.
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination metadata for this page.
      type: object
      required:
        - data
        - pagination
      title: DealListResponse
    ErrorEnvelope:
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
          description: Error detail. Present only on 4xx/5xx responses.
      required:
        - error
      title: ErrorEnvelope
      type: object
    Deal:
      properties:
        deal_id:
          type: string
          format: uuid
          title: Deal Id
          description: Stable Pav deal identifier.
          examples:
            - ec0bcf74-fdc0-4ffa-ad04-fe25ed8d6210
        deal_name:
          type: string
          title: Deal Name
          description: Deal headline.
          examples:
            - Merck KGaA acquisition of Bio-Techne Corporation
        deal_type:
          type: string
          enum:
            - acquisition
            - merger
            - asset_purchase
            - licensing
            - collaboration
            - option
            - joint_venture
            - distribution
            - other
          title: Deal Type
          description: Deal classification.
          examples:
            - acquisition
        latest_event_type:
          type: string
          enum:
            - proposed
            - announced
            - completed
            - amended
            - terminated
            - update
          title: Latest Event Type
          description: >-
            Current lifecycle state. `update` means the latest mention changed
            no lifecycle state.
          examples:
            - completed
        latest_event_name:
          type: string
          title: Latest Event Name
          description: Headline of the latest lifecycle event.
        latest_event_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Latest Event At
          description: Date of the latest lifecycle event, when stated (UTC).
        activity_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Activity Date
          description: >-
            Latest activity: the latest event's date, else its source's publish
            date. Default sort key.
        announced_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Announced At
          description: Announcement date (UTC).
        latest_update_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Latest Update At
          description: Most recent update mention (UTC).
        completed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Completed At
          description: Completion date (UTC).
        summary:
          type: string
          title: Summary
          description: One-paragraph deal summary.
        companies:
          items:
            $ref: '#/components/schemas/DealCompany'
          type: array
          title: Companies
          description: Parties linked to Pav companies.
        total_value:
          anyOf:
            - $ref: '#/components/schemas/DealValue'
            - type: 'null'
          description: Headline (total) deal value, when stated.
        upfront:
          anyOf:
            - $ref: '#/components/schemas/DealValue'
            - type: 'null'
          description: Upfront consideration.
        development_milestones:
          anyOf:
            - $ref: '#/components/schemas/DealValue'
            - type: 'null'
          description: Development milestone economics.
        regulatory_milestones:
          anyOf:
            - $ref: '#/components/schemas/DealValue'
            - type: 'null'
          description: Regulatory milestone economics.
        commercial_milestones:
          anyOf:
            - $ref: '#/components/schemas/DealValue'
            - type: 'null'
          description: Commercial / sales milestone economics.
        source_document_count:
          type: integer
          title: Source Document Count
          description: Distinct source documents behind the deal.
        event_count:
          type: integer
          title: Event Count
          description: Lifecycle events recorded for the deal.
      type: object
      required:
        - deal_id
        - deal_name
        - deal_type
        - latest_event_type
        - latest_event_name
        - summary
        - source_document_count
        - event_count
      title: Deal
    Pagination:
      properties:
        limit:
          type: integer
          title: Limit
          description: Maximum number of rows returned for this request.
          examples:
            - 100
        offset:
          type: integer
          title: Offset
          description: Zero-based row offset applied before returning results.
          examples:
            - 0
        total:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total
          description: >-
            Total matching rows across all pages. Null on relevance-ranked
            search responses and on listings requested without `include_total`.
          examples:
            - 590355
      type: object
      required:
        - limit
        - offset
      title: Pagination
    ErrorBody:
      properties:
        code:
          description: >-
            Stable, machine-readable error code (e.g. `unauthorized`,
            `not_found`, `validation_error`, `error`).
          examples:
            - not_found
          title: Code
          type: string
        message:
          description: Human-readable explanation of the error.
          examples:
            - program 999999 not found
          title: Message
          type: string
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Correlation id echoed in the `X-Request-ID` response header. Quote
            it when contacting Pav support about a failed request.
          examples:
            - 3f2b9c1d8a7e4f6b9c0d1e2f3a4b5c6d
          title: Request Id
      required:
        - code
        - message
      title: ErrorBody
      type: object
    DealCompany:
      properties:
        company_id:
          type: integer
          title: Company Id
          description: Durable Pav company identifier.
          examples:
            - 239
        short_name:
          type: string
          title: Short Name
          description: Company slug.
          examples:
            - merck_kgaa
        name:
          type: string
          title: Name
          description: Company display name.
          examples:
            - Merck KGaA
        roles:
          items:
            type: string
          type: array
          title: Roles
          description: >-
            Roles the source documents give this party (e.g. acquirer,
            licensor).
          examples:
            - - acquirer
      type: object
      required:
        - company_id
        - short_name
        - name
      title: DealCompany
    DealValue:
      properties:
        raw_text:
          type: string
          title: Raw Text
          description: The term as the source states it.
          examples:
            - total enterprise value of approximately US$11.3 billion
        amount:
          anyOf:
            - type: number
            - type: 'null'
          title: Amount
          description: >-
            Monetary amount in base currency units. Null for percentages or
            unstated values.
          examples:
            - 11300000000
        currency:
          anyOf:
            - type: string
            - type: 'null'
          title: Currency
          description: ISO 4217 code for `amount`.
          examples:
            - USD
        percentage:
          anyOf:
            - type: number
            - type: 'null'
          title: Percentage
          description: Percentage value (royalties, equity).
          examples:
            - null
        not_disclosed:
          type: boolean
          title: Not Disclosed
          description: True when the source explicitly withholds this term.
          default: false
        evidence:
          anyOf:
            - type: string
            - type: 'null'
          title: Evidence
          description: Source sentence supporting the value.
      type: object
      required:
        - raw_text
      title: DealValue
  securitySchemes:
    EnterpriseApiKey:
      type: http
      description: >-
        Use a personal or organization Pav API key from Pav developer settings.
        Send it as Authorization: Bearer <api_key>.
      scheme: bearer
      bearerFormat: Pav API key

````