Due diligence API for counterparty research
If you're underwriting a partnership, evaluating an acquisition target, or running counterparty risk for a fund, you need a 360-degree view of a public company that goes beyond its quote and fundamentals. Who owns it. Who's selling it. Is it being sued. Who buys from it. Are insiders dumping. Is short interest spiking.
That information lives in five or six different public datasets — SEC EDGAR (13F, Form 4, 10-K, Schedule 13D/G), FINRA short interest reports, USASpending.gov, federal court dockets via CourtListener / RECAP, and Exhibit 21 subsidiary lists embedded in annual reports. Stitching those together is a week of plumbing on the typical vendor stack.
Jintel returns all of it for one ticker — or for a list of tickers — in a single GraphQL request, normalized into a typed schema.
What due diligence covers
A standard counterparty file has roughly these sections:
| Section | Schema field | Source |
|---|---|---|
| Smart-money exposure | Entity.topHolders | SEC 13F |
| Insider activity | Entity.insiderTrades | SEC Form 4 |
| Short-seller signal | Entity.ownership (shortPercentOfFloat, daysToCover) and MarketData.shortInterest | FINRA |
| Recent 10-K / 10-Q | Entity.periodicFilings (Risk Factors, MD&A, Quant & Qual Risk sections) | SEC EDGAR |
| Federal litigation | Entity.litigation | CourtListener / RECAP |
| Government revenue | Entity.governmentContracts | USASpending.gov |
| Subsidiaries | Entity.subsidiaries | SEC 10-K / 20-F Exhibit 21 |
| Customer concentration | Entity.concentration | SEC XBRL segments |
| Sanctions screen | top-level sanctionsScreen | OFAC SDN |
Most of these surface as nested sub-graphs on Entity. They lazy-resolve only what you select — so you can ship a wide query and pay only for the fields you actually need.
A counterparty due-diligence request
query DueDiligence($ticker: String!, $name: String!) {
entityByTicker(ticker: $ticker) {
name tickers
market {
quote { price marketCap }
fundamentals { sector industry employees website }
}
ownership {
institutionOwnership institutionsCount
shortPercentOfFloat daysToCover shortInterestDate
}
topHolders(filter: { limit: 10 }) {
filerName cik value shares reportDate
}
insiderTrades(filter: {
limit: 20,
acquiredDisposed: DISPOSED,
since: "2024-01-01T00:00:00Z"
}) {
reporterName officerTitle isOfficer
transactionDate shares pricePerShare transactionValue
}
periodicFilings(filter: { limit: 2 }) {
form filingDate reportDate filingUrl
sections { item title excerpt bodyLength }
}
litigation(filter: { onlyActive: true, limit: 10 }) {
caseName court dateFiled docketNumber natureOfSuit absoluteUrl
}
governmentContracts(filter: { limit: 10, minAmount: 1000000 }) {
agency awardId actionDate amount awardType description
}
subsidiaries {
form filingDate
subsidiaries { name jurisdiction }
}
concentration {
form filingDate periodEnd
product { hhi count components { label share value } }
customer { hhi count components { label share value } }
geography { hhi count components { label share value } }
}
}
sanctionsScreen(name: $name, filter: { minScore: 70, limit: 5 }) {
listName matchedName score programs
}
}
This is one round trip. Mercurius loaders batch the upstream calls, so even though it spans five different connectors (Yahoo Finance, SEC EDGAR, FINRA, CourtListener, USASpending, OFAC), the response comes back together.
A note on sanctions: see the sanctions screening use case — Jintel's sanctionsScreen is a convenience-grade pre-filter, not a substitute for a compliance-grade vendor. Use it as a triage signal, not as the basis for a regulated decision.
Reading the signals
The agent or analyst consuming this response should look for:
- Insider selling concentration: large
transactionValuefromisOfficer: truereporters, especially CEO/CFO, especially when not flaggedisUnder10b5One: true. - Short interest rising:
shortPercentOfFloatnorth of ~10% withdaysToCover> 5 is a crowded short. Cross-reference againstMarketData.shortInterestfor the trend. - Active litigation:
litigation(onlyActive: true)withnatureOfSuitcontaining securities fraud, antitrust, or RICO is a different signal than slip-and-fall lawsuits. - Customer concentration risk: the top entry in
concentration.customer.components(sorted bysharedescending) above 0.20 means a single customer is more than 20% of revenue — a structural risk worth flagging. - Government revenue exposure: large
governmentContracts.amounttotals concentrated in a single agency mean budget cycles and procurement rules are macro factors for the company.
Code
- TypeScript
- curl
import { JintelClient } from "@yojinhq/jintel-client";
const jintel = new JintelClient({ apiKey: process.env.JINTEL_API_KEY });
const DUE_DILIGENCE = `
query($ticker: String!, $name: String!) {
entityByTicker(ticker: $ticker) {
name
ownership { shortPercentOfFloat daysToCover institutionOwnership }
topHolders(filter: { limit: 10 }) { filerName value shares }
insiderTrades(filter: { limit: 10, acquiredDisposed: DISPOSED }) {
reporterName officerTitle transactionDate transactionValue
}
litigation(filter: { onlyActive: true, limit: 5 }) {
caseName court dateFiled natureOfSuit
}
governmentContracts(filter: { limit: 5, minAmount: 1000000 }) {
agency actionDate amount description
}
concentration {
customer { components { label share } }
}
}
sanctionsScreen(name: $name, filter: { minScore: 70, limit: 5 }) {
listName matchedName score
}
}
`;
const { data } = await jintel.request(DUE_DILIGENCE, {
ticker: "PLTR",
name: "Palantir Technologies Inc",
});
curl https://api.jintel.ai/api/graphql \
-H "Authorization: Bearer $JINTEL_API_KEY" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{
"query": "query($t:String!){entityByTicker(ticker:$t){name ownership{shortPercentOfFloat daysToCover} topHolders(filter:{limit:5}){filerName value} litigation(filter:{onlyActive:true,limit:5}){caseName court natureOfSuit}}}",
"variables": { "t": "PLTR" }
}
JSON
Where to go next
- Institutional holdings — 13F portfolio, top-holder reverse lookup.
- Regulatory filings — SEC EDGAR sections, insider trades, earnings.
- Short interest — FINRA bi-monthly history.
- Supply chain — relationship graph and segmented revenue.
- Sanctions screening — caveats and disclaimer for OFAC pre-filtering.