# edgartools — Data Objects Reference Every SEC filing can be parsed into a structured Python object: ```python obj = filing.obj() # returns TenK, EightK, ThirteenF, Form4, etc. ``` ## Supported Forms ### Annual & Quarterly Reports (10-K / 10-Q) → TenK / TenQ ```python tenk = filing.obj() # or tenq for 10-Q # Financial statements tenk.income_statement # formatted income statement tenk.balance_sheet # balance sheet tenk.financials # Financials object with all statements # Document sections tenk.risk_factors # full risk factors text tenk.business # business description tenk.mda # management discussion & analysis # Usage via Financials if tenk.financials: income = tenk.financials.income_statement balance = tenk.financials.balance_sheet cashflow = tenk.financials.cash_flow_statement ``` **Note:** Always check `tenk.financials` before accessing — not all filings have XBRL data. --- ### Current Events (8-K) → EightK ```python eightk = filing.obj() eightk.items # list of reported event codes (e.g. ["2.02", "9.01"]) eightk.press_releases # attached press releases print(f"Items: {eightk.items}") ``` Common 8-K item codes: - `1.01` — Entry into material agreement - `2.02` — Results of operations (earnings) - `5.02` — Director/officer changes - `8.01` — Other events --- ### Insider Trades (Form 4) → Form4 (Ownership) ```python form4 = filing.obj() form4.reporting_owner # insider name form4.transactions # buy/sell details with prices, shares, dates # Get HTML table html = form4.to_html() ``` Also covers: - Form 3 — Initial ownership statement - Form 5 — Annual changes in beneficial ownership --- ### Beneficial Ownership (SC 13D / SC 13G) → Schedule13D / Schedule13G ```python schedule = filing.obj() schedule.total_shares # aggregate beneficial ownership schedule.items.item4_purpose_of_transaction # activist intent (13D only) schedule.items.item5_interest_in_securities # ownership percentage ``` - **SC 13D**: Activist investors (5%+ with intent to influence) - **SC 13G**: Passive holders (5%+) --- ### Institutional Portfolios (13F-HR) → ThirteenF ```python thirteenf = filing.obj() thirteenf.infotable # full holdings DataFrame thirteenf.total_value # portfolio market value # Analyze holdings holdings_df = thirteenf.infotable print(holdings_df.head()) print(f"Total AUM: ${thirteenf.total_value/1e9:.1f}B") ``` --- ### Proxy & Governance (DEF 14A) → ProxyStatement ```python proxy = filing.obj() proxy.executive_compensation # pay tables (5-year DataFrame) proxy.proposals # shareholder vote items proxy.peo_name # "Mr. Cook" (principal exec officer) proxy.peo_total_comp # CEO total compensation ``` --- ### Private Offerings (Form D) → FormD ```python formd = filing.obj() formd.offering # offering details and amounts formd.recipients # related persons ``` --- ### Crowdfunding Offerings (Form C) → FormC ```python formc = filing.obj() formc.offering_information # target amount, deadline, securities formc.annual_report_disclosure # issuer financials (C-AR) ``` --- ### Insider Sale Notices (Form 144) → Form144 ```python form144 = filing.obj() form144.proposed_sale_amount # shares to be sold form144.securities # security details ``` --- ### Fund Voting Records (N-PX) → FundReport ```python npx = filing.obj() npx.votes # vote records by proposal ``` --- ### ABS Distribution Reports (Form 10-D) → TenD (CMBS only) ```python ten_d = filing.obj() ten_d.loans # loan-level DataFrame ten_d.properties # property-level DataFrame ten_d.asset_data.summary() # pool statistics ``` --- ### Municipal Advisors (MA-I) → MunicipalAdvisorForm ```python mai = filing.obj() mai.advisor_name # advisor details ``` --- ### Foreign Private Issuers (20-F) → TwentyF ```python twentyf = filing.obj() twentyf.financials # financial data for foreign issuers ``` --- ## Complete Form → Class Mapping | Form | Class | Key Attributes | |------|-------|----------------| | 10-K | TenK | `financials`, `income_statement`, `risk_factors`, `business` | | 10-Q | TenQ | `financials`, `income_statement`, `balance_sheet` | | 8-K | EightK | `items`, `press_releases` | | 20-F | TwentyF | `financials` | | 3 | Form3 | initial ownership | | 4 | Form4 | `reporting_owner`, `transactions` | | 5 | Form5 | annual ownership changes | | DEF 14A | ProxyStatement | `executive_compensation`, `proposals`, `peo_name` | | 13F-HR | ThirteenF | `infotable`, `total_value` | | SC 13D | Schedule13D | `total_shares`, `items` | | SC 13G | Schedule13G | `total_shares` | | NPORT-P | NportFiling | fund portfolio | | 144 | Form144 | `proposed_sale_amount`, `securities` | | N-PX | FundReport | `votes` | | Form D | FormD | `offering`, `recipients` | | Form C | FormC | `offering_information` | | 10-D | TenD | `loans`, `properties`, `asset_data` | | MA-I | MunicipalAdvisorForm | `advisor_name` | --- ## How It Works ```python from edgar import Company apple = Company("AAPL") filing = apple.get_latest_filing("10-K") tenk = filing.obj() # returns TenK with all sections and financials ``` If a form type is not yet supported, `filing.obj()` raises `UnsupportedFilingTypeError`. ## Pattern for Unknown Form Types ```python obj = filing.obj() if obj is None: # Fallback to raw content text = filing.text() html = filing.html() xbrl = filing.xbrl() ```