Point-in-time bulk file
Every US company that files XBRL with the SEC, every filed version of every value since 2009 — so a backtest only sees what was public on each date.
Free sample (Parquet)
Sample (CSV)
README
What’s in it
About 20,000 companiesEveryone in SEC’s companyfacts file, including companies that stopped filing, so a backtest is not limited to today’s survivors. Over 19,000 file under US GAAP and have rows; the rest are listed in the coverage file with the reason.
Every filed versionA value restated in a later filing is a new row; the old row stays. Each row carries the filing date, form, accession number and a link to the filing on EDGAR, plus original, latest and restated flags.
30 normalized fieldsIncome statement, balance sheet, cash flow and share data, annual and quarterly (Q1–Q4). A quarter no filing reports by itself is computed from the filed figures and marked as computed.
A reason for every gapAn empty value says why: not reported, not applicable to that kind of company, or cannot be derived.
Parquet and gzipped CSVAbout 30 million rows (around 220 MB as Parquet). Rebuilt every night from SEC’s data, with row counts and sha256 for every file.
Checked, with the misses namedHow the numbers are tested, and where they fall short: accuracy. Which XBRL tags feed each field, in order: mappings.
Try it first, free
The sample has 30 real companies — large caps plus awkward cases on purpose (a bank, an insurer, a REIT, a restatement, a company that changed its CIK) — with full history and every column, in the same format as the full file. No signup.
To get the values known on a date D: keep the rows where available_from ≤ D and valid_to is empty or later than D.
What it does not do
- Dates, not times.
filed and available_from are dates. A report accepted after the close is public that evening, so for close-of-day trading use the next trading day. SEC’s exact acceptance time can be joined on accession.
- US GAAP filers only, from about 2009, when XBRL started. IFRS filers are listed in the coverage file but have no values.
- Current tickers only. SEC’s data has no ticker history; join on
cik.
- 30 fields, not every line item. If you need a line we do not carry, tell us which.
Price
Sample
$0 · no signup
30 companies, full history
Every column, annual and quarterly, in the same format as the full file. Plus the coverage list of every company.
Download the sample
Pro
$29 / month
Full bulk file + 50,000 API calls / month
Every company, every filed version, rebuilt nightly. Parquet and gzipped CSV.
Subscribe to Pro
Business
$99 / month
Full bulk file + 300,000 API calls / month
Every company, every filed version, rebuilt nightly. Parquet and gzipped CSV.
Subscribe to Business
Getting the full file
- Subscribe to Pro or Business on RapidAPI.
- Call
GET /v1/bulk with your RapidAPI key. It returns a link to each file, with its size and sha256.
- Download each file from its link. A link works for at least 5 minutes; call again for fresh links.
curl -s https://datavidence-financials-api.p.rapidapi.com/v1/bulk \
-H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: datavidence-financials-api.p.rapidapi.com"
Inside a company or a fund? Write to admin@datavidence.ai. Redistribution needs a separate agreement. All API plans: pricing.