SEC Filings Scraper avatar

SEC Filings Scraper

Pricing

from $1.02 / 1,000 company records

Go to Apify Store
SEC Filings Scraper

SEC Filings Scraper

Build a structured dataset of SEC EDGAR filings, company profiles, and XBRL financial facts from sec.gov. Query by ticker, CIK, or company name and receive normalized records with document links, optional filing text, and monitoring alerts via the Apify Dataset API or JSON, CSV, and Excel export.

Pricing

from $1.02 / 1,000 company records

Rating

0.0

(0)

Developer

Data Scrapers

Data Scrapers

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

SEC Filings Scraper creates a structured dataset of SEC EDGAR filing records collected from sec.gov. Each dataset item represents one filing, company profile, financial fact, or resolution error, and can include company identity (name, CIK, tickers), filing metadata (form type, dates, accession number), document-manifest links, and — when enabled — primary document text and normalized XBRL financial metrics. Query the source using tickers, CIK numbers, company names, filing URLs, or accession numbers, cap the result with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.

Dataset at a glance

PropertyValue
Sourcesec.gov (SEC EDGAR)
Record unitOne filing, company profile, financial fact, or error record
Input methodscompanies (ticker / CIK / name), filingUrls, accessionNumbers, mode
Main identifiersaccessionNumber, id, cik
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, HTML, XML
Update modelFresh records per Actor run
PricingPay-per-event: ~$1.00 / 1,000 records (FREE tier); tiered discounts

Coverage and available records

The Actor runs in one of five operating modes, selected with mode:

  • companyFilings (default) — filings for a set of tickers, CIK numbers, or company names, filtered by formTypes, startDate, endDate, and amendment rules.
  • latestFilings — the most recent market-wide filings from the EDGAR current-filings feed (optionally restricted to a single form type).
  • filingLookup — resolve specific filings from filingUrls or accessionNumbers and return their normalized metadata.
  • companyProfile — issuer metadata only (name, CIK, tickers, exchange, SIC, addresses, former names) plus filing statistics.
  • financialFacts — normalized XBRL financial metrics per company.

Conditional enrichment is controlled by input flags:

  • includeCompanyProfile (default true) attaches issuer metadata to each filing record.
  • includeDocuments (default true) retrieves the filing document manifest (primary document, exhibits, XBRL and graphic files).
  • includePrimaryDocumentText (default false) downloads and cleans the primary document into text, markdown, or rawHtml.
  • includeXbrlFacts (default false) attaches normalized and/or raw XBRL financial facts.

maxItems caps the dataset total (1–10,000, default 100); maxItemsPerCompany applies an optional per-company cap. latestOnly returns only the latest matching filing per company (or per company and form). Company resolution failures (not-found or ambiguous names) are emitted as structured error records so the remaining companies still succeed.

Data dictionary

Records vary by recordType. The schema's three views describe the principal shapes: the overview view (filing records), the documents view (document manifests), and the financialFacts view (normalized metrics). The table below lists the top-level fields of a standard filing record.

FieldTypeNullableDescriptionExample
recordTypestringNoRecord kind: filing, companyProfile, financialFact, financialFactsRaw, or error"filing"
idstringNoAccession number used as the record identifier"0001140361-26-006577"
accessionNumberstringNoDashed SEC accession number"0001140361-26-006577"
accessionNumberNormalizedstringNoAccession number without dashes (best dedup key)"000114036126006577"
companyobjectNoIssuer identity and profilesee below
filingobjectNoFiling metadatasee below
urlsobjectYesFiling document URLssee below
documentsarrayYesDocument manifest; null unless includeDocuments is onsee below
primaryDocumentobjectYesPrimary document metadata and optional textsee below
xbrlobjectYesXBRL availability and normalized metricssee below
sourceobjectNoProvider and retrieval provenancesee below
warningsarrayYesNon-fatal warnings for this record[]

company object

FieldTypeNullableDescription
namestringYesLegal company name
cikstringYesUnpadded Central Index Key
cikPaddedstringYesTen-digit zero-padded CIK
entityTypestringYesSEC entity type
sicstringYesSIC code
sicDescriptionstringYesSIC description
stateOfIncorporationstringYesTwo-letter state code
fiscalYearEndstringYesFiscal year end (MMDD)
tickersarrayYesTicker symbols
exchangesarrayYesListing exchanges
einstringYesEmployer identification number
phonestringYesBusiness phone
websitestringYesCompany website
investorWebsitestringYesInvestor-relations website
categorystringYesFiler category (e.g. Large accelerated filer)
addressesobjectYesbusiness and mailing address objects
formerNamesarrayYesFormer company names with effective dates

filing object

