Báo cáo tài chính, tỷ số, hồ sơ công ty, cổ đông, sự kiện.
import { vn } from "vnstock-js";
const income = await vn.stock("FPT").financials("income", { period: "quarter" });
const balance = await vn.stock("FPT").financials("balance", { period: "year" });
const cashflow = await vn.stock("FPT").financials("cashflow"); // theo quý
const ratios = await vn.stock("FPT").financials("ratios", { period: "quarter" });
kind: 'balance' | 'income' | 'cashflow' | 'ratios'. period: 'quarter' (mặc định) hoặc 'year'.
Kết quả:
{
symbol: "FPT",
kind: "income",
period: "quarter",
unit: "VND",
fields: [{ field: "isa3", titleVi: "Doanh thu thuần", titleEn: "Net sales", level: 1, parent: null }, ...],
rows: [{ period: "2026-Q2", values: { isa3: 13788503461199, isa22: 2567587014434, ... } }, ...],
}
rows cũ trước mới sau; period là "2026" theo năm hoặc "2026-Q2" theo quý.ratios, các tỷ số như roe, roa, biên lợi nhuận là phân số, pe, pb là bội số.isa3...) khác nhau giữa doanh nghiệp thường, ngân hàng và công ty chứng khoán. Dùng fields để tra theo tên:const net = income.fields.find((f) => f.titleEn === "Net sales")?.field;
const latest = income.rows[income.rows.length - 1];
console.log(net && latest.values[net]); // doanh thu thuần quý gần nhất, đồng
const fpt = vn.stock("FPT");
const profile = await fpt.company(); // ngành, số cổ phiếu lưu hành, giới thiệu
const holders = await fpt.shareholders(); // cổ đông lớn
const officers = await fpt.officers(); // ban lãnh đạo
const events = await fpt.events(); // sự kiện: cổ tức, phát hành, đại hội...
const dividends = await fpt.dividends(); // chỉ sự kiện cổ tức
const news = await fpt.news(); // tin của công ty
Các phần này dùng chung một request tới VCI. Ngày tháng theo giờ Việt Nam. Sự kiện có exRightDate (ngày giao dịch không hưởng quyền), recordDate (ngày đăng ký cuối cùng), ratio (tỷ lệ, phân số).
Xem CompanyProfile.