API Reference
the-shashi.com Public Data API
Public data for the-shashi.com is published as static JSON files that AI agents can fetch directly with GET. No authentication is required, and the API is free to call as many times as you like — it runs on infrastructure built to handle heavy load.
One page, one endpoint. Each public page of the site has exactly one API behind it: /tse/{stock_code}/decisions/ is history.json, /tse/{stock_code}/ceo/ is ceo.json, /tse/{stock_code}/financials/sales/ is financials.json, /tse/{stock_code}/shareholders/ is shareholders.json, /tse/{stock_code}/executives/ is executives.json, /tse/{stock_code}/dividend/ is dividend.json and /tse/{stock_code}/remuneration/ is remuneration.json. The results are split into one page per item (/tse/{stock_code}/financials/{sales|profit|balance-sheet|roe|cash-flow|segment|region}/), so financials.json returns a three-year summary and the way in, and the six files under /api/{stock_code}/financials/ each hold ten years of one section; each section's html_url names the page it belongs to (workforce is /tse/{stock_code}/workforce/, shares and share price is /tse/{stock_code}/per/). People are one file per person. A list holds one row per person and each row's api_url leads to that person's file: /api/{stock_code}/ceo.json lists a company's presidents and /api/{stock_code}/ceo/{slug}.json holds one of them in full; /api/ceo.json lists every president of every company; /api/directors.json lists every outside director across companies and /api/directors/{slug}.json holds one of them. Start from a list. A single management decision is not duplicated into its own endpoint: the row returns html_url, an absolute https://the-shashi.com/ URL, and you read it on the page. A section endpoint likewise returns html_url with the anchor of its section on the page it belongs to.
Every JSON response opens with the same envelope (see components/schemas/CommonEnvelope): which company and endpoint the file belongs to, the language of its content, the page a citation should point at, the licence, and — for the numeric endpoints — where the numbers came from. The envelope is there so that a response stays self-describing after it is detached from its URL. Character encoding is not declared in the body: JSON is UTF-8 by definition (RFC 8259).
Authentication
None. There is no API key, no OAuth and no MCP server to install — every endpoint is a static file served over HTTPS and answers a plain GET. CORS is open (Access-Control-Allow-Origin: *), so the API can be called from a browser as well.
Errors
The API uses HTTP status codes only; there is no error body. A file that does not exist — an unknown stock code, or an endpoint that is not populated for that company — does not return 200. Check resources.{id}.is_active in company.json before fetching.
| Status | Meaning |
|---|---|
200 | OK — the file exists. |
404 | No such company, or no data for this endpoint. |
Rate limits
None. The files sit behind a CDN built for heavy load, and you may call them as often as you like. Use chars_ja in company.json to estimate the token cost of a file before fetching it.
Versioning
The current version is 6.0, carried in spec_version of every response. Response schemas may change without notice: read the data through an LLM rather than a fixed parser, and adapt to new or missing keys.
All companies
Public entry point — company index + endpoint catalog
GET/api/companies.json
The first endpoint an LLM or external client should call. Returns the public endpoint catalog (endpoints) and a minimal index of every published company (contents: stock_code / name / industry) in a single request. Follow /api/{stock_code}/company.json for the pages and endpoints of any one company.
Returns200application/json
versionstringbasestringendpointsarray of objectsShow child attributes
idstringmethodstringpathstringlabelstringdescriptionstringformatstringscopestring
contentsarray of objectsShow child attributes
stock_codestringnamestringname_enstringindustrystringnullableindustry_detailstringnullable
Cross-company index of management decisions
GET/api/decisions.json
Every published management decision across every company, one row each. The row holds no body text and no link to another API file: read the decision itself on the page at html_url.
Returns200application/json
countintegercompany_countintegerdecisionsarray of objectsShow child attributes
stock_codestringcompany_namestringmain_titlestringShort name of the event itself — the counterparty, product, site, person, plan or incident that identifies this decision.
sub_titlestringWhat the decision meant — what was chosen and what was given up.
yearintegernullabletypestringhtml_urlstringAbsolute URL of the page to read. There is no per-decision endpoint.
Endpoint definitions
GET/api/api-manifest.json
The definition of every endpoint in this API — the same catalog that companies.json carries inline, served on its own so a client can refresh the shape of the API without pulling the company index.
Returns200application/json
versionstringbasestringendpointsarray of objectsShow child attributes
idstringmethodstringpathstringlabelstringdescriptionstringformatstringscopestring
People
Every president of every company
GET/api/ceo.json
One row per president across every published company, in stock-code order and, within a company, in order of succession. Follow api_url to the person file.
Returns200application/json
countintegercompany_countintegerceoarray of anys
Every outside director, across companies
GET/api/directors.json
One row per sitting outside director. A person who sits on several boards is one row, with every company listed under companies. Follow api_url to the person file.
Returns200application/json
countintegerdirectorsarray of objectsShow child attributes
slugstringnamestringromajistringnullablebirthstringnullablecompany_countintegercompaniesarray of objectsShow child attributes
stock_codestringcompany_namestringnullablerolestringnullableindependentbooleannullable
api_urlstring
One outside director
GET/api/directors/{slug}.json
One outside director: every board seat (role, independence, the attribute declared in the corporate governance report, and the vote results of their election), the career rows and the sources the career rows cite (refs point at sources[].id).
Path parameters
slugstringrequiredThe slug from a row of /api/directors.json.
Returns200application/json
personobjectShow child attributes
slugstringnamestringromajistringnullablebirthstringnullabledirectorshipsarray of objectsShow child attributes
stock_codestringcompany_namestringnullablerolestringnullablestart_atstringnullableend_atstringnullableindependentbooleannullableattributestringnullablevotesarray of objectsShow child attributes
monthstringrationumbernullable
company_html_urlstringnullable
careerarray of objectssourcesarray of objectsapi_urlstringlist_api_urlstring
Presidents — the list at /tse/{stock_code}/ceo/
GET/api/{stock_code}/ceo.json
Every president the company has had, in order, one row each. The row holds no body text: follow api_url to the person file for background, career and the account of the tenure.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
countintegerceoarray of CeoRows
One president — the page at /tse/{stock_code}/executives/ceo/{slug}/
GET/api/{stock_code}/ceo/{slug}.json
One president in full: where they came from, how they were chosen, what they did, the career table, and the neighbours in the line of succession. html_url is present only when the person has a page of their own; otherwise canonical_url points at the company's list of presidents.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
slugstringrequiredThe slug from a row of /api/{stock_code}/ceo.json.
Returns200application/json
personobjectShow child attributes
slugstringnamestringkanastringsurnamestringgiven_namestringterm_startstringterm_endstringnullableoriginstringHow this person reached the presidency.
origin_typestringmilestonestringhometownstringnullableeducationstringnullableprev_rolestringnullablecareerarray of objectssectionsobjecttenure_frames — origin, selection, measures and appraisal.
api_urlstringhtml_urlstringlist_api_urlstringpredecessorPersonLinksuccessorPersonLink
Per company
One company — its pages and its endpoints
GET/api/{stock_code}/company.json
The index for a single company: the profile, the public pages as absolute html_url, and which of the fourteen JSON and two CSV endpoints are populated. It carries no content of its own — read it to decide what to fetch, then fetch that.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
versionstringstock_codestringcompany_namestringprofileobjectShow child attributes
company_colorstringindustrystringindustry_detailstringnullablepublishedstring (date)updatedstring (date)foundobjectShow child attributes
yearintegerlocationstringfounderstring
listingobjectShow child attributes
listed_yearintegernullabledelisted_yearintegernullableunlistedboolean
old_namestringname_kanastringold_name_kanastring
pagesarray of objectsThe company's public pages. Cite and read these; the API mirrors them, it does not replace them.
Show child attributes
keystringtitlestringhtml_urlstring
resourcesobjectKeyed by endpoint id — history, ceo, financials, the six section ids financials-segment / financials-pl / financials-cf / financials-bs / financials-employee / financials-stock, shareholders, executives, dividend, remuneration, and financials-csv, financials-history-csv. An entry with is_active false means this company has nothing for that endpoint.
Show child attributes
{key}objectShow child attributes
is_activebooleanurlstringapi_urlstringThe same path as an absolute URL.
html_urlstringThe page this endpoint stands behind. A section endpoint carries the anchor of its section.
formatstringdescriptionstringchars_jaintegerCharacter count of the underlying Japanese text, so the token cost can be estimated before fetching.
History — the page at /tse/{stock_code}/decisions/
GET/api/{stock_code}/history.json
The corporate history in chapters, the summary that opens it, the long-term results series that runs beside it, and the list of management decisions with the URL of each decision's page. The decisions carry no body text here — follow html_url.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
titlestringsummaryobjectPresent only when the company has a description.
Show child attributes
descriptionstring
chaptersarray of objectsThe whole history, oldest chapter first. Chapters are not served as separate files.
Show child attributes
start_yearintegerend_yearintegermain_titlestringsubsectionsarray of objects
long_termarray of objectsSales, profit and headcount from as close to the founding as the record allows, one row per fiscal year.
Show child attributes
yearintegermonthintegernullablecompany_namestringThe company's name in that year.
salesnumbernullableoperating_profitnumbernullableordinary_profitnumbernullablenet_profitnumbernullableemployeesintegernullableunitstringconsolidationstringaccounting_standardstringreferencestringThat row's own source.
decisionsarray of objectsThis company's management decisions, oldest first. Headings (split into main_title / sub_title) and URLs only.
Show child attributes
main_titlestringShort name of the event itself.
sub_titlestringWhat the decision meant.
yearintegernullabletypestringhtml_urlstring
Results — the page at /tse/{stock_code}/financials/sales/
GET/api/{stock_code}/financials.json
The summary behind /tse/{stock_code}/financials/sales/: the headline items of profit and loss, balance sheet and cash flow for the three most recent fiscal years, and the way in to the six section endpoints that hold ten years of detail apiece. Fetch this first; fetch a section when you need the series. Every row states its own unit, accounting standard and consolidation scope, because all three change across a long series.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
financialsarray of objectsP&L, three most recent years: sales, operating_profit, ordinary_profit, net_profit and the other headline items. Ten years, with the detailed items, are in financials/pl.json.
bsarray of objectsBalance sheet, three most recent years: total_assets, equity, interest_debt. Ten years are in financials/bs.json.
cfarray of objectsCash flow, three most recent years: operating_cf, investing_cf, financing_cf, cash_equivalents. Ten years are in financials/cf.json.
sectionsarray of objectsThe six sections of the page, each with the endpoint that carries it and the anchor to read it at. This is the one place the API names another API file: the sections of the same page.
Show child attributes
keystringOne of segment, pl, cf, bs, employee, stock.
titlestringapi_urlstringhtml_urlstring
Board of directors — /tse/{stock_code}/executives/
GET/api/{stock_code}/executives.json
The current board, worked out the same way as the page: the board in the latest annual report, updated with the elections and retirements at the shareholders' meetings since (from the extraordinary reports on the vote results). Past presidents are in ceo.json.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
boardarray of objectsname, role, as_of, romaji, role_board / role_exec, role_rep / role_outside / role_audit (1 when true), first_career, specialty, shares_held.
votingarray of objectsDirector-election votes: meeting_date, proposal_title, name, office (director / audit_director / auditor), for_ratio (%), result.
Dividends — /tse/{stock_code}/dividend/
GET/api/{stock_code}/dividend.json
Dividend per share and payout ratio for every fiscal year on file.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
dividendarray of objectsdividend_per_share and interim_dividend_per_share as disclosed (yen, on the share count of that year), dividend_per_share_adjusted (restated for later splits — use this to compare across years), split_factor, payout_ratio_nonconsolidated (%), and note on how a figure was restated.
Executive remuneration — /tse/{stock_code}/remuneration/
GET/api/{stock_code}/remuneration.json
Ten years of officer pay by category, individually disclosed pay, and audit fees. Amounts are in millions of yen.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
remunerationarray of objectsBy category (directors, auditors, outside officers and so on): officers (headcount), total, fixed, bonus, share_awards, retirement, other.
individualarray of objectsOfficers whose pay was ¥100m or more: name, title, company, and the same breakdown.
audit_feearray of objectsaudit_fee and non_audit_fee, for the reporting company and for its consolidated subsidiaries (scope).
Section
Sales breakdown — /tse/{stock_code}/financials/segment/
GET/api/{stock_code}/financials/segment.json
Ten years of the sales breakdown on three axes: by reporting segment, by geographic region, and as the mix of the whole. canonical_url carries the anchor of the section on the page.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
segmentarray of objectsSales, profit and assets by reporting segment. Segment names are the company's own, in Japanese, and are redrawn on reorganisation — a break in the names is a break in the series, not an error.
regionarray of objectsSales by geographic region, on the company's own grouping.
revenue_mixarray of objectsThe share each segment takes of total sales, year by year.
Profit and loss — /tse/{stock_code}/financials/profit/
GET/api/{stock_code}/financials/pl.json
Ten years of the profit and loss account, headline items and the detailed breakdown beneath them.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
plarray of objectssales, cost_of_sales, sga, cost_others, gross_profit, operating_profit, ordinary_profit, extraordinary_income, extraordinary_loss, net_profit and the margins they leave.
Cash flow — /tse/{stock_code}/financials/cash-flow/
GET/api/{stock_code}/financials/cf.json
Ten years of the cash flow statement.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
cfarray of objectsoperating_cf, investing_cf, financing_cf, cash_equivalents.
Balance sheet — /tse/{stock_code}/financials/balance-sheet/
GET/api/{stock_code}/financials/bs.json
Ten years of the balance sheet, headline items and the detailed breakdown beneath them.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
bsarray of objectstotal_assets, equity, interest_debt, securities, goodwill, intangible_assets, short_debt, long_debt, bond.
Workforce — /tse/{stock_code}/workforce/
GET/api/{stock_code}/financials/employee.json
Ten years of headcount, pay and what each employee accounts for.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
employeearray of objectsconsolidated_employees, non_consolidated_employees, avg_salary (thousands of yen — 10060 means ¥10.06m), avg_age, and sales and profit per employee.
Shares and share price — /tse/{stock_code}/per/
GET/api/{stock_code}/financials/stock.json
Ten years of shares outstanding, share price, market capitalisation and the valuation multiples they give. Who the holders are is a different page — /tse/{stock_code}/shareholders/ — served by shareholders.json.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200application/json
stockarray of objectsshares_outstanding, share price, market_cap and the multiples — PER, PBR and the like.
CSV
Results CSV
GET/api/{stock_code}/financials.csv
The annual figures behind /tse/{stock_code}/financials/sales/ — the same rows the financials endpoints serve as JSON — flattened for a spreadsheet or a data frame.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200text/csv
A CSV file with a header row. UTF-8.
Long-term results CSV
GET/api/{stock_code}/financials_history.csv
The long-term series carried in history.json (long_term), flattened for a spreadsheet or a data frame.
Path parameters
stock_codestringrequiredThe four-character securities code on the Tokyo Stock Exchange.
Returns200text/csv
A CSV file with a header row. UTF-8.
Schemas
CommonEnvelope
The leading keys of every JSON response. They come first so that a response truncated or detached from its URL still says what it is. Deliberately absent: charset — JSON is UTF-8 by definition (RFC 8259) and application/json defines no charset parameter.
Attributes
spec_versionstringEnvelope/API generation.
endpointstringWhich endpoint this file is an instance of.
stock_codestringCompany identifier. Absent on the three global endpoints.
company_namestringcontent_langstringBCP 47. Language of the content itself (title / event / text).
meta_langstringBCP 47. Language of the descriptive metadata (description / label). The two differ by design.
canonical_urlstringThe human-readable page this data belongs to. Cite this URL.
api_urlstringThis file's own path.
updatedstring (date)The date this file's content last changed — not the date it was regenerated.
licensestringattributionstringSuggested citation line. If you surface this data to a reader
sourceSourceDecl
CeoRow
One president in a list. The same shape in /api/{stock_code}/ceo.json and /api/ceo.json.
Attributes
slugstringnamestringkanastringterm_startstringnullableterm_endstringnullableorigin_typestringnullablemilestonestringnullableprev_rolestringnullableapi_urlstringhtml_urlstringPresent only when the person has a page of their own.
PersonLink
The neighbour in the line of succession; null at either end.
Attributes
slugstringnamestringapi_urlstring
SourceDecl
Provenance of the numbers. Present on financials.json and each financials/*.json, on shareholders / executives / dividend / remuneration, and on the long-term series in history.json; absent on the narrative endpoints, which carry their citations inline under references.
Attributes
primaryarray of stringsThe primary sources behind this file. Where rows carry their own source column (see row_field), this list is computed from the actual rows rather than declared, so it names the specific yearbooks and filings used — not a generic claim.
extractionstringHow the source became data.
row_fieldstringName of the per-row field holding that row's own source. Prefer it over primary when attributing a single figure.
caveatstringWhat to watch for when reading these numbers (changing units, disclosure-segment breaks, consolidation scope, and so on).