FieldTypeNullableDescription
formTypestringYesSEC form type (e.g. 8-K, 10-Q, 10-K)
baseFormTypestringYesForm type without the /A amendment suffix
isAmendmentbooleanYesWhether the filing is an amendment
filingDatestringYesFiling date (YYYY-MM-DD)
reportDatestringYesPeriod report date (YYYY-MM-DD)
acceptedAtstringYesSEC acceptance timestamp (ISO 8601)
actstringYesSecurities Act code
fileNumberstringYesSEC file number
filmNumberstringYesSEC film number
itemsarrayYesForm item numbers (e.g. ["5.07", "9.01"])
sizeBytesintegerYesSubmission size in bytes
isXBRLbooleanYesWhether XBRL data is attached
isInlineXBRLbooleanYesWhether inline XBRL is used
primaryDocumentstringYesPrimary document filename
primaryDocDescriptionstringYesPrimary document description

urls object

FieldTypeNullableDescription
filingIndexstringYesFiling index page URL
filingDirectorystringYesFiling directory URL
primaryDocumentstringYesPrimary document URL
completeSubmissionTextstringYesComplete submission text URL

documents array items

FieldTypeNullableDescription
sequencestringYesDocument sequence number
filenamestringNoDocument filename
documentTypestringYesDocument type (e.g. 8-K, EX-99.1, GRAPHIC)
descriptionstringYesDocument description
urlstringNoDocument archive URL
isPrimarybooleanNoWhether this is the primary document
isExhibitbooleanNoWhether this is an exhibit (EX-*)
fileExtensionstringYesFilename extension
contentTypestringYesInferred MIME type
sizeBytesintegerYesFile size in bytes

primaryDocument and xbrl objects

primaryDocument holds the primary document metadata plus optional content fields text, markdown, and rawHtml (each null unless includePrimaryDocumentText is enabled and outputMode is extended), along with filename, documentType, description, contentType, contentLength, sha256, and textStorageKey. xbrl holds available (boolean), instanceDocumentUrl, facts (raw summary, null unless xbrlOutputMode is raw/both), and normalizedMetrics (array, null unless normalized/both).

Compact mode and financial-fact fields

With outputMode: "compact", filing records are flattened into webhook-friendly fields: companyName, ticker, cik, formType, filingDate, acceptedAt, primaryDocumentUrl, and filingIndexUrl, plus recordType, id, and accessionNumber.

Financial-fact records (recordType: "financialFact") carry the metric fields shown in the schema's financialFacts view: metric (normalized name such as revenue, netIncome, assets), label (human label), value (number), unit (e.g. USD, USD/shares, shares), period (object with startDate, endDate, fiscalYear, fiscalPeriod), filing (object with formType, filedDate, accessionNumber), taxonomy (object with namespace and tag), and mappingConfidence (high, medium, or low), plus frame, restated, and source.

The best stable field for deduplication is accessionNumberNormalized; accessionNumber is an equivalent fallback.

Example dataset record

The following representative record was produced by the companyFilings mode with companies: ["AAPL"], outputMode: "standard", and includeDocuments: true (document text and XBRL disabled, so their fields are null).

