Japan has 3,700+ listed companies filing structured financials to EDINET every year. Revenue, net income, balance sheets, risk factors, MD&A — all in XBRL. Programmatic access to this data costs about 200 lines of Python and 2 weeks of your time before you see a single clean number.
We built Axiora so that takes 4 lines instead.
What you're up against
EDINET publishes financial disclosures as ZIP archives containing XBRL-tagged XML. To get Toyota's revenue (7203), you need to:
- Poll the EDINET API for new filings (paginated, rate-limited)
- Download the ZIP, extract the XBRL instance document
- Parse ~131 taxonomy elements and map them to the 25 fields you actually care about
- Handle three different accounting standards (J-GAAP, IFRS, US-GAAP) with different element names for the same concept
- Normalize consolidated vs. non-consolidated, fiscal year boundaries, and amendment filings that supersede originals
We know because we did all of this. The parser is ~3,000 lines of Python and lxml. It handles edge cases like companies that file non-standard XBRL (yes, some do). We run it daily against every new filing.
4 lines to Toyota's financials
import httpx
resp = httpx.get(
"https://api.axiora.dev/v1/companies/7203/financials",
headers={"Authorization": "Bearer ax_live_YOUR_KEY"},
)
data = resp.json()
for year in data["data"]:
print(f"{year['fiscal_year']}: ¥{year['revenue']:,}")2025: ¥18,277,671,000,000
2024: ¥29,929,992,000,000
2023: ¥30,225,681,000,000Real numbers, real company, runs on the free tier.
Screen 3,700 companies in one call
Want Japanese companies with ROE > 15% and revenue > ¥1T?
resp = httpx.get(
"https://api.axiora.dev/v1/screen",
params={"min_roe": 15, "min_revenue": 1_000_000_000_000},
headers={"Authorization": "Bearer ax_live_YOUR_KEY"},
)
for co in resp.json()["data"]:
print(f"{co['securities_code']} {co['name_en']:40s} ROE {co['roe']:.1f}%")8766 Tokio Marine Holdings ROE 20.7%
8725 MS&AD Insurance Group Holdings ROE 17.1%
7751 Canon ROE 27.3%
6098 Recruit Holdings ROE 25.1%
9983 Fast Retailing ROE 18.6%No scraping. No XBRL. No weekend lost to taxonomy mapping.
What we cover today
564,000+ financial data points across 3,700 listed companies, fiscal years 2015–2025. Revenue coverage is 99.6%. Operating income is 97.2%. We ingest new filings within hours of publication — last filing processed was February 24, 2026.
Beyond raw financials: English translations of MD&A and risk factors, health scores with published methodology (stability + profitability + cash flow), screening, ranking, peer comparison, and time series.
The full endpoint list is in the docs.
What we don't cover (yet)
Quarterly data isn't in yet — we're parsing annual and semi-annual filings only. Segment-level breakdowns are coming but not live. Real-time filing alerts ship next month as webhooks. The official Python SDK is in beta.
We also don't cover every edge case perfectly. Some companies file XBRL that deviates from the taxonomy spec in creative ways. Our parser handles the ones we've found, but there are ~11,000 filers and we've prioritized the 3,700 listed ones. Coverage gaps exist at the margins, and we document them in our data quality reports.
Try it
Get a free API key at axiora.dev. No credit card. The free tier covers 10,000 requests/day — enough to pull financials for every listed company in Japan.
If something breaks or a number looks wrong, tell us. We're at [email protected].