SEC Company Facts API Scraper
Pricing
Pay per event
SEC Company Facts API Scraper
Official SEC EDGAR Company Facts API scraper that resolves tickers or CIKs and flattens XBRL facts for finance, accounting, and compliance workflows.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract official SEC EDGAR Company Facts API data by ticker or CIK and turn deeply nested XBRL JSON into clean dataset rows.
This actor is built for financial analysts, fintech data teams, accounting researchers, valuation workflows, compliance teams, and data engineers who need normalized public-company fundamentals without maintaining EDGAR plumbing.
What does SEC Company Facts API Scraper do?
SEC Company Facts API Scraper fetches official data from the SEC EDGAR Company Facts API and flattens each fact into one dataset row.
It resolves tickers such as AAPL or MSFT to SEC CIKs, downloads companyfacts JSON, and emits rows with taxonomy, concept, unit, value, fiscal period, filing form, accession number, and source URL.
Use it when you need repeatable exports of public-company XBRL facts for spreadsheets, BI tools, databases, dashboards, or downstream analysis.
Who is it for?
- ๐ Equity analysts collecting fundamentals for coverage lists.
- ๐ฆ Fintech teams enriching company databases with official SEC data.
- ๐งพ Accounting researchers comparing reported XBRL concepts across issuers.
- ๐ก๏ธ Compliance teams auditing facts back to SEC accession numbers.
- ๐งโ๐ป Data engineers building scheduled EDGAR ingestion pipelines.
- ๐ Academic researchers studying public-company reporting trends.
Why use this actor?
- โ Official SEC source, not a third-party scraped copy.
- โ Accepts both ticker symbols and CIK numbers.
- โ Flattens nested XBRL facts into table-ready records.
- โ Supports concept, taxonomy, unit, form, fiscal-year, and filed-date filters.
- โ Includes accession numbers, period dates, frames, and source URLs for traceability.
- โ Runs without browser automation, login, cookies, or residential proxies.
Data source
The actor uses official SEC endpoints:
https://www.sec.gov/files/company_tickers.jsonhttps://data.sec.gov/api/xbrl/companyfacts/CIK##########.json
The SEC asks automated clients to identify themselves. The input includes userAgentContact so you can provide a descriptive contact string for your organization.
What data can you extract?
The SEC Company Facts API includes many XBRL concepts from taxonomies such as us-gaap and dei.
Common concepts include:
- Revenues
- Assets
- Liabilities
- NetIncomeLoss
- StockholdersEquity
- EntityCommonStockSharesOutstanding
- EarningsPerShareBasic
- CashAndCashEquivalentsAtCarryingValue
Available concepts vary by issuer and filing history.
Output data table
| Field | Description |
|---|---|
inputIdentifier | Ticker or CIK supplied in input |
cik | 10-digit SEC CIK |
ticker | Resolved ticker when available |
entityName | Company name from SEC |
taxonomy | XBRL taxonomy, e.g. us-gaap |
concept | XBRL concept name |
label | Human-readable SEC label |
description | Concept description |
unit | Measurement unit, e.g. USD or shares |
value | Reported fact value |
fiscalYear | Fiscal year |
fiscalPeriod | Fiscal period such as FY, Q1, Q2, Q3 |
form | SEC form such as 10-K or 10-Q |
filed | Filing date |
frame | SEC frame identifier when provided |
accessionNumber | SEC accession number |
startDate | Reporting period start |
endDate | Reporting period end |
sourceUrl | SEC Company Facts API URL |
scrapedAt | Extraction timestamp |
How much does it cost to extract SEC company facts?
This actor uses pay-per-event pricing:
- A small start fee per run.
- A per-row fee for each flattened SEC company fact saved to the dataset.
You control cost with maxFactsPerCompany and filters such as concepts, forms, taxonomies, fiscalYearFrom, and filedAfter.
For a focused fundamentals run, provide specific concepts like Revenues, Assets, and NetIncomeLoss. For a broad export, leave concept filters empty and raise maxFactsPerCompany.
Quick start
- Open the actor on Apify.
- Enter ticker symbols or CIKs in
identifiers. - Optionally set
concepts,forms, andfiscalYearFrom. - Keep
maxFactsPerCompanyreasonable for the first run. - Run the actor.
- Export the dataset as JSON, CSV, Excel, or through the Apify API.
Example input
{"identifiers": ["AAPL", "MSFT"],"concepts": ["Revenues", "Assets", "NetIncomeLoss"],"taxonomies": ["us-gaap"],"forms": ["10-K", "10-Q"],"fiscalYearFrom": 2022,"maxFactsPerCompany": 500}
Example output
{"inputIdentifier": "AAPL","cik": "0000320193","ticker": "AAPL","entityName": "Apple Inc.","taxonomy": "us-gaap","concept": "Revenues","label": "Revenues","unit": "USD","value": 383285000000,"fiscalYear": 2023,"fiscalPeriod": "FY","form": "10-K","filed": "2023-11-03","accessionNumber": "0000320193-23-000106","sourceUrl": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json","scrapedAt": "2026-07-01T00:00:00.000Z"}
Input reference
identifiers
Ticker symbols or CIK numbers. Examples: AAPL, MSFT, 0000320193.
concepts
Optional XBRL concept names. Leave empty to include every concept returned by SEC.
taxonomies
Optional taxonomy names. Use us-gaap for financial statement concepts or dei for document/entity facts.
forms
Optional SEC forms such as 10-K, 10-Q, or 8-K.
units
Optional units such as USD, shares, or USD/shares.
fiscalYearFrom
Only include rows with fiscal year greater than or equal to the selected year.
filedAfter
Only include facts filed on or after a YYYY-MM-DD date.
maxFactsPerCompany
Maximum flattened rows emitted for each company.
requestDelayMs
Delay between SEC requests. Keep a modest delay for SEC fair access.
userAgentContact
A descriptive contact string sent to SEC in the User-Agent header.
Tips for better results
- Start with a few companies and a few concepts.
- Use
fiscalYearFromto avoid very old filing history. - Use
forms: ["10-K"]for annual-only datasets. - Use
forms: ["10-K", "10-Q"]for annual and quarterly facts. - Leave
conceptsempty only when you really need broad XBRL coverage. - Keep your SEC User-Agent contact accurate for production workflows.
Common analyst workflows
- Build a revenue and assets table for a watchlist.
- Pull annual 10-K facts for public SaaS companies.
- Compare
NetIncomeLossacross fiscal years. - Export accession-linked rows for audit trails.
- Create a normalized feed for a warehouse or lakehouse.
Integrations
You can connect the dataset to:
- Google Sheets through Apify integrations.
- BigQuery, Snowflake, or Postgres through API exports.
- Python notebooks for valuation models.
- Node.js ETL jobs for scheduled enrichment.
- BI tools that ingest CSV or JSON.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/sec-company-facts-api-scraper').call({identifiers: ['AAPL', 'MSFT'],concepts: ['Revenues', 'Assets'],fiscalYearFrom: 2022,maxFactsPerCompany: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/sec-company-facts-api-scraper').call(run_input={'identifiers': ['AAPL', 'MSFT'],'concepts': ['Revenues', 'Assets'],'fiscalYearFrom': 2022,'maxFactsPerCompany': 200,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items[:5])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~sec-company-facts-api-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"identifiers":["AAPL"],"concepts":["Revenues","Assets"],"maxFactsPerCompany":100}'
MCP usage
Use Apify MCP with Claude Code or Claude Desktop to run this actor from natural language.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/sec-company-facts-api-scraper
Claude Code setup:
$claude mcp add apify-sec-company-facts https://mcp.apify.com/?tools=automation-lab/sec-company-facts-api-scraper
Claude Desktop JSON configuration:
{"mcpServers": {"apify-sec-company-facts": {"url": "https://mcp.apify.com/?tools=automation-lab/sec-company-facts-api-scraper"}}}
Example prompts:
- "Run the SEC Company Facts API Scraper for AAPL and MSFT and summarize recent revenues."
- "Extract 10-K facts for NVDA since fiscal year 2021."
- "Create a CSV of Assets and NetIncomeLoss for these tickers."
Scheduling
Schedule this actor to refresh watchlists monthly, quarterly, or after expected filing windows.
For quarterly monitoring, use ticker lists plus forms: ["10-Q"]. For annual fundamentals, use forms: ["10-K"].
Data quality notes
The actor returns what the SEC Company Facts API provides. Concept availability, units, frames, and periods depend on issuer filings and XBRL tagging.
Some companies use different concepts for similar metrics. For robust analysis, map concepts carefully in your downstream pipeline.
SEC fair-access guidance
The actor is intentionally HTTP-only, sequential, and low-rate by default. It includes a User-Agent contact field because SEC systems request that automated tools identify themselves.
Avoid very large unnecessary runs. Filter concepts and years when possible.
Troubleshooting
Why did my ticker fail?
The actor resolves tickers from SEC company_tickers.json. If a symbol is missing, try the company's CIK.
Why are there fewer rows than expected?
Your filters may be too narrow. Remove concepts, forms, units, filedAfter, or fiscalYearFrom and try again.
Why do values appear multiple times?
SEC facts can repeat across forms, periods, frames, amendments, and accession numbers. Use form, filed, accessionNumber, startDate, and endDate to choose the row you need.
FAQ
Is this SEC company facts scraper using official data?
Yes. It fetches SEC EDGAR Company Facts API JSON directly from data.sec.gov and ticker mappings from sec.gov.
Can I scrape by ticker instead of CIK?
Yes. Enter tickers such as AAPL or MSFT; the actor resolves them to SEC CIKs before fetching facts.
How do I keep SEC XBRL extraction costs low?
Use concept, form, fiscal-year, and max-row filters. Start with a small maxFactsPerCompany, then increase it for production exports.
Legality
This actor uses public SEC EDGAR API endpoints. You are responsible for using the data in compliance with SEC terms, fair-access policies, and applicable laws.
Related scrapers
Explore related Automation Lab actors:
- https://apify.com/automation-lab/company-website-scraper
- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/google-search-results-scraper
Changelog
0.1
- Initial version.
- Ticker/CIK input.
- Official SEC Company Facts fetch.
- XBRL fact flattening.
- Concept, taxonomy, form, unit, filed-date, and fiscal-year filters.