{
"recordType": "filing",
"id": "0001140361-26-006577",
"accessionNumber": "0001140361-26-006577",
"accessionNumberNormalized": "000114036126006577",
"company": {
"name": "Apple Inc.",
"cik": "320193",
"cikPadded": "0000320193",
"entityType": "operating",
"sic": "3571",
"sicDescription": "Electronic Computers",
"stateOfIncorporation": "CA",
"fiscalYearEnd": "0926",
"tickers": ["AAPL"],
"exchanges": ["Nasdaq"],
"ein": "942404110",
"phone": "(408) 996-1010",
"category": "Large accelerated filer",
"addresses": {
"business": {
"street1": "ONE APPLE PARK WAY",
"city": "CUPERTINO",
"stateOrCountry": "CA",
"zipCode": "95014"
},
"mailing": {}
},
"formerNames": []
},
"filing": {
"formType": "8-K",
"baseFormType": "8-K",
"isAmendment": false,
"filingDate": "2026-02-24",
"reportDate": "2026-02-24",
"acceptedAt": "2026-02-24T21:55:58.000Z",
"items": ["5.07", "9.01"],
"sizeBytes": 415164,
"isXBRL": true,
"isInlineXBRL": null,
"primaryDocument": "ef20060722_8k.htm"
},
"urls": {
"filingIndex": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/0001140361-26-006577-index.html",
"filingDirectory": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/",
"primaryDocument": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/ef20060722_8k.htm",
"completeSubmissionText": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/000114036126006577.txt"
},
"documents": [
{
"sequence": "1",
"filename": "ef20060722_8k.htm",
"documentType": "8-K",
"isPrimary": true,
"isExhibit": false,
"fileExtension": "htm",
"contentType": "text/html",
"sizeBytes": 415164
}
],
"primaryDocument": {
"filename": "ef20060722_8k.htm",
"documentType": "8-K",
"description": null,
"contentType": null,
"text": null,
"markdown": null,
"rawHtml": null,
"textStorageKey": null,
"contentLength": null,
"sha256": null
},
"xbrl": {
"available": true,
"instanceDocumentUrl": null,
"facts": null,
"normalizedMetrics": null
},
"source": {
"provider": "U.S. Securities and Exchange Commission",
"system": "EDGAR",
"retrievedAt": "2026-07-30T10:51:05.410389Z",
"sourceEndpoint": "https://data.sec.gov/submissions/CIK0000320193.json"
},
"warnings": []
}

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
modestringNocompanyFilingscompanyFilings, latestFilings, filingLookup, companyProfile, financialFactsOperating mode.
companiesarrayNo[]ticker / CIK / company nameCompanies to resolve (exact ticker/CIK match; names are conservative).
formTypesarrayNo[]e.g. 10-K, 10-Q, 8-KForm types to include; empty or ALL = every form.
startDatestringNo—YYYY-MM-DDInclude filings on or after this filing date.
endDatestringNo—YYYY-MM-DDInclude filings on or before this filing date.
maxItemsintegerNo1001–10000Maximum dataset items to return.
maxItemsPerCompanyintegerNo—1–5000Optional per-company cap.
includeAmendmentsbooleanNotruetrue / falseWhen false, exclude /A amendments.
latestOnlybooleanNofalsetrue / falseReturn only the latest matching filing per grouping.
latestGroupingstringNocompanyAndFormcompany, companyAndFormHow latestOnly groups results.
includeCompanyProfilebooleanNotruetrue / falseAttach issuer metadata to each filing.
includeDocumentsbooleanNotruetrue / falseRetrieve the filing document manifest.
includePrimaryDocumentTextbooleanNofalsetrue / falseDownload and clean the primary document text.
documentTextFormatstringNotexttext, markdown, rawHtmlFormat for downloaded document content.
maxDocumentSizeMbintegerNo201–100Skip primary documents larger than this.
includeExhibitsbooleanNofalsetrue / falseInclude exhibit metadata in the manifest.
exhibitContentModestringNometadataOnlymetadataOnly, text, rawHtmlHow much exhibit data to return.
includeXbrlFactsbooleanNofalsetrue / falseRetrieve structured XBRL financial facts.
xbrlOutputModestringNonormalizednormalized, raw, bothWhich XBRL layer to output.
financialMetricsarrayNo[]normalized metric namesMetrics to extract; empty = default set.
includeLowConfidenceMetricsbooleanNofalsetrue / falseInclude low-confidence XBRL mappings.
filingUrlsarrayNo[]sec.gov filing URLsFiling index/directory/document URLs (filingLookup).
accessionNumbersarrayNo[]accession numbersAccessions with or without dashes (filingLookup).
outputModestringNostandardcompact, standard, extendedOutput shaping.
monitoringobjectNosee schemaenabled, monitorId, onlyNew, …Incremental runs — only new filings on repeat runs.
deliveryobjectNosee schemawebhookUrl, discordWebhookUrl, …Optional webhook/Discord/Slack notifications.
secAccessobjectYessee schemaorganizationName, contactEmail, requestsPerSecondSEC fair-access identity and rate limit.
proxyConfigurationobjectNo{"useApifyProxy": false}proxy configOptional proxy; direct access is preferred.
debugbooleanNofalsetrue / falseVerbose debug logging.

secAccess.organizationName and secAccess.contactEmail are required by SEC fair-access policy. A minimal request and an advanced request:

{
"mode": "companyFilings",
"companies": ["AAPL"],
"secAccess": { "organizationName": "Your Company", "contactEmail": "you@example.com" }
}
{
"mode": "companyFilings",
"companies": ["AAPL", "MSFT", "NVDA"],
"formTypes": ["8-K", "10-Q", "10-K"],
"startDate": "2025-01-01",
"endDate": "2026-12-31",
"maxItems": 250,
"includeDocuments": true,
"includeXbrlFacts": true,
"xbrlOutputMode": "normalized",
"financialMetrics": ["revenue", "netIncome", "assets"],
"outputMode": "standard",
"secAccess": {
"organizationName": "Your Company",
"contactEmail": "you@example.com",
"requestsPerSecond": 5
}
}

Retrieve the data through the API

  1. Start the Actor with a JSON input.
  2. Wait for the run to finish, or use the synchronous endpoint when appropriate.
  3. Read items from the run's default dataset.
  4. Paginate or export the dataset.

