DEV Community

heubme
heubme

Posted on

How to get full-text A-share (China) annual reports as Markdown — Kweichow Moutai example

How to get full-text A-share (China) annual reports as Markdown — Kweichow Moutai example

If you're building RAG or LLM tooling on Chinese equities, you've hit the same wall:
annual reports are published as PDFs on cninfo.com.cn, and turning them into clean,
table-preserving Markdown is real work.

The hard way (what most people do)

  1. Query cninfo for the announcement PDF.
  2. Download it.
  3. Parse the PDF — pymupdf gets you ~90% of the way, but scanned pages need OCR, and financial tables often come out mangled.
  4. Clean headers/footers, restore tables, split chapters.

Doable, but it's a pipeline, not a task — and you rebuild it for every company.

The one-liner

DataSinking serves full-text annual / semi-annual / quarterly
reports from China (SSE/SZSE/BSE), Korea and Japan as clean Markdown, sourced from the
official disclosure platforms, with YAML frontmatter and preserved headings, paragraphs
and tables.

curl "https://api.datasink.ing/documents?symbol=600519.SS&with_content=1&apikey=YOUR_KEY"
Enter fullscreen mode Exit fullscreen mode

That returns Kweichow Moutai's latest annual report as Markdown — no PDF, no OCR, no
cleanup. Symbols are FMP-style: 600519.SS (Moutai), 005930.KS (Samsung), 7203.T (Toyota).

Pull just one chapter (save tokens)

For RAG you rarely want the whole 300-page report:

# list the sections first
curl "https://api.datasink.ing/documents/12345/sections?apikey=YOUR_KEY"
# fetch only the MD&A
curl "https://api.datasink.ing/documents/12345?section=MD&A&apikey=YOUR_KEY"
Enter fullscreen mode Exit fullscreen mode

Chapter-level access is the part most financial APIs miss — and it's the most useful
for feeding an LLM without blowing your context window.

Why full text beats structured indicators

Structured-finance APIs give you numbers (revenue, margins, ratios). They don't give you
the narrative — management discussion, risk factors, notes to the financial statements —
which is exactly what RAG apps and analyst-grade LLM workflows need to answer "why".

Start free

Get a free key by email (no signup): POST https://api.datasink.ing/free-key with
{"email": "you@example.com"}.

Top comments (0)