9fin Covenant API

List Covenant Data

List anonymised covenant data with basic query-param filtering.

The response is entity-per-instrument with cursor pagination. Only the
query parameters declared for this endpoint are accepted; any other
filter-looking query parameter is rejected with a VALIDATION_ERROR
response naming the offending field.

Worked examples:

  1. Plain (no filters, first page)::

    GET /v0/covenants/data

  2. Filtered (one fixed-field predicate)::

    GET /v0/covenants/data?instrument.type__eq=Bond

  3. Filtered + sorted (comma-separated __in, multi-key sort_by)::

    GET /v0/covenants/data?instrument.region__in=Europe,US
    &financials.net_senior_leverage__gte=4.0
    &sort_by=terms.issue_date__desc

  4. Page 2 with a cursor (next_cursor from the prior page’s
    response, replayed verbatim — the cursor is bound to those exact
    filters and sort; reusing it with different filters is rejected)::

    GET /v0/covenants/data?instrument.region__in=Europe,US
    &financials.net_senior_leverage__gte=4.0
    &sort_by=terms.issue_date__desc
    &cursor=<next_cursor from example 3’s response>

  5. __all (AND, not OR - every listed value must be present)::

    GET /v0/covenants/data?issuer.sponsor__all=Apollo,Blackstone

  6. Ratings and company (CFR) ratings - set membership, exactly as the
    9fin screener does it. There is no “BB- or better” ordering::

    GET /v0/covenants/data?ratings.moodys__in=B1,B2,B3
    GET /v0/covenants/data?ratings.s_and_p_cfr__eq=B

  7. Size and EBITDA. These are range-valued: on anonymised rows the figure
    is reported as a bucket, and the filter matches when that bucket
    OVERLAPS the bound. A match therefore means “this deal’s reported
    range permits the value”, not “the exact figure clears it”. Only
    __gte/__lte are accepted - exact and strict comparison against
    a bucket has no honest meaning::

    GET /v0/covenants/data?financials.ebitda__gte=100&terms.amount__lte=500

  8. Counterparties and booleans::

    GET /v0/covenants/data?parties.bookrunner__contains=Goldman
    GET /v0/covenants/data?issuer.sponsored__eq=true

The complete list of filterable fields, their permitted operators and
their value types is served by the filter catalog, and every field in it
is accepted here. Fields whose values are anonymised on restricted deals
(counterparty names, sponsor name, industry L2/L3, purpose, country of
issuer) are absent from those rows and so never match a filter on them.

get
https://api.9fin.com/v0/covenants/data

Query Parameters

sort_byAny Of

Comma-separated sort keys, e.g. ‘terms.issue_date__desc,financials.net_senior_leverage__asc’.

Variant 1string
limitinteger

Default:48

>= 1<= 100

cursorAny Of

Opaque pagination cursor from a prior page’s next_cursor; omit on the first page.

Variant 1string
instrument.type__eqAny Of

Example:Bond

Variant 1string
instrument.region__inAny Of

Comma-separated, e.g. ‘Europe,US’.

Variant 1string
instrument.currency__eqAny Of

Example:EUR

Variant 1string
terms.issue_date__gteAny Of
Variant 1string(date)
terms.issue_date__lteAny Of
Variant 1string(date)
terms.maturity__gteAny Of
Variant 1string(date)
terms.maturity__lteAny Of
Variant 1string(date)
financials.net_senior_leverage__gteAny Of
Variant 1number
financials.net_senior_leverage__lteAny Of
Variant 1number
financials.net_total_leverage__gteAny Of
Variant 1number
financials.net_total_leverage__lteAny Of
Variant 1number
issuer.sponsor__allAny Of

Comma-separated; matches only rows co-sponsored by ALL listed names (e.g. ‘Apollo,Blackstone’ excludes a deal sponsored by only one of them). Reference implementation of a proposed (not yet approved) 9th filter operator - see the worked example below.

Variant 1string
deal.id__eqstring