A Python example using the Apify client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datascrapers/sec-filings-intelligence").call(
run_input={
"mode": "companyFilings",
"companies": ["AAPL", "MSFT"],
"formTypes": ["8-K", "10-Q", "10-K"],
"maxItems": 100,
"secAccess": {"organizationName": "Your Company", "contactEmail": "you@example.com"},
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["company"]["name"], item["filing"]["formType"], item["filing"]["filingDate"])

For other languages, use the generated API tab on the Actor page. Never place a real token in a URL or example.

Data quality and record handling

  • Record types — the dataset mixes filing, companyProfile, financialFact, financialFactsRaw, and error records; each carries a recordType discriminator.
  • Conditional fields — documents is null unless includeDocuments is on; primaryDocument.text/markdown/rawHtml and xbrl.facts/normalizedMetrics are null unless the corresponding flags and outputMode request them.
  • Compact mode — with outputMode: "compact", company, filing, and urls are flattened into scalar fields (companyName, ticker, cik, formType, filingDate, acceptedAt, primaryDocumentUrl, filingIndexUrl).
  • Error handling — company-resolution and lookup failures become error records (errorType, message, input) rather than aborting the run, so other companies still succeed.
  • Deduplication — within a run, filings are deduplicated by accession number. Across runs, deduplicate on accessionNumberNormalized or accessionNumber.
  • Normalization — tickers/CIKs are normalized, accession numbers are standardized with and without dashes, and XBRL facts are mapped to common metrics with a mappingConfidence label. Source values are preserved in their original form alongside.
  • Provenance — each record includes a source object (provider, system, retrieval timestamp, source endpoint).

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API or webhook consumerFiling history and fundamental data warehouse
Google SheetsApify integrationFiling watchlists for research teams
S3 / cloud storageScheduled export or integrationDaily EDGAR archives
BI / analytics toolsScheduled run + CSV/JSON exportCompliance and disclosure monitoring

Pricing and cost examples

Billing is pay-per-event. Two events apply:

EventWhat countsRate
apify-actor-startOne-time per run$0.00005
dataset-itemEach record written to the dataset$0.001 (FREE tier)

The dataset-item event is tiered per record: Bronze $0.0009, Silver $0.00087, and Gold/Platinum/Diamond $0.00085. At the standard tier this is approximately $1.00 per 1,000 records.

RecordsEstimated base cost
1,000$1.00
10,000$10.00
100,000$100.00

Estimates assume the FREE/standard tier rate of $0.001 per record plus the one-time $0.00005 start event. Actual cost depends on the verified pay-per-event model, your Apify plan tier, and the selected enrichment options.

Limitations and responsible data use

  • The Actor collects publicly accessible SEC EDGAR data only.
  • Filing data reflects SEC records at retrieval time and can change as amendments are filed or corrections posted.
  • Some fields are conditional or empty depending on the issuer, form type, and enabled options (see Data quality).
  • No historical snapshots are guaranteed unless you store the exported datasets yourself.
  • The SEC requires a fair-access identity (organizationName and contactEmail); you are responsible for providing accurate information and for complying with applicable privacy, contractual, and legal requirements when using the data.

Dataset questions

What does one dataset item represent?

One filing, company profile, financial fact, or resolution error record, identified by the recordType field. The default companyFilings mode yields one record per filing.

Which field should I use as a unique identifier?

Use accessionNumberNormalized (accession number without dashes) or accessionNumber. Both are stable per SEC submission.

What record types can appear in the dataset?

filing (the default), companyProfile, financialFact and financialFactsRaw (when XBRL is enabled), and error (for company-not-found or ambiguous-name failures).

Are fields nullable or conditional?

Yes. documents, primaryDocument text fields, and xbrl metrics are null unless the corresponding input flags and outputMode request them; many company and filing sub-fields are null when SEC does not report them.

Can I retrieve the records as CSV or JSON?

Yes. Records are available as JSON through the Apify Dataset API and can be exported as CSV, Excel, HTML, or XML from the Console or integrations.

Does the Actor return historical data?

It returns the filings available in SEC EDGAR at run time, filtered by startDate/endDate. Older submissions are fetched when a start date or a larger maxItems requires them; no local historical cache is kept.

What counts as a billable result?

Each record written to the dataset triggers the dataset-item event. error records are written without a charge; the one-time apify-actor-start event applies per run.

  • LinkedIn Company Scraper — company profile and identity data for cross-referencing corporate research.
  • LinkedIn Job Scraper — job listings that complement issuer-level hiring and headcount analysis.
  • Glassdoor Jobs Scraper — job and employer data for labor-market context around a filer.
  • FindLaw Scraper — law firm and attorney records for legal and compliance-adjacent research.
  • Trustpilot Scraper — company reputation and review data for sentiment alongside financial disclosures.
  • Yelp Scraper — business listing data for entity-level market research.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample sec.gov URL, the required fields, the expected record volume, and your preferred delivery format.