Nguồn dữ liệu
Mọi thứ bạn thấy trên kèo game đều đến từ các lần gọi HTTP thật, ghi lại ngay lúc build. Trang này là log của lần build đó — không phải chữ marketing.
127
lần gọi HTTP
127
thành công
0
thất bại
186
mức giá thu được
Endpoint đã gọi
cheapshark.storesLấy danh sách cửa hàng mà CheapShark theo dõi, kèm trạng thái active.
cheapshark.dealsFeed deal toàn cục của CheapShark. Lưu ý: endpoint này trả tối đa 60 dòng và bỏ qua tham số page — nên kèo game không thể lấy hết deal, chỉ lấy được feed đầu. Phần thiếu đã bù bằng Steam search.
steam.search.p1Steam Store search với cc=vn&l=vi: deal đang chạy, giá VND thật (data-price-final), % giảm, % đánh giá dương, ngày phát hành. Đây là nguồn lớn nhất của kèo game.
steam.search.p2Steam Store search với cc=vn&l=vi: deal đang chạy, giá VND thật (data-price-final), % giảm, % đánh giá dương, ngày phát hành. Đây là nguồn lớn nhất của kèo game.
steam.search.p3Steam Store search với cc=vn&l=vi: deal đang chạy, giá VND thật (data-price-final), % giảm, % đánh giá dương, ngày phát hành. Đây là nguồn lớn nhất của kèo game.
steam.search.p4Steam Store search với cc=vn&l=vi: deal đang chạy, giá VND thật (data-price-final), % giảm, % đánh giá dương, ngày phát hành. Đây là nguồn lớn nhất của kèo game.
steam.search.p5Steam Store search với cc=vn&l=vi: deal đang chạy, giá VND thật (data-price-final), % giảm, % đánh giá dương, ngày phát hành. Đây là nguồn lớn nhất của kèo game.
steam.search.p6Steam Store search với cc=vn&l=vi: deal đang chạy, giá VND thật (data-price-final), % giảm, % đánh giá dương, ngày phát hành. Đây là nguồn lớn nhất của kèo game.
cheapshark.offersGọi riêng cho từng game: /deals?steamAppID=X trả về mọi mức giá của game đó ở mọi store. Đây là nguồn của bảng so sánh giá nhiều nơi.
steam.appdetailsSteam Store API với cc=vn&l=vi: giá bằng tiền Việt Nam, thể loại, Metacritic, nền tảng, mô tả, nhà phát triển. 1 request mỗi game vì Steam không cho gộp appid.
steam.featuredcategoriesDanh sách game Steam đang giảm giá, lấy với khu vực Việt Nam nên giá là VND thật. Giữ làm nguồn dự phòng cho Steam search.
Địa chỉ nguồn
- cheapsharkhttps://www.cheapshark.com/api/1.0
- steamSearchhttps://store.steampowered.com/search/results/?category1=998&specials=1&cc=vn&l=vi
- steamAppdetailshttps://store.steampowered.com/api/appdetails?cc=vn&l=vi
- steamFeaturedcategorieshttps://store.steampowered.com/api/featuredcategories/?cc=vn&l=vi
- isthereanydealchưa dùng — cần API key
Những gì kèo game chưa làm được
Lịch sử giá dài hạn
Cả CheapShark API công khai lẫn Steam Store API đều KHÔNG trả series lịch sử giá. Em không tự chế chart. Thay vào đó hiển thị lastChange (mốc đổi giá thật của CheapShark) + so sánh đa store + giá Steam VN thật.
Deal feed không giới hạn
CheapShark /deals trả tối đa 60 dòng và bỏ qua tham số page. Phần đã bù bằng Steam search lấy giá VND — Steam báo đang có 11.202 deal, nhưng kèo game mới lấy 6 trang × 100.
Giá từ shop Việt
Các shop Việt hầu như không có API giá công khai. Chúng tôi không dò giá bằng cách scrape vì dễ sai và dễ vi phạm điều khoản shop — nên chỉ liệt kê shop kèm điều kiện.
IsThereAnyDeal
Cần API key. Chưa có key nên chưa dùng. Nếu có key, đây là nguồn thứ 3 để tăng độ phủ store.
Giá real-time
Đây là bản static export. Dữ liệu được chụp lúc build, không tự cập nhật khi người dùng mở trang. Muốn real-time phải chuyển sang có server hoặc cron rebuild.
Giới hạn kỹ thuật ghi ra lúc build
- CheapShark /deals cứng 60 dòng và bỏ qua tham số `page` → không phân trang được. Đã bù bằng Steam search.
- CheapShark /games?steamAppID= trả HTTP 429 gần như liên tục và field `cheapest` trùng với giá rẻ nhất suy ra từ /deals?steamAppID= → đã bỏ hẳn khỏi pipeline.
- Steam /api/appdetails KHÔNG batch được (HTTP 400 khi gửi nhiều appid) → 1 request mỗi game.
- Steam search chỉ trả 100 deal/trang; script lấy 6 trang = 600 deal. Steam báo tổng deal đang chạy: xem steamTotalSpecials.
- Không có price history từ nguồn mở.
- Giá USD (CheapShark) và giá VND (Steam) KHÔNG được quy đổi lẫn nhau trong UI — không có tỷ giá chuẩn đáng tin.
Danh sách này lấy thẳng từ data/manifest.json do scripts/fetch-data.mjs ghi ra — không phải chữ viết tay.
Log các lần gọi gần nhất
| endpoint | kết quả | item | ms | lúc |
|---|---|---|---|---|
| steam.appdetails | ok (200) | 1 | 416 | 03:29:14 |
| steam.appdetails | ok (200) | 1 | 269 | 03:29:15 |
| steam.appdetails | ok (200) | 1 | 232 | 03:29:17 |
| steam.appdetails | ok (200) | 1 | 279 | 03:29:18 |
| steam.appdetails | ok (200) | 1 | 248 | 03:29:20 |
| steam.appdetails | ok (200) | 1 | 226 | 03:29:21 |
| steam.appdetails | ok (200) | 1 | 239 | 03:29:22 |
| steam.appdetails | ok (200) | 1 | 231 | 03:29:24 |
| steam.appdetails | ok (200) | 1 | 241 | 03:29:25 |
| steam.appdetails | ok (200) | 1 | 396 | 03:29:26 |
| steam.appdetails | ok (200) | 1 | 229 | 03:29:28 |
| steam.appdetails | ok (200) | 1 | 254 | 03:29:29 |
| steam.appdetails | ok (200) | 1 | 293 | 03:29:30 |
| steam.appdetails | ok (200) | 1 | 240 | 03:29:32 |
| steam.appdetails | ok (200) | 1 | 354 | 03:29:33 |
| steam.appdetails | ok (200) | 1 | 332 | 03:29:35 |
| steam.appdetails | ok (200) | 1 | 271 | 03:29:36 |
| steam.appdetails | ok (200) | 1 | 286 | 03:29:37 |
| steam.appdetails | ok (200) | 1 | 238 | 03:29:39 |
| steam.appdetails | ok (200) | 1 | 254 | 03:29:40 |
| steam.appdetails | ok (200) | 1 | 245 | 03:29:41 |
| steam.appdetails | ok (200) | 1 | 279 | 03:29:43 |
| steam.appdetails | ok (200) | 1 | 220 | 03:29:44 |
| steam.appdetails | ok (200) | 1 | 234 | 03:29:45 |
| steam.appdetails | ok (200) | 1 | 245 | 03:29:47 |
| steam.appdetails | ok (200) | 1 | 239 | 03:29:48 |
| steam.appdetails | ok (200) | 1 | 215 | 03:29:49 |
| steam.appdetails | ok (200) | 1 | 215 | 03:29:51 |
| steam.appdetails | ok (200) | 1 | 268 | 03:29:52 |
| steam.appdetails | ok (200) | 1 | 276 | 03:29:53 |
| steam.appdetails | ok (200) | 1 | 245 | 03:29:55 |
| steam.appdetails | ok (200) | 1 | 262 | 03:29:56 |
| steam.appdetails | ok (200) | 1 | 261 | 03:29:57 |
| steam.appdetails | ok (200) | 1 | 350 | 03:29:59 |
| steam.appdetails | ok (200) | 1 | 259 | 03:30:00 |
| steam.appdetails | ok (200) | 1 | 282 | 03:30:02 |
| steam.appdetails | ok (200) | 1 | 238 | 03:30:03 |
| steam.appdetails | ok (200) | 1 | 329 | 03:30:04 |
| steam.appdetails | ok (200) | 1 | 287 | 03:30:06 |
| steam.appdetails | ok (200) | 1 | 223 | 03:30:07 |
| steam.appdetails | ok (200) | 1 | 246 | 03:30:08 |
| steam.appdetails | ok (200) | 1 | 327 | 03:30:10 |
| steam.appdetails | ok (200) | 1 | 241 | 03:30:11 |
| steam.appdetails | ok (200) | 1 | 268 | 03:30:12 |
| steam.appdetails | ok (200) | 1 | 231 | 03:30:14 |
| steam.appdetails | ok (200) | 1 | 271 | 03:30:15 |
| steam.appdetails | ok (200) | 1 | 212 | 03:30:16 |
| steam.appdetails | ok (200) | 1 | 350 | 03:30:18 |
| steam.appdetails | ok (200) | 1 | 375 | 03:30:19 |
| steam.appdetails | ok (200) | 1 | 246 | 03:30:20 |
| steam.appdetails | ok (200) | 1 | 227 | 03:30:22 |
| steam.appdetails | ok (200) | 1 | 258 | 03:30:23 |
| steam.appdetails | ok (200) | 1 | 254 | 03:30:24 |
| steam.appdetails | ok (200) | 1 | 244 | 03:30:26 |
| steam.appdetails | ok (200) | 1 | 312 | 03:30:27 |
| steam.appdetails | ok (200) | 1 | 231 | 03:30:28 |
| steam.appdetails | ok (200) | 1 | 250 | 03:30:30 |
| steam.appdetails | ok (200) | 1 | 244 | 03:30:31 |
| steam.appdetails | ok (200) | 1 | 245 | 03:30:32 |
| steam.featuredcategories | ok (200) | 10 | 104 | 03:30:33 |
snapshot 03:30:33 16/10/2026