Skip to content

SEC Filing Data Objects: Parsed Python Objects for Every Form Type

Every SEC filing can be parsed into a structured Python object with one call:

filing.obj()  # returns a TenK, EightK, ThirteenF, etc.

Browse the filing types below to find what you need.


Fund Entities

Look up mutual funds and ETFs by ticker, series ID, or CIK. Navigate fund hierarchies and access portfolio reports.

from edgar import Fund, find_funds
fund = Fund("VFINX")                          # Ticker, series ID, or CIK
fund.get_portfolio()                           # Latest portfolio holdings

Fund Entities guide


Annual & Quarterly Reports (10-K / 10-Q)

Read a company's financials, risk factors, and business description.

tenk = filing.obj()                        # TenK or TenQ
tenk.income_statement                      # formatted financial statement
tenk.risk_factors                          # full section text
tenk.auditor                               # auditor name, PCAOB ID, location
tenk.subsidiaries                          # subsidiaries from Exhibit 21 (10-K only)
tenk.reports                               # XBRL viewer pages (statements, notes, details)

Annual & Quarterly Reports


Current Events (8-K)

Find out what just happened -- acquisitions, officer changes, earnings releases.

eightk = filing.obj()                      # EightK
eightk.items                               # list of reported event codes
eightk.press_releases                      # attached press releases

Current Events guide


Insider Trades (Form 4)

See who bought or sold shares and at what price.

form4 = filing.obj()                       # Ownership
form4.reporting_owner                      # insider name
form4.transactions                         # buy/sell details with prices

Insider Trades guide

See it live on edgar.tools

Every filing type above — 10-K, 8-K, Form 4, 13F, proxy statements — is also browsable on edgar.tools with AI enrichment layered on top:

Includes AI-classified 8-K events, insider sentiment analysis, and multi-year disclosure comparison. Free tier available.


Beneficial Ownership (Schedule 13D/G)

Track activist investors and large institutional holders who own 5%+ of a company.

schedule = filing.obj()                    # Schedule13D or Schedule13G
schedule.total_shares                      # aggregate beneficial ownership
schedule.items.item4_purpose_of_transaction  # activist intent (13D only)

Beneficial Ownership guide


Institutional Portfolios (13F)

Explore hedge fund and institutional investor holdings.

thirteenf = filing.obj()                   # ThirteenF
thirteenf.infotable                        # full holdings table
thirteenf.total_value                      # portfolio market value

Institutional Portfolios guide


Proxy & Governance (DEF 14A)

Review executive compensation, board nominees, and shareholder proposals.

proxy = filing.obj()                       # ProxyStatement
proxy.executive_compensation               # pay tables
proxy.proposals                            # shareholder vote items

Proxy & Governance guide


Private Offerings (Form D)

Track exempt securities offerings and the companies raising capital.

formd = filing.obj()                       # FormD
formd.offering                             # offering details and amounts
formd.recipients                           # related persons

Private Offerings guide


Crowdfunding Offerings (Form C)

Monitor crowdfunding campaigns under Regulation CF, including offering terms and issuer financials.

formc = filing.obj()                       # FormC
formc.offering_information                 # target amount, deadline, securities
formc.annual_report_disclosure             # issuer financials (if C-AR)

Crowdfunding guide


Insider Sale Notices (Form 144)

Monitor planned insider sales before they happen.

form144 = filing.obj()                     # Form144
form144.proposed_sale_amount               # shares to be sold
form144.securities                         # security details

Insider Sale Notices guide


Fund Summary Prospectus (497K)

Parse mutual fund and ETF summary prospectuses with fee tables, expense examples, and average annual returns.

prospectus = filing.obj()                  # Prospectus497K
prospectus.fees                            # expense ratios per share class
prospectus.performance                     # average annual returns (1yr/5yr/10yr)
prospectus.best_quarter                    # (8.80%, 'December 31, 2023')

Fund Summary Prospectus guide


Fund Shareholder Reports (N-CSR / N-CSRS)

Parse certified annual and semiannual shareholder reports with expense ratios, performance data, and share class details.

report = filing.obj()                      # FundShareholderReport
report.expense_data()                      # expense ratios per share class
report.performance_data()                  # annual returns per share class

Fund Shareholder Reports guide


Fund Portfolio Holdings (NPORT-P)

Parse monthly mutual fund and ETF portfolio holdings -- every stock, bond, and derivative position.

report = filing.obj()                          # FundReport
report.investment_data()                       # All portfolio positions as DataFrame

Fund Portfolio Holdings guide


Money Market Funds (N-MFP)

Parse money market fund filings with portfolio holdings, yields, NAV, and liquidity metrics.

mmf = filing.obj()                             # MoneyMarketFund
mmf.portfolio_data()                           # Securities sorted by market value

Money Market Funds guide


Fund Census (N-CEN)

Parse annual fund census filings with series data, service providers, and ETF details.

