SEC EDGAR data to Excel: pull filing tables into a spreadsheet

In short: SEC EDGAR data to Excel is simplest with the Financial_Report.xlsx workbook that EDGAR builds for filings with XBRL data. Copy single tables from the statement pages, and use the data.sec.gov API or bulk files for many companies. Scripts should declare a user agent and stay at or below 10 requests per second.
SEC EDGAR holds the annual and quarterly reports of US public companies, and every number in them is free to download. Getting those numbers into a spreadsheet is easier than most people expect, because EDGAR already builds an Excel file for most financial reports. This guide shows that route first, then how to copy a single statement table, when to use EDGAR's bulk downloads, and the fair-access rules SEC sets for anyone who automates requests.
Step 1: Find the filing and the company's CIK
Every company on EDGAR has a Central Index Key (CIK), a number that identifies it in URLs and in the data files.
- Go to sec.gov and use the EDGAR company search. Type the company name or ticker.
- On the company page, note the CIK and filter the list by form type:
10-Kfor annual reports,10-Qfor quarterly reports. - Open the filing you want. Its index page lists every document in the filing, and filings with XBRL data show an Interactive Data button that opens the financial statements in a viewer.
- Note the accession number of the filing, for example
0000320193-24-000123. You will need it in the next step.
Step 2: Download the Excel file EDGAR already builds
For filings with XBRL financial data, EDGAR publishes a rendered workbook named Financial_Report.xlsx in the filing's folder. It holds the cover page, the statements, and the notes as separate sheets. For a full set of statements, this is the cleanest option, and it needs no extra tools.
- Build the folder address:
https://www.sec.gov/Archives/edgar/data/CIK/ACCESSION/. Use the CIK without leading zeros and the accession number without dashes, for example.../data/320193/000032019324000123/. - Open that address in your browser. You will see the filing's file list.
- Click
Financial_Report.xlsxto download it, and open it in Excel. - Check each sheet's header for the unit. Statements are often shown in millions, while per-share figures are not.
- Add your own calculations. For year-over-year growth, with the current year in column B and the prior year in column C, use
=IFERROR((B5-C5)/ABS(C5),"")and format the cell as a percentage.
If a filing has no workbook, it probably has no XBRL data, which is common for older filings and some form types. Such filings have no R pages or Interactive Data viewer either, so copy the table straight from the filing's main document, as shown in Step 3.

Step 3: Copy a single statement table
Sometimes you only need one table, such as the balance sheet. The same folder holds each statement as a small HTML page named R2.htm, R4.htm, and so on, and the Interactive Data viewer shows the same tables with readable titles.
- Open the statement in the viewer or its R page in its own tab. For a filing without XBRL data, open the filing's main document instead.
- Select the table from the header row to the last row and copy it.
- In Excel, use Paste Special > Text so links and styles stay behind.
- Check that negative numbers in parentheses, such as
(1,234), arrived as numbers. If they did not, see our guide to scraping a website to Excel for cleanup tips.
One caution: Google Sheets' IMPORTHTML formula fetches pages from Google's servers, not from your browser. It does not send the declared user agent that SEC asks automated tools to include, so it is a poor fit for sec.gov.
How to do it with ScrapeSheet
For a single filing, the free Excel workbook from Step 2 is usually all you need. A browser extension helps when you want the same routine for EDGAR tables and tables on other sites. The general walkthrough is on our page about web scraper to Excel.
- Install ScrapeSheet from the Chrome Web Store and pin it.
- Open the statement's R page or the filing document you are reading.
- Click the ScrapeSheet icon to open the panel, then click Extract. It detects the tables and lists on the page on its own.
- Pick the table and export it as an Excel
.xlsxfile, as a CSV file, or to the clipboard.
Know the limits. The free plan exports up to 20 rows per export and one page per run, and many balance sheets are longer than that. ScrapeSheet Pro (€12.99 per month) removes the row limit. Either way, the extension works on the page you have open; it is not a tool for crawling thousands of filings. For that, use the official downloads below.
When should you use EDGAR's own downloads instead?
As soon as you need many companies, many years, or regular updates, skip page-by-page copying. SEC publishes structured data for exactly this purpose:
| You need | Best source | Format |
|---|---|---|
| One filing's statements | Financial_Report.xlsx | Excel |
| One metric over time | data.sec.gov API | JSON |
| All XBRL facts, all filers | companyfacts.zip | ZIP of JSON |
| Many companies, one quarter | Financial Statement Data Sets | ZIP per quarter |
The data.sec.gov APIs
According to SEC's page on EDGAR application programming interfaces, the APIs return JSON, are updated in real time as filings are disseminated, and do not require authentication or API keys. The companyconcept endpoint returns one XBRL concept for one company, such as AccountsPayableCurrent, and uses the CIK padded to 10 digits, for example CIK0000320193. Save the JSON file, then in Excel use Data > Get Data > From File > From JSON to turn it into a table with Power Query.
The bulk files
The same page lists companyfacts.zip and submissions.zip, which SEC republishes nightly. The Financial Statement Data Sets are updated quarterly and cover the primary financial statements of XBRL filings since 2009. One download replaces thousands of page requests.
What are SEC's fair-access rules for scripts?
SEC's page on accessing EDGAR data asks anyone who scripts requests to follow its fair-access rules, and it states that it does not allow botnets or automated tools to crawl the site:
- Rate: the current maximum is 10 requests per second, and SEC "reserves the right to limit request rates to preserve fair access for all users."
- User agent: SEC asks scripts to declare who they are in the request headers, in the format
Sample Company Name AdminContact@<sample company domain>.com. - Volume: download only what you need and moderate your requests to minimize server load. Requests identified as part of a botnet or an automated tool outside SEC's acceptable policy "will be managed to ensure fair access for all users."
In practice, use the API or the bulk files for anything repeated, add a pause between requests, and cache what you have already downloaded. For the wider rules on terms of use and copyright, read our guide on whether web scraping is legal.
Not legal advice. This is general information as of October 2026, based on SEC's published guidance. Never try to get around a rate limit or an access block. This guide covers company financial tables; some filings, such as insider ownership forms, name individuals, and that personal data needs its own privacy review.
More step-by-step guides are on the ScrapeSheet blog.
FAQ
How do I download SEC EDGAR financial statements to Excel?
Open the filing's folder on sec.gov and download Financial_Report.xlsx, which EDGAR builds for filings with XBRL data. It holds the statements and notes as separate sheets. Older filings without XBRL data do not have it.
Does the SEC EDGAR API need an API key?
No. SEC states that the data.sec.gov APIs do not require authentication or API keys. Automated requests should still declare a user agent and respect the fair-access rate.
What is the SEC EDGAR rate limit?
SEC's current maximum access rate is 10 requests per second, and it reserves the right to limit request rates to preserve fair access. Declare a user agent with your company name and contact email, and download only what you need.
Can I use Google Sheets IMPORTHTML on sec.gov?
It is a poor fit. IMPORTHTML fetches pages from Google's servers without the declared user agent SEC asks automated tools to send. Download the Excel workbook or use the official API instead.
Sources
- Accessing EDGAR Data (U.S. Securities and Exchange Commission)
- EDGAR Application Programming Interfaces (U.S. Securities and Exchange Commission)
General information, not legal advice. Always check the website's terms and the data-protection rules that apply to you.
Web Scraper is a trademark of its owner; ScrapeSheet is not affiliated with it. Comparisons are based on publicly documented features as of October 2026 and may change.