curl --request GET \
--url https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"statusCode": 200,
"data": {
"symbol": "72030",
"code": "7203",
"market": "jp",
"name": "TOYOTA MOTOR CORPORATION",
"nameLocal": "トヨタ自動車",
"exchange": "Tokyo Stock Exchange",
"marketSegment": "Prime",
"sector": {
"code": "3700",
"name": "Transportation Equipment",
"classification": "TSE33"
},
"currency": "JPY",
"quote": {
"price": 2920,
"previousClose": 2881.5,
"change": 38.5,
"changePercent": 1.3361,
"priceType": "close",
"tradingDate": "2026-09-30",
"closeTime": "15:30",
"timezone": "Asia/Tokyo"
},
"overview": {
"tradingUnit": 100,
"sharesOutstanding": 14594987460,
"treasuryShares": 2753153800,
"sharesAsOf": "2026-06-30",
"marketCap": 42617363383200,
"marketCapAsOf": "2026-09-30"
},
"tradingActivity": {
"tradingDate": "2026-09-30",
"volume": 29166700,
"volumeChangePercent": -14.51,
"tradingValue": 84918791500,
"tradingValueChangePercent": -13.97
},
"periodChanges": {
"asOf": "2026-09-30",
"change1d": 1.3361,
"change3m": 4.12,
"change6m": -2.35,
"ytdChange": 6.8,
"change12m": 10.05,
"change3y": 21.4
},
"ratios": {
"peRatio": 8.3101,
"pbRatio": 0.9268,
"roe": 12.2259,
"eps": 351.38,
"basis": {
"type": "TTM",
"fiscalPeriod": "1Q",
"periodEnd": "2026-06-30",
"disclosedAt": "2026-08-04T05:00:00Z"
},
"notes": []
}
},
"meta": {
"source": [
"jquants:/v2/equities/bars/daily",
"jquants:/v2/fins/summary",
"jquants:/v2/equities/master"
],
"as_of": "2026-09-30",
"unit": "JPY",
"classification": "RAW+COMPUTED",
"formula_version": "price-change-v2, jp-fins-ttm-v1",
"was_restated": false,
"served_from_cache": true,
"cache_expires_at": "2026-10-01T14:00:00.000Z",
"timestamp": "2026-10-01T08:00:00.000Z"
}
}{
"success": false,
"statusCode": 400,
"error": {
"code": "MARKET_NOT_SUPPORTED",
"message": "Thị trường \"us\" chưa được hỗ trợ — hiện chỉ có jp"
},
"meta": {
"error": "Bad Request",
"statusCode": 400,
"timestamp": "2026-10-01T08:00:00.000Z"
}
}{
"success": false,
"statusCode": 401,
"error": {
"code": "API_KEY_INVALID",
"message": "Invalid API key"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.023Z"
}
}{
"success": false,
"statusCode": 403,
"error": {
"code": "FEATURE_NOT_IN_PLAN",
"message": "Your plan does not include this feature"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.100Z"
}
}{
"success": false,
"statusCode": 404,
"error": {
"code": "EQUITY_NOT_FOUND",
"message": "Không tìm thấy mã cổ phiếu 99999"
},
"meta": {
"error": "Not Found",
"statusCode": 404,
"timestamp": "2026-10-01T08:00:00.000Z"
}
}{
"success": false,
"statusCode": 429,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded"
},
"meta": {
"timestamp": "2026-06-19T08:34:09.000Z"
}
}{
"success": false,
"statusCode": 500,
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
},
"meta": {
"timestamp": "2026-06-19T08:34:10.000Z"
}
}Japan equity snapshot
End-of-day snapshot of one Tokyo Stock Exchange stock: closing quote, company overview (segment, TSE 33-sector, shares, market cap), trading volume and value, price change over 1D / 3M / 6M / YTD / 12M / 3Y (split-adjusted; YTD from the last close of the previous year) and TTM ratios (P/E, P/B, ROE, EPS).
Prices are closing prices of the latest session, not intraday quotes. All numbers are raw, in JPY / shares / %.
curl --request GET \
--url https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-v2.hayinsights.com/openapi/v1/market/{market}/equities/{code}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"statusCode": 200,
"data": {
"symbol": "72030",
"code": "7203",
"market": "jp",
"name": "TOYOTA MOTOR CORPORATION",
"nameLocal": "トヨタ自動車",
"exchange": "Tokyo Stock Exchange",
"marketSegment": "Prime",
"sector": {
"code": "3700",
"name": "Transportation Equipment",
"classification": "TSE33"
},
"currency": "JPY",
"quote": {
"price": 2920,
"previousClose": 2881.5,
"change": 38.5,
"changePercent": 1.3361,
"priceType": "close",
"tradingDate": "2026-09-30",
"closeTime": "15:30",
"timezone": "Asia/Tokyo"
},
"overview": {
"tradingUnit": 100,
"sharesOutstanding": 14594987460,
"treasuryShares": 2753153800,
"sharesAsOf": "2026-06-30",
"marketCap": 42617363383200,
"marketCapAsOf": "2026-09-30"
},
"tradingActivity": {
"tradingDate": "2026-09-30",
"volume": 29166700,
"volumeChangePercent": -14.51,
"tradingValue": 84918791500,
"tradingValueChangePercent": -13.97
},
"periodChanges": {
"asOf": "2026-09-30",
"change1d": 1.3361,
"change3m": 4.12,
"change6m": -2.35,
"ytdChange": 6.8,
"change12m": 10.05,
"change3y": 21.4
},
"ratios": {
"peRatio": 8.3101,
"pbRatio": 0.9268,
"roe": 12.2259,
"eps": 351.38,
"basis": {
"type": "TTM",
"fiscalPeriod": "1Q",
"periodEnd": "2026-06-30",
"disclosedAt": "2026-08-04T05:00:00Z"
},
"notes": []
}
},
"meta": {
"source": [
"jquants:/v2/equities/bars/daily",
"jquants:/v2/fins/summary",
"jquants:/v2/equities/master"
],
"as_of": "2026-09-30",
"unit": "JPY",
"classification": "RAW+COMPUTED",
"formula_version": "price-change-v2, jp-fins-ttm-v1",
"was_restated": false,
"served_from_cache": true,
"cache_expires_at": "2026-10-01T14:00:00.000Z",
"timestamp": "2026-10-01T08:00:00.000Z"
}
}{
"success": false,
"statusCode": 400,
"error": {
"code": "MARKET_NOT_SUPPORTED",
"message": "Thị trường \"us\" chưa được hỗ trợ — hiện chỉ có jp"
},
"meta": {
"error": "Bad Request",
"statusCode": 400,
"timestamp": "2026-10-01T08:00:00.000Z"
}
}{
"success": false,
"statusCode": 401,
"error": {
"code": "API_KEY_INVALID",
"message": "Invalid API key"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.023Z"
}
}{
"success": false,
"statusCode": 403,
"error": {
"code": "FEATURE_NOT_IN_PLAN",
"message": "Your plan does not include this feature"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.100Z"
}
}{
"success": false,
"statusCode": 404,
"error": {
"code": "EQUITY_NOT_FOUND",
"message": "Không tìm thấy mã cổ phiếu 99999"
},
"meta": {
"error": "Not Found",
"statusCode": 404,
"timestamp": "2026-10-01T08:00:00.000Z"
}
}{
"success": false,
"statusCode": 429,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded"
},
"meta": {
"timestamp": "2026-06-19T08:34:09.000Z"
}
}{
"success": false,
"statusCode": 500,
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
},
"meta": {
"timestamp": "2026-06-19T08:34:10.000Z"
}
}Authorizations
Your HayInsights API key (prefixed apk_). Create and manage keys in the
HayInsights dashboard (Account → API keys).
Send it in the X-API-Key header on every request to /openapi/v1/*.
Which data domains you may access and your request quota are both governed by
the subscription plan attached to the key — see the Plans & features and
Rate limits guides.
Path Parameters
Market code. Only jp (Tokyo Stock Exchange) is supported for now.
jp "jp"
Stock code — the 4-character ticker (7203) or the 5-character J-Quants code (72030).
"7203"
Response
Snapshot of the requested stock.
Standard success envelope shared by every endpoint. Each operation's response
wrapper extends this (via allOf) and adds a typed data property.
Always true for a successful response.
true
Mirrors the HTTP status code.
200
End-of-day snapshot of one Japanese equity. All numbers are raw, in their native
unit (JPY, shares, %). A block with no data is null (or an empty array), never
an error.
Show child attributes
Show child attributes
Response metadata for the Equities domain. On top of timestamp, every equities
response says where the numbers came from and how fresh they are.
Show child attributes
Show child attributes