SEC XBRL, normalized

Clean SEC financials,
as a simple API.

We normalize messy public XBRL filings into one consistent schema — so revenue means the same thing for every company, every year.

Public SEC data · normalized by us · ~2009–present

income-statement.json
GET /v1/companies/AAPL/statements/income?year=2023&period=FY
{
  "cik": 320193,
  "statement": "income",
  "fiscal_year": 2023,
  "fiscal_period": "FY",
  "period_end": "2023-09-30",
  "form": "10-K",
  "filed": "2023-11-03",
  "lines": [
    { "canonical_concept": "revenue", "value": 383285000000,
      "source_tag": "RevenueFromContractWithCustomerExcludingAssessedTax" },
    { "canonical_concept": "gross_profit", "value": 169148000000,
      "source_tag": "GrossProfit" },
    { "canonical_concept": "operating_income", "value": 114301000000,
      "source_tag": "OperatingIncomeLoss" },
    { "canonical_concept": "net_income", "value": 96995000000,
      "source_tag": "NetIncomeLoss" },
    { "canonical_concept": "eps_diluted", "value": 6.13,
      "source_tag": "EarningsPerShareDiluted" }
  ]
}

No key needed for this endpoint. interest_expense is deliberately absent above — Apple nets it into other income/expense rather than tagging it discretely, and we surface that as a documented limitation instead of guessing a value. Every line keeps its source gaap_tag for audit — see the methodology page.

Sourced directly from SEC EDGAR
10-K10-QForm 413FXBRL
01 / The problem

SEC data is free. Using it isn't.

The raw filings are public, but every company tags the same concept differently — and often changes those tags year to year, or invents their own. Getting a clean time series means writing and maintaining a mountain of mapping logic.

We do that mapping work once, for everyone, so you don't have to.

Raw XBRL tags
us-gaap:Revenues
RevenueFromContract…
SalesRevenueNet
us-gaap:Revenue
acme:TotalTopLine
Profin schema
"revenue":
383285000000
// one field.
// every company.
// every year.
02 / What you get

Built for developers who value their time.

Clean normalization

Inconsistent tags mapped to one schema. A field means the same thing across every company and every year — no reconciliation on your end.

{ }

Readable & organized

Structured to avoid information overload. You get the numbers you asked for — not the filing noise around them.

?

Queryable

Filter by company, period, and metric through a plain REST API. Predictable URLs in, clean JSON out.

$

Genuinely affordable

A low subscription price that undercuts the enterprise data vendors — because the data is public and the value is the cleanup.

03 / Coverage

The core fundamentals, end to end.

Every U.S. company that files XBRL with the SEC, from roughly 2009 to the present.

endpoint
Income statement
Revenue through diluted EPS.
endpoint
Balance sheet
Assets, liabilities, equity.
endpoint
Cash flow
Operating, investing, financing.
endpoint
Insider trades
Form 4 buys and sells.
endpoint
Institutional
13F ownership positions.
04 / Pricing

Priced like a dev tool, not a data vendor.

Incumbent fundamentals feeds run into the thousands per year. We charge a flat, low subscription — the data is public, so the price reflects the cleanup and access, nothing more. Everything is free during the beta; the planned prices below are what billing will be when it goes live, and the free tier stays free.

  • Free: 5 req/s · 1,000 req/day — free forever, a standing promise
  • Basic: 20 req/s · 25,000 req/day — planned $19/mo
  • Pro: 100 req/s · 250,000 req/day — planned $79/mo
  • Flat monthly, no per-call metering surprises
Free during beta
$0 / month

One curl gets you a key — no credit card, no waitlist. Planned: $19/mo basic · $79/mo pro.

Get an API key Read the docs first

Beta keys keep working when billing starts — paid tiers get explicit notice and a migration window before any charge, and prices never change silently. See the terms.