census = filing.obj()                          # FundCensus
census.series_data()                           # Fund series summary

Fund Census guide


Fund Voting Records (N-PX)

See how mutual funds voted on shareholder proposals.

npx = filing.obj()                         # FundReport
npx.votes                                  # vote records by proposal

Fund Voting Records guide


Fund Fee Notices (24F-2NT)

Track fund sales volumes, redemptions, and SEC registration fees across the investment company universe.

notice = filing.obj()                      # FundFeeNotice
notice.aggregate_sales                     # total securities sold ($)
notice.net_sales                           # sales minus redemptions ($)
notice.registration_fee                    # fee due to SEC ($)
notice.series                              # list of fund series reported
notice.fiscal_year_end                     # e.g., '12/31/2025'

Fund Fee Notices guide


ABS Distribution Reports (Form 10-D)

Extract structured CMBS loan and property data from asset-backed securities distribution reports.

ten_d = filing.obj()                       # TenD (CMBS only)
ten_d.loans                                # loan-level DataFrame
ten_d.properties                           # property-level DataFrame
ten_d.asset_data.summary()                 # pool statistics

ABS Distribution Reports guide


Municipal Advisors (MA-I)

Look up municipal advisor registrations and disciplinary history.

mai = filing.obj()                         # MunicipalAdvisorForm
mai.advisor_name                           # advisor details

Municipal Advisors guide


Prospectus Supplements (424B)

Extract offering terms, pricing, underwriting, and dilution from shelf takedown prospectuses.

prospectus = filing.obj()                  # Prospectus424B
deal = prospectus.deal                     # Deal: normalized deal summary
deal.price                                 # per-share price (float)
deal.gross_proceeds                        # total offering amount
deal.discount_rate                         # underwriting fee as fraction of price

Prospectus Supplements guide


Registration Statements (S-1 / F-1)

Parse IPO and registration statement filings to extract offering type, cover page data, fee tables, dilution, capitalization, and underwriting details.

s1 = filing.obj()                         # RegistrationS1
s1.offering_type                          # S1OfferingType.IPO
s1.total_offering                         # total registered amount ($)
s1.fee_table                              # parsed Exhibit 107 fee table
s1.takedowns                              # 424B filings under this registration
s1.effective_date                         # when declared effective

Supports S-1, S-1/A, F-1, and F-1/A.

Registration Statements guide


Shelf Registrations (S-3 / F-3)

Parse shelf registration statements to extract offering capacity, filer category, fee tables, and navigate to 424B takedowns.

s3 = filing.obj()                         # RegistrationS3
s3.offering_type                          # S3OfferingType.UNIVERSAL_SHELF
s3.total_offering                         # total registered amount ($)
s3.fee_table                              # parsed Exhibit 107 fee table
s3.takedowns                              # 424B filings under this shelf

Supports S-3, S-3/A, S-3ASR, S-3D, S-3DPOS, F-3, F-3/A, F-3ASR, and F-3ASR/A.

Shelf Registrations guide


Draft Registration Statements (DRS)

Identify the underlying form type of confidential draft registrations before they go public.

drs = filing.obj()                         # DraftRegistrationStatement
drs.underlying_form                        # 'S-1', 'F-1', 'S-4', '20-F', 'Form 10', etc.
drs.underlying_object                      # delegated RegistrationS1 (if S-1/F-1)
drs.registration_number                    # '377-09148'
drs.is_amendment                           # True for DRS/A

Draft Registrations guide


Effectiveness Notices (EFFECT)

Track when a registration statement is declared effective by the SEC and navigate back to the source filing.

effect = filing.obj()                      # Effect
effect.effective_date                      # '2024-06-15'
effect.source_submission_type              # 'S-1'
source = effect.get_source_filing()        # Filing object for the S-1

Effectiveness Notices guide


Regulatory Registrations (XML Forms)

Generic access to broker-dealer reports, transfer agent filings, crowdfunding portals, swap entity registrations, and other XML-based regulatory forms.

xf = filing.obj()                          # XmlFiling
xf['brokerDealerName']                     # deep key lookup into XML data
xf.form_data                               # full dict of parsed XML
xf.to_html()                               # SEC's official rendered view
Form Description
X-17A-5 Broker-dealer financial report
TA-1 / TA-2 Transfer agent registration and annual report
CFPORTAL Crowdfunding portal registration
SBSE / SBSE-A Security-based swap entity registration
ATS-N-C Alternative trading system cessation

How it works

Call filing.obj() on any supported filing. EdgarTools detects the form type, parses the raw HTML/XML/XBRL, and returns the right data object. If a filing type isn't supported yet, you'll get an UnsupportedFilingTypeError.

from edgar import Company

apple = Company("AAPL")
filing = apple.get_latest_filing("10-K")
tenk = filing.obj()          # returns a TenK with all sections and financials