Fundamentals
List figures
GET
https://api.q4.sa/v1/companies/{symbol}/factsReturns every number printed in a company’s filings, including the notes to the financial statements, with the page and position it came from.
Starter+
This is the raw layer under the financial statements: one row per table cell, as printed, with the parsed value in base units. Use page and bbox to highlight the figure on the PDF.
It covers the primary statements and every table in the notes: segment results, loan books by stage, maturity profiles, related-party balances, and so on. Note figures have statement: "note" and carry the note they sit under in note_title, plus the headings above them in header_path. For the note’s written text, use Retrieve a note.
When a later filing restates a figure, the old value stays in restatements.
Authorization
x-api-keyheaderrequiredPath parameters
symbolstringrequiredTadawul symbol, e.g.
2222 for Saudi Aramco. ISINs are accepted too.Query parameters
statementstring (comma-separated)Comma-separated:
income, balance, cash_flow, comprehensive_income, changes_in_equity, note, other. Use note for tables in the notes to the financial statements.notestringOnly figures under notes whose title matches, e.g.
segment or 27.qstringSearch row labels and headings, e.g.
stage 3 or related parties.metricstringStandard metric key, e.g.
net_income. Unmapped rows, including most note rows, have none.fiscal_yearintegerFiscal year of the period the figure describes.
fiscal_periodstringPeriod the figure describes.
One of:
FYQ1Q2Q3Q4H19Mdocument_idstringOnly figures from this document. With no other filter, returns every line item in the filing, statements and notes.
include_unverifiedbooleanInclude figures we could not read with confidence. They come back with
verified: false.Default:
falseupdated_afterdatetimeOnly items created or changed after this time. Use it to sync incrementally.
limitintegerResults per page.
Default:
100 · Range: 1–500cursorstringThe
next_cursor from the previous page. Omit it for the first page.Response
dataobject[]The result.
idstringUnique ID.
metricnullStandard metric key, the same across companies.
statementstringWhere the table sits: a primary statement, or
note for the notes to the financial statements.note_titlestringThe numbered note the table sits under, as printed.
null for the primary statements.section_labelstringThe sub-section of the table the row belongs to, e.g. a segment or a stage.
header_pathstring[]The headings printed above the table, outermost first.
row_labelstringThe row label as printed.
column_labelstringThe column header as printed.
fiscal_yearintegerFiscal year.
fiscal_periodstringFiscal period:
FY, Q1–Q4, H1 or 9M.period_startdateFirst day of the period.
period_enddateLast day of the period.
printed_valuestringThe figure exactly as printed in the filing.
valueintegerThe parsed value in base units (scale applied).
unitstringscalestringThe scale printed on the table, e.g. thousands or millions.
document_idstringDocument the item came from.
pageintegerPDF page number (1-based).
bboxnumber[]Position on the page as [x0, y0, x1, y1] in PDF points.
verifiedbooleanFalse if we could not read the value with confidence. Only returned with
include_unverified=true.restatementsarrayEarlier values for the same figure, if a later filing changed it.
paginationobjectnext_cursorstringPass as
cursor to get the next page. null on the last page.limitintegerPage size used.