Filter: deal.id equals.

deal.id__instring

Filter: deal.id matches any of (comma-separated).

financials.ebitda__gtenumber

Filter: financials.ebitda greater than or equal to.

financials.ebitda__ltenumber

Filter: financials.ebitda less than or equal to.

financials.net_senior_leverage__eqnumber

Filter: financials.net_senior_leverage equals.

financials.net_senior_leverage__gtnumber

Filter: financials.net_senior_leverage greater than.

financials.net_senior_leverage__ltnumber

Filter: financials.net_senior_leverage less than.

financials.net_total_leverage__eqnumber

Filter: financials.net_total_leverage equals.

financials.net_total_leverage__gtnumber

Filter: financials.net_total_leverage greater than.

financials.net_total_leverage__ltnumber

Filter: financials.net_total_leverage less than.

instrument.category__eqstring

Filter: instrument.category equals.

instrument.category__instring

Filter: instrument.category matches any of (comma-separated).

instrument.category__neqstring

Filter: instrument.category does not equal.

instrument.country_of_issuer__eqstring

Filter: instrument.country_of_issuer equals.

instrument.country_of_issuer__instring

Filter: instrument.country_of_issuer matches any of (comma-separated).

instrument.country_of_issuer__neqstring

Filter: instrument.country_of_issuer does not equal.

instrument.country_of_risk__eqstring

Filter: instrument.country_of_risk equals.

instrument.country_of_risk__instring

Filter: instrument.country_of_risk matches any of (comma-separated).

instrument.country_of_risk__neqstring

Filter: instrument.country_of_risk does not equal.

instrument.currency__instring

Filter: instrument.currency matches any of (comma-separated).

instrument.currency__neqstring

Filter: instrument.currency does not equal.

instrument.is_sustainability_linked__eqboolean

Filter: instrument.is_sustainability_linked equals.

instrument.purpose__allstring

Filter: instrument.purpose matches all of (comma-separated; AND, not OR).

instrument.purpose__eqstring

Filter: instrument.purpose equals.

instrument.purpose__instring

Filter: instrument.purpose matches any of (comma-separated).

instrument.region__eqstring

Filter: instrument.region equals.

Allowed values:EuropeUS

instrument.region__neqstring

Filter: instrument.region does not equal.

Allowed values:EuropeUS

instrument.type__instring

Filter: instrument.type matches any of (comma-separated).

Allowed values:LoanBond

instrument.type__neqstring

Filter: instrument.type does not equal.

Allowed values:LoanBond

issuer.company__containsstring

Filter: issuer.company contains (case-insensitive substring).

issuer.company__eqstring

Filter: issuer.company equals.

issuer.company__instring

Filter: issuer.company matches any of (comma-separated).

issuer.industry__eqstring

Filter: issuer.industry equals.

issuer.industry__instring

Filter: issuer.industry matches any of (comma-separated).

issuer.industry_l2__eqstring

Filter: issuer.industry_l2 equals.

issuer.industry_l2__instring

Filter: issuer.industry_l2 matches any of (comma-separated).

issuer.industry_l3__eqstring

Filter: issuer.industry_l3 equals.

issuer.industry_l3__instring

Filter: issuer.industry_l3 matches any of (comma-separated).

issuer.sponsor__eqstring

Filter: issuer.sponsor equals.

issuer.sponsor__instring

Filter: issuer.sponsor matches any of (comma-separated).

issuer.sponsored__eqboolean

Filter: issuer.sponsored equals.

parties.bookrunner__containsstring

Filter: parties.bookrunner contains (case-insensitive substring).

parties.bookrunner__eqstring

Filter: parties.bookrunner equals.

parties.bookrunner__instring

Filter: parties.bookrunner matches any of (comma-separated).

parties.bookrunner_legal_advisor__containsstring

Filter: parties.bookrunner_legal_advisor contains (case-insensitive substring).

parties.bookrunner_legal_advisor__eqstring

Filter: parties.bookrunner_legal_advisor equals.

