Skip to main content

The official Python library for the axiora API

Project description

Axiora — Python SDK

PyPI

Provable financial intelligence for Japanese equities.

The Axiora SDK gives Python access to ~4,000 listed Japanese companies and ~9,000 unlisted EDINET filers — financials, ownership networks, audit-stamped per-row classifications, subsidiary cross-validation, and live activist signals. Every figure traces to its source filing.

pip install axiora

Get an API key

Request access at axiora.dev. Set it as an environment variable:

export AXIORA_API_KEY="ax_live_..."

Quickstart

from axiora import Axiora

client = Axiora()  # picks up AXIORA_API_KEY from env

# Who holds Toyota — with the audit bundle institutional users actually need.
rows = client.companies.list_shareholdings("7203", limit=10).data

for r in rows:
    print(
        f"{r.holder_name:<40} {r.holding_ratio_pct:>6.2f}%  "
        f"{r.holding_purpose_category:<22} "
        f"conf={r.purpose_confidence:.2f}  validated={r.purpose_validated}  "
        f"retro={r.purpose_retrospective_label}"
    )

Every row carries:

  • purpose_confidence — calibrated probability of the at-filing classification
  • purpose_validated — passed cross-checks against the filer's history
  • purpose_retrospective_label — what later filings revealed (drift detection)
  • purpose_classifier_version — opaque hash, lets you replay analysis if the model is retrained

What you can do

# Multi-year financials with derived ratios (ROA/ROE/margins computed in-band)
client.companies.retrieve_financials("7203", years=5)

# Growth — YoY rates per metric + 3y / 5y CAGR
client.companies.retrieve_growth("7203")

# Discovery: rank, screen, sector aggregates
client.rankings.retrieve("net_income", limit=20)
client.screen.retrieve(min_roe=15, min_revenue=100_000_000_000)
client.sectors.list()

# Earnings: actuals + management forecasts + market-wide surprise signals
client.companies.earnings.list("5423")
client.companies.get_forecasts("5423")
client.earnings.list_signals(limit=20)

# Governance: board composition + AGM voting outcomes
client.companies.get_board_composition("7203")
client.companies.list_voting_results("7036")

# Ownership intelligence
client.ownership.list_movers(days=90, limit=20)
client.ownership.list_activist_campaigns(limit=20)
client.companies.relationships.retrieve("7203")  # holders + holdings + interlocks + cross-holds
client.companies.subsidiaries.retrieve("7203")   # parent–subsidiary cross-validation

# Per-row provenance for any shareholding
client.shareholdings.audit("312750")

Full method index: api.md. REST docs: axiora.dev/docs.

Async

import asyncio
from axiora import AsyncAxiora

async def main():
    async with AsyncAxiora() as client:
        rows = (await client.companies.list_shareholdings("7203", limit=5)).data
        for r in rows:
            print(r.holder_name, r.holding_ratio_pct)

asyncio.run(main())

Functionality is identical to the sync client.

Translation note

English filer / company / sector / business-description fields are populated by best-effort translation today. We don't yet guarantee them — treat the Japanese fields (name_jp, sector, address_jp, business_description_jp) as the contract and use the English variants as hints. A fine-tuned frontier-model translation pipeline ships in May 2026; after rollout, English fields will carry per-field source / model version / confidence stamps.

Error handling

from axiora import Axiora, APIStatusError, RateLimitError

client = Axiora()
try:
    client.companies.retrieve("7203")
except RateLimitError:
    ...   # 429 — back off
except APIStatusError as e:
    print(e.status_code, e.response)
Status Error
400 BadRequestError
401 AuthenticationError
403 PermissionDeniedError
404 NotFoundError
422 UnprocessableEntityError
429 RateLimitError
5xx InternalServerError
APIConnectionError

Configuration

max_retries (default 2), timeout (default 60s), and base_url are configurable per-client and per-request:

client = Axiora(max_retries=5, timeout=20.0)
client.with_options(timeout=5.0).companies.retrieve("7203")

For raw responses (headers etc.), prefix with_raw_response. For streaming, with_streaming_response. See the Stainless conventions for the full surface — every method supports both.

Requirements

Python 3.9+. The async client uses httpx by default; pip install axiora[aiohttp] to switch backends.

Versioning

SemVer. Breaking changes get noted in the CHANGELOG. Minor 0.x bumps may include backwards-incompatible static-type adjustments — if you pin runtime behaviour, pin the patch version.

import axiora
print(axiora.__version__)

Contributing

See CONTRIBUTING.md. The SDK is generated by Stainless from our OpenAPI spec — substantive changes ship via spec updates, not direct edits to generated files.

License

Apache 2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

axiora-0.11.0.tar.gz (308.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

axiora-0.11.0-py3-none-any.whl (248.3 kB view details)

Uploaded Python 3

File details

Details for the file axiora-0.11.0.tar.gz.

File metadata

  • Download URL: axiora-0.11.0.tar.gz
  • Upload date:
  • Size: 308.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for axiora-0.11.0.tar.gz
Algorithm Hash digest
SHA256 add4ea7a12ef83722b2886f17a153f4d9cdaebd256c869d5479cb5188c506feb
MD5 09de9351a503c614c1dcc000ac38ebf7
BLAKE2b-256 dc6ba23633035243890eb7a4b2b61e0b494200925ebf4973adb5da9d65cc91a0

See more details on using hashes here.

File details

Details for the file axiora-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: axiora-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 248.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for axiora-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9fc55636f031ee2617cf4ec4b1b6ac610d9ce244142c820dae7580c07156261
MD5 2e95e550324af5dbd8b9fdf4d433c3ea
BLAKE2b-256 7518fc64516c87a977541a006b143cf1210e0ace7e5088d50ed16f197b193949

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page