Lịch sử bid/ask
curl --request GET \
--url https://openapi-uat.dnse.com.vn/price/{symbol}/quotesimport requests
url = "https://openapi-uat.dnse.com.vn/price/{symbol}/quotes"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://openapi-uat.dnse.com.vn/price/{symbol}/quotes', 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}/quotes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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}/quotes"
req, _ := http.NewRequest("GET", url, nil)
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}/quotes")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi-uat.dnse.com.vn/price/{symbol}/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"quotes": [
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 101,
"quantity": 10
},
{
"price": 100,
"quantity": 50
},
{
"price": 99.5,
"quantity": 10
}
],
"offer": [
{
"price": 106,
"quantity": 4870
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:59:12.336"
},
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 100,
"quantity": 50
},
{
"price": 99.5,
"quantity": 10
}
],
"offer": [
{
"price": 106,
"quantity": 4870
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:58:30.105"
},
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 100,
"quantity": 50
}
],
"offer": [
{
"price": 106,
"quantity": 4870
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:49:10.822"
},
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 100,
"quantity": 50
}
],
"offer": [
{
"price": 106,
"quantity": 4880
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:39:24.198"
}
],
"nextPageToken": "MTM2NDYxOV8yMDI2LTA1LTI2VDA0OjI3OjQyLjQyNFo="
}{
"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
}market-data
Lịch sử bid/ask
Truy vấn thông tin lịch sử bid/ask độ sâu thị trường của mã chứng khoán theo bảng giao dịch và khoảng thời gian cụ thể.
GET
/
price
/
{symbol}
/
quotes
Lịch sử bid/ask
curl --request GET \
--url https://openapi-uat.dnse.com.vn/price/{symbol}/quotesimport requests
url = "https://openapi-uat.dnse.com.vn/price/{symbol}/quotes"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://openapi-uat.dnse.com.vn/price/{symbol}/quotes', 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}/quotes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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}/quotes"
req, _ := http.NewRequest("GET", url, nil)
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}/quotes")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi-uat.dnse.com.vn/price/{symbol}/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"quotes": [
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 101,
"quantity": 10
},
{
"price": 100,
"quantity": 50
},
{
"price": 99.5,
"quantity": 10
}
],
"offer": [
{
"price": 106,
"quantity": 4870
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:59:12.336"
},
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 100,
"quantity": 50
},
{
"price": 99.5,
"quantity": 10
}
],
"offer": [
{
"price": 106,
"quantity": 4870
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:58:30.105"
},
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 100,
"quantity": 50
}
],
"offer": [
{
"price": 106,
"quantity": 4870
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:49:10.822"
},
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{
"price": 100,
"quantity": 50
}
],
"offer": [
{
"price": 106,
"quantity": 4880
},
{
"price": 106.1,
"quantity": 500
},
{
"price": 110,
"quantity": 30
}
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:39:24.198"
}
],
"nextPageToken": "MTM2NDYxOV8yMDI2LTA1LTI2VDA0OjI3OjQyLjQyNFo="
}{
"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 đề
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)
Thời gian bắt đầu (timestamp)
Thời gian kết thúc (timestamp) (không vượt quá 1 ngày)
Phản hồi
OK
Danh sách dữ liệu sổ lệnh (Market Depth) cùng thông tin phân trang.
Danh sách dữ liệu sổ lệnh của mã chứng khoán
Show child attributes
Show child attributes
Ví dụ:
[
{
"marketId": "STO",
"boardId": "G1",
"isin": "VN000000ACB8",
"symbol": "ACB",
"bid": [
{ "price": 101, "quantity": 10 },
{ "price": 100, "quantity": 50 },
{ "price": 99.5, "quantity": 10 }
],
"offer": [
{ "price": 106, "quantity": 4870 },
{ "price": 106.1, "quantity": 500 },
{ "price": 110, "quantity": 30 }
],
"totalOfferQtty": 0,
"totalBidQtty": 0,
"time": "2026-08-03 10:59:12.336"
}
]
Token dùng để lấy trang dữ liệu tiếp theo. Không có hoặc rỗng nếu không còn dữ liệu
Ví dụ:
"MTM2NDYxOV8yMDI2LTA1LTI2VDA0OjI3OjQyLjQyNFo="