parties.bookrunner_legal_advisor__instring

Filter: parties.bookrunner_legal_advisor matches any of (comma-separated).

parties.company_legal_advisor__containsstring

Filter: parties.company_legal_advisor contains (case-insensitive substring).

parties.company_legal_advisor__eqstring

Filter: parties.company_legal_advisor equals.

parties.company_legal_advisor__instring

Filter: parties.company_legal_advisor matches any of (comma-separated).

ratings.fitch__eqstring

Filter: ratings.fitch equals.

ratings.fitch__instring

Filter: ratings.fitch matches any of (comma-separated).

ratings.fitch__neqstring

Filter: ratings.fitch does not equal.

ratings.fitch_cfr__eqstring

Filter: ratings.fitch_cfr equals.

ratings.fitch_cfr__instring

Filter: ratings.fitch_cfr matches any of (comma-separated).

ratings.fitch_cfr__neqstring

Filter: ratings.fitch_cfr does not equal.

ratings.moodys__eqstring

Filter: ratings.moodys equals.

ratings.moodys__instring

Filter: ratings.moodys matches any of (comma-separated).

ratings.moodys__neqstring

Filter: ratings.moodys does not equal.

ratings.moodys_cfr__eqstring

Filter: ratings.moodys_cfr equals.

ratings.moodys_cfr__instring

Filter: ratings.moodys_cfr matches any of (comma-separated).

ratings.moodys_cfr__neqstring

Filter: ratings.moodys_cfr does not equal.

ratings.s_and_p__eqstring

Filter: ratings.s_and_p equals.

ratings.s_and_p__instring

Filter: ratings.s_and_p matches any of (comma-separated).

ratings.s_and_p__neqstring

Filter: ratings.s_and_p does not equal.

ratings.s_and_p_cfr__eqstring

Filter: ratings.s_and_p_cfr equals.

ratings.s_and_p_cfr__instring

Filter: ratings.s_and_p_cfr matches any of (comma-separated).

ratings.s_and_p_cfr__neqstring

Filter: ratings.s_and_p_cfr does not equal.

terms.amount__gtenumber

Filter: terms.amount greater than or equal to.

terms.amount__ltenumber

Filter: terms.amount less than or equal to.

terms.coupon__eqnumber

Filter: terms.coupon equals.

terms.coupon__gtnumber

Filter: terms.coupon greater than.

terms.coupon__gtenumber

Filter: terms.coupon greater than or equal to.

terms.coupon__ltnumber

Filter: terms.coupon less than.

terms.coupon__ltenumber

Filter: terms.coupon less than or equal to.

terms.issue_date__eqstring(date)

Filter: terms.issue_date equals.

terms.issue_date__gtstring(date)

Filter: terms.issue_date greater than.

terms.issue_date__ltstring(date)

Filter: terms.issue_date less than.

terms.issue_price__eqnumber

Filter: terms.issue_price equals.

terms.issue_price__gtnumber

Filter: terms.issue_price greater than.

terms.issue_price__gtenumber

Filter: terms.issue_price greater than or equal to.

terms.issue_price__ltnumber

Filter: terms.issue_price less than.

terms.issue_price__ltenumber

Filter: terms.issue_price less than or equal to.

terms.maturity__eqstring(date)

Filter: terms.maturity equals.

terms.maturity__gtstring(date)

Filter: terms.maturity greater than.

terms.maturity__ltstring(date)

Filter: terms.maturity less than.

terms.non_call__eqstring

Filter: terms.non_call equals.

terms.non_call__instring

Filter: terms.non_call matches any of (comma-separated).

terms.non_call__neqstring

Filter: terms.non_call does not equal.

Response

application/json

Successful Response

CovenantDataSearchResponse

itemsarray[object]required

One instrument (entity-per-instrument shape).

Show Child Parameters
totalAny Of
Variant 1integer
next_cursorAny Of
Variant 1string
get/v0/covenants/data
 
application/json