F Finsider
SEC Form 10-K API

Form 10-K API

Pull annual reports the moment they hit EDGAR. The Form 10-K API turns audited financial statements, risk factors, and MD&A into clean JSON you can query by company, ticker, or date.

JSON responsesOpenAPI documentedcURL / Python / JS / GoFree tier available

What is Form 10-K?

Form 10-K is the comprehensive annual report U.S. public companies file with the SEC. It contains audited financial statements, a description of the business, risk factors, and management’s discussion and analysis (MD&A) of results.

It is the single most important disclosure for fundamental analysis: revenue, net income, the balance sheet, cash flows, segment detail, and forward-looking risk language all live here, tagged in XBRL.

With the Finsider Form 10-K API you skip EDGAR scraping and XBRL parsing entirely — request a company’s 10-K and get structured, standardized financials back in milliseconds.

Fetch Form 10-K filings

List recent Form 10-K filings, filterable by company, ticker, and date.

curl -s "https://api.secapi.dev/v1/filings?formTypes=10-K&limit=20" \
  -H "x-api-key: $SECAPI_KEY"
import requests

resp = requests.get(
    "https://api.secapi.dev/v1/filings?formTypes=10-K&limit=20",
    headers={"x-api-key": "YOUR_API_KEY"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()
print(data)
const res = await fetch("https://api.secapi.dev/v1/filings?formTypes=10-K&limit=20", {
  method: "GET",
  headers: { "x-api-key": process.env.SECAPI_KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"os"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.secapi.dev/v1/filings?formTypes=10-K&limit=20", nil)
	req.Header.Set("x-api-key", os.Getenv("SECAPI_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}

Pull standardized annual financials

Get revenue, net income, EPS, and margins for a company across years.

curl -s "https://api.secapi.dev/v1/financials/metrics?ticker=AAPL&limit=8" \
  -H "x-api-key: $SECAPI_KEY"
import requests

resp = requests.get(
    "https://api.secapi.dev/v1/financials/metrics?ticker=AAPL&limit=8",
    headers={"x-api-key": "YOUR_API_KEY"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()
print(data)
const res = await fetch("https://api.secapi.dev/v1/financials/metrics?ticker=AAPL&limit=8", {
  method: "GET",
  headers: { "x-api-key": process.env.SECAPI_KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"os"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.secapi.dev/v1/financials/metrics?ticker=AAPL&limit=8", nil)
	req.Header.Set("x-api-key", os.Getenv("SECAPI_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}

Who files Form 10-K?

FilerRequirement
Large accelerated filersDue within 60 days of fiscal year end
Accelerated filersDue within 75 days of fiscal year end
Non-accelerated filersDue within 90 days of fiscal year end
Foreign private issuersFile Form 20-F instead (see the 20-F API)

Deadlines & coverage

AspectDetail
AnnualOnce per fiscal year
CoverageModern XBRL-tagged filings from ~2009 onward
AmendmentsForm 10-K/A supersedes the original — prefer the latest
AvailabilityIndexed within minutes of SEC acceptance

Key data fields

A sample of the structured fields returned for Form 10-K data.

FieldDescription
accessionNumberUnique SEC identifier for the filing
cik / tickerCompany identifiers
fiscalYearFiscal year the report covers
revenue / netIncomeHeadline income statement figures
totalAssets / totalLiabilitiesBalance sheet totals
riskFactorsItemized Item 1A risk disclosures

Frequently asked questions

What is the Form 10-K API?
A REST endpoint that returns SEC Form 10-K annual reports — audited financials, risk factors, and MD&A — as structured JSON, filterable by company, ticker, and date.
How do I get a company’s latest 10-K?
Call /v1/filings?formTypes=10-K&ticker=AAPL&limit=1, or use the financials endpoints to fetch standardized statements directly from the most recent annual filing.
Does the API parse XBRL for me?
Yes. Financial statements are extracted and standardized from each filing’s XBRL, so you do not have to download or parse raw XBRL yourself.
How far back does 10-K coverage go?
Structured, XBRL-tagged 10-K data is available from roughly 2009 onward, when the SEC mandated XBRL for large filers.
Is there a free tier?
Yes — you can start on the free tier and upgrade for higher rate limits. Grab an API key to try the endpoints live.

Build with the Form 10-K API

Create a free account, grab an API key, and make your first request in under a minute.