Get BDC data with EdgarTools
BDC are publicly traded investment funds that lend money to private companies. Now you can access their data with edgartools
There's a $375 billion corner of the SEC filing universe that most financial data tools ignore entirely: Business Development Companies.
BDCs are publicly traded investment funds that lend money to private companies. They file 10-Ks and 10-Qs like any other public company. But inside those filings is something remarkable - a detailed Schedule of Investments listing every single private company in their portfolio, how much they lent, at what rate, and what that loan is worth today. Ares Capital alone discloses over 500 private company relationships this way.
This is public data about private markets. And until now, getting at it programmatically was a pain.
The Problem
BDCs don't behave like normal companies in SEC data. They have no SIC code - the standard industry classification that every other public company gets. The SEC registers them under the Investment Company Act of 1940 with file numbers starting with "814-", but doesn't assign them an industry.
This means BDCs are invisible to industry-based screeners. You can't filter for them. You can't identify them. They're public companies hiding in plain sight.
There was also no structured way to access the Schedule of Investments data across BDCs. You could parse one BDC's 10-K at a time through XBRL, but comparing portfolios across 47 publicly traded BDCs meant downloading dozens of filings and writing custom extraction code for each one.
What We Built
The new edgar.bdc module solves both problems.
Finding BDCs
The SEC publishes an annual BDC Report listing every entity with an 814- file number - about 196 companies total. We parse that directly with the get_bdc_list() function.
from edgar.bdc import get_bdc_list, find_bdc
# All 196 BDCs from the SEC report
bdcs = get_bdc_list()
If you wanted to find a specific BDC by name use find_bdc()
# Search by name or ticker
results = find_bdc("Ares")
To get the BDC directly so you can work with it use get_by_ticker()
arcc = bdcs.get_by_ticker("ARCC")
You can filtering BDCs by state of registration. Here we can find all BDCs registered in California
# Filter by state and activity
active_ny = bdcs.filter(state='CA', active=True)
You can also check if any company a BDC:
from edgar.bdc import is_bdc_cik
is_bdc_cik(1287750) # True - that's Ares Capital
is_bdc_cik(320193) # False - that's AppleNo more guessing whether a company is a BDC.
Portfolio Investments from 10-K Filings
Each BDC entity can extract its portfolio investments directly from its latest XBRL filing:
arcc = bdcs.get_by_ticker("ARCC")
investments = arcc.portfolio_investments()
Every investment comes with the detail you'd expect - company name, investment type, fair value, cost, interest rate, spread, PIK rate, and percent of net assets:
investments[0]

And you can filter down to exactly what you need. You can find investments that are "First Lien" or filter companies by name.
# Just first lien loans
first_lien = investments.filter(investment_type="First lien")
# Companies matching a name
software = investments.filter(company_name="software")
Bulk Dataset
The SEC's Division of Economic and Risk Analysis (DERA) publishes quarterly bulk extracts of all BDC filings. We download and parse those ZIP files into structured data:
from edgar.bdc import fetch_bdc_dataset
dataset = fetch_bdc_dataset(2024, 3)
soi = dataset.schedule_of_investmentsNow you can ask questions like: "Which BDCs hold this private company?"
soi.search("Ivy Hill")Or: "What are the most widely-held private credit investments?"
soi.top_companies(10)This returns the private companies that appear across the most BDC portfolios - essentially a popularity ranking of private credit borrowers, built entirely from SEC filings.
Two Data Paths
The module provides two complementary approaches:
The 10-K XBRL path gives you detailed per-investment data including interest rates and maturity dates. The DERA path gives you breadth - every BDC's Schedule of Investments in a single download.
Not every BDC provides detailed XBRL tagging for individual investments. Some only tag aggregate totals. The has_detailed_investments() method tells you before you try:
if arcc.has_detailed_investments():
investments = arcc.portfolio_investments()Why This Matters
Private credit is one of the fastest-growing asset classes - 29% YoY growth to $375 billion in AUM. The standard tools for analyzing it (Preqin, PitchBook) cost six figures a year.
BDCs provide look-through transparency into this market using data that's free and public. Every quarter, 47 publicly traded BDCs disclose exactly which private companies they're lending to, how much, and at what terms. That's thousands of private company relationships laid out in SEC filings.
EdgarTools can now read all of it.
Getting Started
The BDC feature was release in edgartools 5.12.0. You can install it using pip
pip install edgartoolsHead over to our Github Repository for more information about the project.
Full documentation: Business Development Companies Guide