SEC Company Facts API Scraper avatar

SEC Company Facts API Scraper

Pricing

Pay per event

Go to Apify Store
SEC Company Facts API Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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.json
  • https://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

FieldDescription
inputIdentifierTicker or CIK supplied in input
cik10-digit SEC CIK
tickerResolved ticker when available
entityNameCompany name from SEC
taxonomyXBRL taxonomy, e.g. us-gaap
conceptXBRL concept name
labelHuman-readable SEC label
descriptionConcept description
unitMeasurement unit, e.g. USD or shares
valueReported fact value
fiscalYearFiscal year
fiscalPeriodFiscal period such as FY, Q1, Q2, Q3
formSEC form such as 10-K or 10-Q
filedFiling date
frameSEC frame identifier when provided
accessionNumberSEC accession number
startDateReporting period start
endDateReporting period end
sourceUrlSEC Company Facts API URL
scrapedAtExtraction 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

  1. Open the actor on Apify.
  2. Enter ticker symbols or CIKs in identifiers.
  3. Optionally set concepts, forms, and fiscalYearFrom.
  4. Keep maxFactsPerCompany reasonable for the first run.
  5. Run the actor.
  6. 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 fiscalYearFrom to 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 concepts empty 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 NetIncomeLoss across 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 ApifyClient
client = 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().items
print(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.

Explore related Automation Lab actors:

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.