curl --request GET \
--url https://openapi-uat.dnse.com.vn/price/{symbol}/secdef \
--header 'X-API-Key: <x-api-key>' \
--header 'X-Aux-Date: <x-aux-date>' \
--header 'X-Signature: <x-signature>'import requests
url = "https://openapi-uat.dnse.com.vn/price/{symbol}/secdef"
headers = {
"X-API-Key": "<x-api-key>",
"X-Aux-Date": "<x-aux-date>",
"X-Signature": "<x-signature>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-API-Key': '<x-api-key>',
'X-Aux-Date': '<x-aux-date>',
'X-Signature': '<x-signature>'
}
};
fetch('https://openapi-uat.dnse.com.vn/price/{symbol}/secdef', 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://openapi-uat.dnse.com.vn/price/{symbol}/secdef",
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: <x-api-key>",
"X-Aux-Date: <x-aux-date>",
"X-Signature: <x-signature>"
],
]);
$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://openapi-uat.dnse.com.vn/price/{symbol}/secdef"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
req.Header.Add("X-Aux-Date", "<x-aux-date>")
req.Header.Add("X-Signature", "<x-signature>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://openapi-uat.dnse.com.vn/price/{symbol}/secdef")
.header("X-API-Key", "<x-api-key>")
.header("X-Aux-Date", "<x-aux-date>")
.header("X-Signature", "<x-signature>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi-uat.dnse.com.vn/price/{symbol}/secdef")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
request["X-Aux-Date"] = '<x-aux-date>'
request["X-Signature"] = '<x-signature>'
response = http.request(request)
puts response.read_body[
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000HPG4",
"symbol": "HPG",
"productGrpId": "STO",
"securityGroupId": "ST",
"basicPrice": 24.25,
"ceilingPrice": 25.9,
"floorPrice": 22.6,
"securityStatus": "UNSPECIFIED",
"symbolAdminStatusCode": "NRM",
"symbolTradingMethodStatusCode": "NRM",
"symbolTradingSanctionStatusCode": "NRM",
"finalTradeDate": null,
"listingDate": "2007-11-15T00:00:00Z",
"time": "2026-05-26 22:01:01.303"
}
]{
"code": "OA-003",
"message": "Thông tin nhập không hợp lệ",
"status": 400
}{
"code": "OA-009",
"message": "Lỗi hệ thống",
"status": 500
}Thông tin giao dịch chứng khoán
Truy vấn thông tin về giá trần/sàn/tham chiếu và trạng thái của mã chứng khoán vào ngày giao dịch.
curl --request GET \
--url https://openapi-uat.dnse.com.vn/price/{symbol}/secdef \
--header 'X-API-Key: <x-api-key>' \
--header 'X-Aux-Date: <x-aux-date>' \
--header 'X-Signature: <x-signature>'import requests
url = "https://openapi-uat.dnse.com.vn/price/{symbol}/secdef"
headers = {
"X-API-Key": "<x-api-key>",
"X-Aux-Date": "<x-aux-date>",
"X-Signature": "<x-signature>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-API-Key': '<x-api-key>',
'X-Aux-Date': '<x-aux-date>',
'X-Signature': '<x-signature>'
}
};
fetch('https://openapi-uat.dnse.com.vn/price/{symbol}/secdef', 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://openapi-uat.dnse.com.vn/price/{symbol}/secdef",
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: <x-api-key>",
"X-Aux-Date: <x-aux-date>",
"X-Signature: <x-signature>"
],
]);
$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://openapi-uat.dnse.com.vn/price/{symbol}/secdef"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-api-key>")
req.Header.Add("X-Aux-Date", "<x-aux-date>")
req.Header.Add("X-Signature", "<x-signature>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://openapi-uat.dnse.com.vn/price/{symbol}/secdef")
.header("X-API-Key", "<x-api-key>")
.header("X-Aux-Date", "<x-aux-date>")
.header("X-Signature", "<x-signature>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi-uat.dnse.com.vn/price/{symbol}/secdef")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
request["X-Aux-Date"] = '<x-aux-date>'
request["X-Signature"] = '<x-signature>'
response = http.request(request)
puts response.read_body[
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000HPG4",
"symbol": "HPG",
"productGrpId": "STO",
"securityGroupId": "ST",
"basicPrice": 24.25,
"ceilingPrice": 25.9,
"floorPrice": 22.6,
"securityStatus": "UNSPECIFIED",
"symbolAdminStatusCode": "NRM",
"symbolTradingMethodStatusCode": "NRM",
"symbolTradingSanctionStatusCode": "NRM",
"finalTradeDate": null,
"listingDate": "2007-11-15T00:00:00Z",
"time": "2026-05-26 22:01:01.303"
}
]{
"code": "OA-003",
"message": "Thông tin nhập không hợp lệ",
"status": 400
}{
"code": "OA-009",
"message": "Lỗi hệ thống",
"status": 500
}Tiêu đề
API Key được cấp khi đăng ký dịch vụ
Thời gian thực hiện yêu cầu
Chữ ký xác thực yêu cầu
Phiên bản API
Tham số đường dẫn
Mã chứng khoán
Tham số truy vấn
Mã bảng giao dịch
- G1: Lô chẵn
- G4: Lô lẻ
- T1: Thỏa thuận trong giờ (9h - 14h45)
- T3: Thỏa thuận sau giờ (14h45 - 15h)
- T4: Thỏa thuận lô lẻ trong giờ (9h - 14h45)
- T6: Thỏa thuận lô lẻ sau giờ (14h45 - 15h)
Phản hồi
OK
Mã thị trường niêm yết mã chứng khoán
- DVX: Phái sinh sàn HNX
- HCX: Trái phiếu doanh nghiệp HNX
- STO: Cổ phiếu sàn HOSE
- STX: Cổ phiếu sàn HNX
- UPX: Cổ phiếu sàn Upcom
"STO"
Mã bảng giao dịch
- G1: Lô chẵn
- G4: Lô lẻ
- T1: Thỏa thuận trong giờ (9h - 14h45)
- T3: Thỏa thuận sau giờ (14h45 - 15h)
- T4: Thỏa thuận lô lẻ trong giờ (9h - 14h45)
- T6: Thỏa thuận lô lẻ sau giờ (14h45 - 15h)
"G1"
Mã định danh quốc tế
"VN000000HPG4"
Mã chứng khoán
"HPG"
Nhóm sản phẩm theo thị trường
- FBX: Hợp đồng tương lai Trái phiếu
- FIO: Hợp đồng tương lai Chỉ số
- HCX: Trái phiếu Doanh nghiệp HNX
- STO: Cổ phiếu sàn HOSE
- STX: Cổ phiếu sàn HNX
- UPX: Cổ phiếu sàn Upcom
"STO"
Nhóm chứng khoán
- BS: Trái phiếu doanh nghiệp
- EF: Quỹ ETF
- EW: Chứng quyền
- FU: Hợp đồng tương lai
- ST: Cổ phiếu
"ST"
Giá tham chiếu ngày giao dịch
26.8
Giá trần ngày giao dịch
28.65
Giá sàn ngày giao dịch
24.95
Trạng thái giao dịch của mã chứng khoán
- HALT: Ngừng giao dịch
- NO_HALT: Không ngừng giao dịch
"UNSPECIFIED"
Trạng thái quản lý hành chính mã chứng khoán
- CR: Kiểm soát và hạn chế giao dịch
- CTR: Kiểm soát
- NRM: Bình thường
- RES: Hạn chế giao dịch
- WFR: Cảnh báo vi phạm BCTC
- WID: Cảnh báo vi phạm CBTT
- WOV: Cảnh báo vi phạm khác
"NRM"
Trạng thái cơ chế giao dịch mã chứng khoán
- NRM: Bình thường
- NWE: Niêm yết mới (biên độ đặc biệt)
- NWN: Niêm yết mới (biên độ thường)
- SLS: Giao dịch đặc biệt sau tạm ngưng
- SNE: Giao dịch đặc biệt không có giao dịch dài hạn
"NRM"
Tình trạng giao dịch của mã chứng khoán
- NRM: Bình thường
- SUS: Tạm ngừng giao dịch
- DTL: Hủy niêm yết để chuyển sàn
- TFR: Ngưng giao dịch do hạn chế
"NRM"
Ngày niêm yết
"2007-11-15T00:00:00Z"
Thời gian trong các message giá của sở trả về (YYYY-MM-DD HH:mm:ss.SSS (GMT+7))
"2026-05-26 22:01:01.303"