SEC EDGAR Filing Analyzer
Search SEC filings by ticker, name, or CIK. Extract 10-K, 10-Q, 8-K metadata and structured XBRL financials (revenue, net income, assets, EPS). Covers 10,000+ public companies. Free SEC API, no key needed.
Maintenance Pulse
93/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| company-analyzed | Charged per company analyzed. Includes CIK lookup, SEC submission retrieval, XBRL financial data extraction, and 20+ financial metrics. | $0.30 |
Example: 100 events = $30.00 · 1,000 events = $300.00
Documentation
What does SEC EDGAR Filing Analyzer do?
SEC EDGAR Filing Analyzer is an Apify actor that searches and analyzes SEC EDGAR filings for any U.S. public company by ticker symbol, company name, or CIK number. It retrieves filing metadata (10-K, 10-Q, 8-K, and more) along with structured XBRL financial data including revenue, net income, total assets, earnings per share, and other key metrics. It covers over 10,000 publicly traded companies using the free SEC EDGAR API -- no API key required.
For each company you get a complete profile (name, CIK, ticker, exchange, SIC code, state of incorporation, fiscal year end), a list of matching filings with direct URLs to the full documents on SEC.gov, and an optional financial snapshot extracted from machine-readable XBRL data.
Why use SEC EDGAR Filing Analyzer on Apify?
Navigating the SEC EDGAR website to find and extract filing data is tedious. The search interface is dated, financial data is buried in XBRL taxonomies that vary by company, and there is no built-in way to export structured data or monitor filings over time.
The raw SEC EDGAR API is free but complex: you need to handle rate limiting (10 requests/second), look up companies by CIK from a separate tickers file, parse nested submission JSON, and map XBRL concept names to financial metrics. This actor handles all of that:
- No API key required -- The SEC EDGAR API is completely free and public. No authentication needed.
- Flexible company lookup -- Search by ticker (AAPL), company name (Apple), or CIK number (0000320193).
- Automatic financial extraction -- Pulls 10 key financial metrics from XBRL data using multiple concept name mappings to handle different companies' reporting styles.
- Date range filtering -- Narrow results to a specific time window.
- Batch processing -- Analyze multiple companies in a single run with built-in rate limiting.
- Scheduled monitoring -- Track new filings daily with Apify's scheduler.
Key features
- All SEC filing types -- Retrieve 10-K annual reports, 10-Q quarterly reports, 8-K current reports, proxy statements (DEF 14A), insider trading forms (Form 4), S-1 registrations, 13F institutional holdings, and any other filing type.
- Structured XBRL financial extraction -- Automatically pulls the latest revenue, net income, total assets, total liabilities, shareholders' equity, EPS, operating income, cash, debt, and gross profit from machine-readable XBRL data.
- US-GAAP and IFRS support -- Financial extraction works with both US-GAAP and IFRS reporting standards, handling the different concept names used by each.
- Company profile data -- Returns SIC code, entity type, state of incorporation, fiscal year end, exchange listings, and filer category.
- Direct filing links -- Every filing includes a direct URL to the full document on SEC.gov.
- Date range filtering -- Narrow filings to a specific time window using dateFrom and dateTo parameters.
Use cases
Financial analyst workflow -- An equity analyst tracks quarterly earnings for 20 portfolio companies. They run the actor weekly with filingTypes: ["10-K", "10-Q"] and export financials to Google Sheets. When a new filing appears, they compare revenue and net income against prior periods without opening EDGAR.
Compliance monitoring -- A corporate compliance team monitors 8-K filings for material events across 50 companies in their supply chain. They schedule daily runs and send results to Slack, alerting the team to any unexpected disclosures or change-of-control events.
Investment research pipeline -- A quantitative fund builds an automated data pipeline that pulls XBRL financial data for 500 companies quarterly. They feed revenue, EPS, and total assets into their valuation models, eliminating manual data entry.
Competitive intelligence -- A startup CEO monitors their public competitors' SEC filings to track revenue growth, headcount changes (from 10-K employee disclosures), and new risk factors. They combine this with their own Company Deep Research actor for a complete picture.
Journalism and investigation -- A financial reporter searches for all 8-K filings from a specific company in the last 90 days to identify undisclosed material events. They cross-reference filing dates with stock price movements for potential stories.
Academic research -- A finance professor gathers 10-K financial data for 200 companies over a 5-year window for an empirical study on corporate leverage ratios, using the dateFrom/dateTo filters to isolate the study period.
How to use SEC EDGAR Filing Analyzer
- Click Try for free on this page.
- Enter one or more company tickers, names, or CIK numbers (e.g.,
AAPL,Tesla,0000320193). - Optionally filter by filing type (10-K, 10-Q, 8-K, etc.) and date range.
- Click Start and wait for the run to finish.
- Download results from the Dataset tab in JSON, CSV, or Excel format.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
companies | String[] | Yes | - | Company tickers, names, or CIK numbers to look up (e.g., AAPL, Tesla, 0000320193). |
filingTypes | String[] | No | All | SEC filing types to retrieve. Leave empty for all types. Common: 10-K, 10-Q, 8-K, DEF 14A, 4, S-1, 13F-HR. |
maxFilingsPerCompany | Integer | No | 20 | Maximum number of filings to return per company (1-500). |
includeFinancials | Boolean | No | true | Fetch structured XBRL financial data (revenue, net income, assets, EPS, etc.). |
dateFrom | String | No | - | Only include filings filed on or after this date (YYYY-MM-DD). |
dateTo | String | No | - | Only include filings filed on or before this date (YYYY-MM-DD). |
Input examples
Latest annual and quarterly reports for tech companies:
{
"companies": ["AAPL", "MSFT", "GOOGL", "AMZN", "META"],
"filingTypes": ["10-K", "10-Q"],
"maxFilingsPerCompany": 10,
"includeFinancials": true
}
All 8-K filings from one company in the last 90 days:
{
"companies": ["TSLA"],
"filingTypes": ["8-K"],
"maxFilingsPerCompany": 50,
"includeFinancials": false,
"dateFrom": "2025-11-01",
"dateTo": "2026-02-01"
}
Historical filings for academic research:
{
"companies": ["JPM", "BAC", "WFC", "C", "GS"],
"filingTypes": ["10-K"],
"maxFilingsPerCompany": 20,
"includeFinancials": true,
"dateFrom": "2020-01-01",
"dateTo": "2024-12-31"
}
Insider trading forms for a specific company:
{
"companies": ["NVDA"],
"filingTypes": ["4"],
"maxFilingsPerCompany": 100,
"includeFinancials": false
}
Input tips
- Use ticker symbols for best results -- Searching by ticker (e.g.,
MSFT) is the most reliable lookup method. Company name searches work but may match unexpected entities if the name is common. - Filter filing types to reduce noise -- If you only need annual reports, set
filingTypesto["10-K"]to skip the hundreds of other filing types. - Set
includeFinancialsto false for filing types without XBRL data (Form 4, proxy statements) to speed up the run. - CIK numbers work with or without leading zeros -- Both
320193and0000320193resolve to Apple Inc.
Output example
The actor returns one result per company:
{
"query": "AAPL",
"found": true,
"company": {
"name": "Apple Inc.",
"cik": "0000320193",
"tickers": ["AAPL"],
"exchanges": ["Nasdaq"],
"sic": "3571",
"sicDescription": "ELECTRONIC COMPUTERS",
"entityType": "operating",
"stateOfIncorporation": "CA",
"fiscalYearEnd": "0928",
"category": "Large accelerated filer"
},
"filingCount": 3,
"filings": [
{
"type": "10-K",
"filingDate": "2024-11-01",
"reportDate": "2024-09-28",
"description": "Form 10-K",
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm",
"accessionNumber": "0000320193-24-000123",
"primaryDocument": "aapl-20240928.htm",
"isXBRL": true
}
],
"financials": {
"revenue": {
"label": "Revenue from Contract with Customer, Excluding Assessed Tax",
"value": 391035000000,
"period": "2024-09-28",
"filed": "2024-11-01",
"form": "10-K",
"unit": "USD"
},
"netIncome": {
"label": "Net Income (Loss)",
"value": 93736000000,
"period": "2024-09-28",
"filed": "2024-11-01",
"form": "10-K",
"unit": "USD"
},
"earningsPerShare": {
"label": "Earnings Per Share, Basic",
"value": 6.11,
"period": "2024-09-28",
"filed": "2024-11-01",
"form": "10-K",
"unit": "USD/shares"
}
},
"analyzedAt": "2025-01-15T14:30:00.000Z"
}
Output fields -- company level
| Field | Type | Description |
|---|---|---|
query | String | The original search query (ticker, name, or CIK) |
found | Boolean | Whether a matching company was found in SEC records |
company.name | String | Official company name |
company.cik | String | Central Index Key (10-digit, zero-padded) |
company.tickers | String[] | Stock ticker symbols |
company.exchanges | String[] | Stock exchanges where the company is listed |
company.sic | String | Standard Industrial Classification code |
company.sicDescription | String | Human-readable SIC industry description |
company.entityType | String | SEC entity type (e.g., operating) |
company.stateOfIncorporation | String | Two-letter state code |
company.fiscalYearEnd | String | Fiscal year end date (MMDD format, e.g., 0928 = September 28) |
company.category | String | SEC filer category (e.g., Large accelerated filer) |
Output fields -- filing level
| Field | Type | Description |
|---|---|---|
type | String | SEC form type (10-K, 10-Q, 8-K, etc.) |
filingDate | String | Date the filing was submitted to the SEC |
reportDate | String | Period end date for the report |
description | String | Filing description from SEC |
url | String | Direct URL to the full document on SEC.gov |
accessionNumber | String | Unique SEC accession number |
primaryDocument | String | Primary document filename |
isXBRL | Boolean | Whether the filing includes machine-readable XBRL data |
Output fields -- financial metrics
Each metric (when available) includes:
| Field | Type | Description |
|---|---|---|
label | String | XBRL concept label (human-readable name) |
value | Number | Financial value (in the currency/unit specified) |
period | String | Reporting period end date |
filed | String | Date the filing was submitted |
form | String | Filing type the data came from (10-K or 10-Q) |
unit | String | Unit of measurement (USD, USD/shares, etc.) |
Available financial metrics: revenue, netIncome, totalAssets, totalLiabilities, shareholdersEquity, earningsPerShare, operatingIncome, cashAndEquivalents, totalDebt, grossProfit.
How to use the API programmatically
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_API_TOKEN")
run_input = {
"companies": ["AAPL", "MSFT", "GOOGL"],
"filingTypes": ["10-K", "10-Q"],
"maxFilingsPerCompany": 10,
"includeFinancials": True,
}
run = client.actor("ryanclinton/sec-edgar-filing-analyzer").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
company = item["company"]
financials = item.get("financials", {})
revenue = financials.get("revenue", {}).get("value", "N/A")
print(f"{company['name']} ({company['tickers'][0]}): Revenue = {revenue}")
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_APIFY_API_TOKEN" });
const run = await client.actor("ryanclinton/sec-edgar-filing-analyzer").call({
companies: ["AAPL", "MSFT", "GOOGL"],
filingTypes: ["10-K", "10-Q"],
maxFilingsPerCompany: 10,
includeFinancials: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
const revenue = item.financials?.revenue?.value ?? "N/A";
console.log(`${item.company.name}: Revenue = ${revenue}`);
});
cURL
# Start the actor
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~sec-edgar-filing-analyzer/runs?token=YOUR_APIFY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companies": ["AAPL", "MSFT"],
"filingTypes": ["10-K"],
"maxFilingsPerCompany": 5,
"includeFinancials": true
}'
# Retrieve results
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_APIFY_API_TOKEN&format=json"
How it works
-
Company lookup -- The actor loads the SEC's complete company tickers file (10,000+ entries) and searches for your query. It tries exact CIK match first, then exact ticker match, then company name substring match. The tickers file is cached in memory for batch runs.
-
Submission retrieval -- For each matched company, the actor fetches the full submissions JSON from
data.sec.gov/submissions/CIK{cik}.json. This contains the company profile and an array of recent filings with metadata (form type, dates, accession numbers, document names). -
Filing filtering -- The submissions array is filtered by filing type (if specified) and date range (if specified), then capped at
maxFilingsPerCompany. Each filing gets a direct URL constructed from the CIK, accession number, and primary document name. -
XBRL financial extraction -- If
includeFinancialsis enabled, the actor fetches the company's XBRL facts fromdata.sec.gov/api/xbrl/companyfacts/CIK{cik}.json. It then searches for 10 financial metrics across both US-GAAP and IFRS taxonomies. For each metric, it tries multiple XBRL concept names (e.g., revenue might be reported asRevenueFromContractWithCustomerExcludingAssessedTax,Revenues, orSalesRevenueNetdepending on the company). It prefers 10-K (annual) data over 10-Q (quarterly) and returns the most recent value. -
Rate limiting -- The actor throttles requests to 5 per second (200ms interval), staying conservatively below the SEC's 10 req/sec limit. This ensures reliable access even for large batch runs.
-
Output -- One result per company is pushed to the Apify dataset with company profile, filtered filings, and financial snapshot.
XBRL concept mapping
The actor maps financial metrics to multiple XBRL taxonomy concepts because different companies use different terms:
| Metric | XBRL Concepts Tried (in order) |
|---|---|
| Revenue | RevenueFromContractWithCustomerExcludingAssessedTax, Revenues, SalesRevenueNet, SalesRevenueGoodsNet |
| Net Income | NetIncomeLoss, NetIncomeLossAvailableToCommonStockholdersBasic, ProfitLoss |
| Total Assets | Assets |
| Total Liabilities | Liabilities, LiabilitiesAndStockholdersEquity |
| Shareholders' Equity | StockholdersEquity, StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest |
| EPS | EarningsPerShareBasic, EarningsPerShareDiluted |
| Operating Income | OperatingIncomeLoss |
| Cash | CashAndCashEquivalentsAtCarryingValue, CashCashEquivalentsAndShortTermInvestments |
| Total Debt | LongTermDebt, LongTermDebtAndCapitalLeaseObligations, DebtCurrent |
| Gross Profit | GrossProfit |
Common filing types reference
| Type | Name | Description |
|---|---|---|
| 10-K | Annual Report | Comprehensive annual financial report with audited statements |
| 10-Q | Quarterly Report | Unaudited quarterly financial report |
| 8-K | Current Report | Report of material events (earnings, M&A, leadership changes) |
| DEF 14A | Proxy Statement | Executive compensation, board nominees, shareholder votes |
| 4 | Insider Trading | Statement of changes in beneficial ownership (stock trades by insiders) |
| S-1 | Registration | IPO registration statement |
| 13F-HR | Institutional Holdings | Quarterly report of institutional investment managers' holdings |
| SC 13D | Beneficial Ownership | Report by 5%+ shareholders |
| 20-F | Foreign Annual Report | Annual report for foreign private issuers |
How much does it cost?
| Scenario | Companies | Est. Runtime | Est. Cost |
|---|---|---|---|
| Single company with financials | 1 | ~3 sec | ~$0.001 |
| 5 companies with financials | 5 | ~15 sec | ~$0.005 |
| 20 companies, all filing types | 20 | ~1 min | ~$0.02 |
| 100 companies batch | 100 | ~5 min | ~$0.08 |
Apify Free Tier: $5 of free monthly credits -- enough to analyze thousands of companies per month.
SEC EDGAR API: Completely free. No API key, no charges, no quotas.
Combine with other actors
- EDGAR Filing Search -- Full-text search across all SEC EDGAR filings with keyword matching. Use when you need to find filings by content rather than by company.
- SEC Insider Trading -- Track insider stock transactions (Form 4 filings) for any public company. Complements this actor's filing metadata with detailed transaction data.
- SEC 13F Holdings -- Search institutional investment manager holdings from 13F filings. See which funds hold positions in the companies you analyze.
- Congressional Stock Trade Tracker -- Monitor stock trades reported by members of Congress. Cross-reference with SEC filings for complete transparency.
- Finnhub Stock Market Data -- Get real-time stock quotes, company profiles, and market data to complement SEC filing analysis.
- Company Deep Research Agent -- Comprehensive company intelligence combining multiple data sources for a complete picture beyond SEC filings.
- OFAC Sanctions Search -- Screen companies and their officers against OFAC sanctions lists for compliance due diligence.
Limitations
- Financial data coverage -- XBRL financial extraction works best for recent filings (post-2009). Older filings may not have machine-readable financial data. The actor automatically extracts the most recent available data point for each metric.
- Concept name variations -- Different companies use different XBRL concept names for the same financial metric. The actor maps 10 metrics across multiple concept names, but some companies may use unusual concepts that are not covered.
- Recent filings only -- The SEC submissions endpoint returns the most recent ~1,000 filings. For very old filing history, you may need to use the EDGAR full-text search API separately.
- Company name ambiguity -- Searching by company name uses substring matching. Common names (e.g., "United") may match an unexpected entity. Use ticker symbols for reliable lookups.
- Rate limiting -- The actor conservatively limits to 5 requests/second. Very large batches (500+ companies) will take proportionally longer.
- No document content -- The actor returns filing metadata and XBRL financial data, but does not parse the full text content of filing documents. Use the direct URL to access the complete document on SEC.gov.
Responsible use
- Public data -- All data comes from the SEC's public EDGAR system, a government database specifically designed for public access. The SEC actively encourages programmatic access.
- Rate limiting -- The actor stays within SEC's published rate limits (10 req/sec) with a conservative 5 req/sec throttle. Do not modify or bypass this rate limiting.
- SEC fair access -- Avoid scheduling unnecessarily frequent runs. Daily monitoring is appropriate; running every minute is excessive.
- Data accuracy -- XBRL financial data is extracted directly from company filings. Always verify critical financial data against the primary filing documents on SEC.gov before making investment decisions.
FAQ
Do I need an API key? No. The SEC EDGAR API is completely free and does not require authentication.
What financial metrics are extracted? Up to 10 key metrics: revenue, net income, total assets, total liabilities, shareholders' equity, earnings per share, operating income, cash and equivalents, total debt, and gross profit. The actor pulls the most recent reported value from 10-K or 10-Q filings.
How current is the filing data? The actor queries the SEC EDGAR API in real time. Filing data is available as soon as the SEC processes and publishes it, typically within minutes of submission.
Can I search for non-US companies? Yes, if the company files with the SEC. Many foreign companies that trade on US exchanges (via ADRs or direct listings) file reports with the SEC. The actor supports both US-GAAP and IFRS reporting standards.
What is a CIK number? CIK (Central Index Key) is a unique 10-digit identifier assigned by the SEC to every entity that files with them. Apple Inc.'s CIK is 0000320193. You can search by CIK, ticker symbol, or company name.
How many companies can I analyze in a single run? There is no hard limit. Each company requires several API calls, so large batches (100+ companies) take longer. The actor includes built-in rate limiting to stay within SEC guidelines.
Can I get results in CSV or Excel format?
Yes. After the actor completes, click "Export" on the dataset page and choose your format. The Apify API also supports format=csv and format=xlsx query parameters.
Why is a financial metric missing for some companies? Not all companies report every metric, and some use non-standard XBRL concept names. The actor tries multiple concept names for each metric but may not cover every variation. Companies that have only recently gone public may have limited XBRL history.
Integrations
- Google Sheets -- Export filing data and financials directly to spreadsheets for analysis.
- Slack / Email -- Get notifications about new filings for companies you track.
- Webhooks -- Push results to your data warehouse, CRM, or custom pipeline.
- Zapier / Make -- Build complex automations combining SEC data with other sources.
- REST API -- Call the actor programmatically from any language or platform.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
Website Contact Scraper
Extract emails, phone numbers, team members, and social media links from any business website. Feed it URLs from Google Maps or your CRM and get structured contact data back. Fast HTTP requests, no browser — scrapes 1,000 sites for ~$0.50.
Email Pattern Finder
Discover the email format used by any company. Enter a domain like stripe.com and detect patterns like [email protected]. Then generate email addresses for any name. Combine with Website Contact Scraper to turn company websites into complete email lists.
Waterfall Contact Enrichment
Find business emails, phones, and social profiles from a name + company domain. Cascades through MX validation, website scraping, pattern detection, and SMTP verification. Free Clay alternative.
B2B Lead Qualifier - Score & Rank Company Leads
Score and rank B2B leads 0-100 by crawling company websites. Analyzes 30+ signals across contact reachability, business legitimacy, online presence, website quality, and team transparency. No AI keys needed.
Ready to try SEC EDGAR Filing Analyzer?
Start for free on Apify. No credit card required.
Open on Apify Store