DatavidenceFinancials

← Bulk file · Plain Markdown

Datavidence Financials: point-in-time bulk file

Built 2026-10-24T11:52:14Z from SEC's companyfacts.zip (zip dated Fri, 23 Oct 2026 23:48:08 GMT). Rows are produced by the same code as the Datavidence Financials API.

Files

File Rows What it is
datavidence-financials-full.parquet, datavidence-financials-full.csv.gz 30,177,685 Every company. Pro and Business plans.
datavidence-financials-sample.parquet, datavidence-financials-sample.csv.gz 173,783 30 companies, full history, every column. Public.
datavidence-financials-coverage.csv 20,501 Every company in SEC's file and the years it covers. No values. Public.

The Parquet and CSV files hold the same rows. The sample is cut from the same build as the full file and is not edited.

One row = one filed version of one value

A row is one company, one field, one fiscal period, as read from one filing. When a later filing becomes the source for the same period, that is a new row and the old row stays. restated says whether the figure differs from the first one filed. So the file answers "what was the number as known on a given date", which is what a backtest needs to avoid look-ahead bias.

filed and available_from are dates, not times. A filing accepted after the market closes becomes public that evening, so a strategy that trades at the close of available_from would use it a few hours early: for close-of-day trading, treat a version as usable from the next trading day. SEC's exact acceptance time is in its filing index for each accession (acceptanceDateTime in https://data.sec.gov/submissions/CIK##########.json).

To get the values known on date D, keep the rows where available_from <= D and (valid_to is empty or valid_to > D). To get today's values, keep is_latest = true.

Example from this build: Pfizer, fiscal 2019, total_revenue

value unit form accession filed available_from valid_to is_original is_latest restated
51750000000 USD 10-K 0000078003-20-000014 2020-02-27 2020-02-27 2021-02-25 true false false
41172000000 USD 10-K 0000078003-21-000038 2021-02-25 2021-02-25 2022-02-24 false false true
40905000000 USD 10-K 0000078003-22-000027 2022-02-24 2022-02-24 false true true

Columns

Column Meaning
cik SEC's company number (integer, no leading zeros).
ticker The company's CURRENT ticker in SEC's list; empty when SEC lists none. Historical tickers are not included. After a reorganisation SEC lists the ticker under the new registrant and the earlier history stays under the old CIK with no ticker (Exxon Mobil: CIK 34088; Disney before 2019: CIK 1001039). Join on cik.
name Company name in SEC's file.
fiscal_year The fiscal year the period belongs to.
period FY, or Q1 to Q4.
period_start, period_end The period's dates. Figures at a date (the balance sheet, shares outstanding) and empty values have only period_end.
statement income_statement, balance_sheet, cash_flow_statement, share_data.
field The normalized line item, as in the API (list below).
value The figure; empty when there is none (see empty_reason).
unit The company's reporting currency (USD for most), shares, or currency per share (USD/shares).
empty_reason Why value is empty: not_reported, not_applicable (the line does not exist for this kind of company, by SEC industry code) or cannot_derive.
taxonomy, tag The XBRL element the figure was read from. Empty for computed and empty values.
derived, derivation true when the figure is computed from other filed figures, and the figures it was computed from.
note A remark on how the figure was chosen, when there is one.
form, accession, filed The filing the figure comes from, and its filing date.
available_from The date this version became the current answer.
valid_to The date the next version replaced it; empty for the current version.
is_original true for the first version filed for that period.
is_latest true for the current version.
restated true when this version's figure differs from the first one filed for that period.
filing_url The filing's index page on EDGAR.

Fields

Wide table in pandas

import pandas as pd

df = pd.read_parquet("datavidence-financials-sample.parquet")
latest = df[df.is_latest & (df.period == "FY")]
wide = latest.pivot_table(index=["cik", "ticker", "fiscal_year"],
                          columns="field", values="value", aggfunc="first")

Ratios are not in the file: compute them from the rows you select, so the inputs are always taken as of the same date.

What is and is not covered

Sample companies

Source data: U.S. Securities and Exchange Commission, EDGAR. This file is not investment advice. Terms: https://financials.datavidence.ai/terms