跳转至

查询财务数据

HTTP API GET 财务报表
请求 URL https://stock-data-api.aibot6.cn/v1/api/financial-reports

提供财务报表查询能力,底层数据来自通达信 gpcw*.dat / zip 财务文件,并统一写入 financial_reports 表。

数据来源

  • 来源:通达信 gpcw*.dat / zip
  • 入库表:financial_reports

管理命令

财务采集

python manage.py ingest_financial_gpcw --year 2025 --quarter Q3

EPS 更新

python manage.py update_eps --year 2025 --quarter Q3

请求参数

参数 类型 必填 说明
stock_code string 股票代码
year int 报告年份
quarter string Q1/Q2/Q3/Q4
page int 默认 1
page_size int 默认 50,最大 200

指标映射

  • 营业收入:FINVALUE(74)
  • 净利润:FINVALUE(95)
  • 总资产:FINVALUE(40)
  • 总负债:FINVALUE(63)
  • 经营现金流:FINVALUE(98)

接口说明

  • stock_code / year / quarter 进行组合筛选
  • 分页查询默认每页 50
  • quarter 不在 Q1/Q2/Q3/Q4 中,直接返回参数错误
  • EPS 更新依赖对应季度、上年同季和上年 Q4 的净利润组合
    <div class="api-code-panel" data-code="python" markdown="1">
import requests

url = "https://stock-data-api.aibot6.cn/v1/api/financial-reports"
params = {
    "year": 2025,
    "quarter": "Q3",
    "page": 1,
    "page_size": 50,
}
headers = {
    "Authorization": "Bearer <token>",
    "api-key": "<api-key>",
}

response = requests.get(url, params=params, headers=headers)
print(response.text)
    </div>
    <div class="api-code-panel" data-code="javascript" markdown="1">
const url = new URL("https://stock-data-api.aibot6.cn/v1/api/financial-reports");
url.searchParams.set("year", "2025");
url.searchParams.set("quarter", "Q3");
url.searchParams.set("page", "1");
url.searchParams.set("page_size", "50");

const response = await fetch(url, {
  headers: {
    Authorization: "Bearer <token>",
    "api-key": "<api-key>",
  },
});

console.log(await response.json());
    </div>
  </div>
</section>

<section class="api-card status-card">
  <div class="api-card__header">
    <h3 class="api-card__title">返回状态示例</h3>
  </div>
  <div class="api-card__body">
    <div class="api-status-tabs" role="tablist" aria-label="返回状态">
      <button class="api-status-tab is-active" type="button" data-status-target="200">200</button>
      <button class="api-status-tab" type="button" data-status-target="400">400</button>
      <button class="api-status-tab" type="button" data-status-target="401">401</button>
      <button class="api-status-tab" type="button" data-status-target="403">403</button>
      <button class="api-status-tab" type="button" data-status-target="404">404</button>
    </div>
    <div class="api-status-panel is-active" data-status="200" markdown="1">
{
  "code": 1,
  "message": "success",
  "data": {
    "items": [
      {
        "stock_code": "000001",
        "report_date": "2025-09-30",
        "report_year": 2025,
        "quarter": "Q3",
        "revenue": 123456789.01,
        "net_profit": 23456789.01,
        "total_assets": 345678901.01,
        "total_liabilities": 123456789.01,
        "cash_flow": 4567890.01,
        "source": "tdx_gpcw"
      }
    ],
    "total": 5443,
    "page": 1,
    "page_size": 50
  }
}
    </div>
    <div class="api-status-panel" data-status="400" markdown="1">
{
  "code": 0,
  "message": "quarter must be one of Q1/Q2/Q3/Q4"
}
    </div>
    <div class="api-status-panel" data-status="401" markdown="1">
{
  "code": 0,
  "message": "unauthorized"
}
    </div>
    <div class="api-status-panel" data-status="403" markdown="1">
{
  "code": 0,
  "message": "forbidden"
}
    </div>
    <div class="api-status-panel" data-status="404" markdown="1">
{
  "code": 0,
  "message": "not found"
}
    </div>
  </div>
</section>