Usage Cost
10 coins/call
Quick Start
Use a unified response envelope and call directly from your backend.
https://openapi.toolkk.com/v1/fund-holdcURL Example
curl --request POST \
--url 'https://openapi.toolkk.com/v1/fund-hold' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "fundCode": "基金代码",\n "reportDate": "公告日期,格式为2020-06-30,2020-03-31,不传则默认最新"\n}'Python Example
import os
import requests
url = "https://openapi.toolkk.com/v1/fund-hold"
payload = {
"fundCode": "基金代码",
"reportDate": "公告日期,格式为2020-06-30,2020-03-31,不传则默认最新"
}
headers = {
"Content-Type": "application/json",
"X-API-Key": os.getenv("TOOLKK_API_KEY", "YOUR_API_KEY"),
}
response = requests.request("POST", url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())Go Example
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
endpoint := "https://openapi.toolkk.com/v1/fund-hold"
payload := []byte("{\n \"fundCode\": \"基金代码\",\n \"reportDate\": \"公告日期,格式为2020-06-30,2020-03-31,不传则默认最新\"\n}")
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}Java Example
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ToolkkExample {
public static void main(String[] args) throws Exception {
String payload = "{\n \"fundCode\": \"基金代码\",\n \"reportDate\": \"公告日期,格式为2020-06-30,2020-03-31,不传则默认最新\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/fund-hold"))
.method("POST", HttpRequest.BodyPublishers.ofString(payload))
.header("Content-Type", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}PHP Example
<?php
$endpoint = 'https://openapi.toolkk.com/v1/fund-hold';
$payload = "{\n \"fundCode\": \"基金代码\",\n \"reportDate\": \"公告日期,格式为2020-06-30,2020-03-31,不传则默认最新\"\n}";
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
echo $response;Response Example
{
"code": 200,
"msg": "成功",
"taskNo": "492823910191448773171202",
"data": {
"reportDate": "2024-06-30",
"stock": [
{
"stockName": "金地集团",
"rate": 9.18,
"type": "增持",
"stockCode": "600383"
}
],
"fof": [],
"bond": []
}
}Examples illustrate the response structure. Actual results depend on the API response.
- Authentication
- Send X-API-Key in request headers
- Rate limit
- 60 req/min
- Timeout
- 5000 ms
Send your API Key in the X-API-Key header from your backend.
Check both HTTP status and business fields before treating a call as successful.
Use retries and backoff together with rate limits in high-frequency scenarios.
Request Fields
Send requests from your server with the key in the X-API-Key header.
Request Fields
Fields are read from the API schema. Missing descriptions and examples are marked as unspecified.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| fundCode | string | Yes | 基金代码 | Unspecified |
| reportDate | string | No | 公告日期,格式为2020-06-30,2020-03-31,不传则默认最新 | Unspecified |
Request Example
{
"fundCode": "基金代码",
"reportDate": "公告日期,格式为2020-06-30,2020-03-31,不传则默认最新"
}- Authentication
- Send X-API-Key in request headers
- Rate limit
- 60 req/min
- Timeout
- 5000 ms
Response Fields
Examples illustrate the response structure. Actual results depend on the API response.
Response Fields
Fields are read from the API schema. Missing descriptions and examples are marked as unspecified.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| code | number | No | 返回码,详见返回码说明 | 200 |
| msg | string | No | 返回码对应描述 | 成功 |
| taskNo | string | No | 本次请求号 | 492823910191448773171202 |
| data | object | No | Unspecified | Unspecified |
| data.reportDate | string | No | 持仓数据报告期 | 2024-06-30 |
| data.stock | array | No | 持仓股票数据集合 | [{"stockName":"金地集团","rate":9.18,"type":"增持","stockCode":"600383"}] |
| data.stock[] | object | Unspecified | 持仓股票数据集合 | Unspecified |
| data.fof | array | No | 持仓fof数据集合 | [] |
| data.fof[] | object | Unspecified | 持仓fof数据集合 | Unspecified |
| data.bond | array | No | 持仓债券数据集合 | [] |
| data.bond[] | object | Unspecified | 持仓债券数据集合 | Unspecified |
Response Example
{
"code": 200,
"msg": "成功",
"taskNo": "492823910191448773171202",
"data": {
"reportDate": "2024-06-30",
"stock": [
{
"stockName": "金地集团",
"rate": 9.18,
"type": "增持",
"stockCode": "600383"
}
],
"fof": [],
"bond": []
}
}API overview
Capabilities, use cases, limitations, and frequently asked questions.
API Overview
This API provides fund holding data query services from public fund periodic reports. Developers can pass the fund code (required) and an optional announcement date to retrieve the fund's asset allocation details for the corresponding reporting period, including top-held stock names, codes, holding percentages, and change types (e.g., increased/decreased holdings), as well as bond and FOF holding lists.
Use Cases
- Investment Research Analysis: Quantitative teams or analysts track fund managers' rebalancing paths and stock selection preferences.
- Financial Terminals: Wealth management apps display the transparency of a fund's underlying assets to assist user decision-making.
- Risk Monitoring: Institutional investors monitor changes in the concentration of specific industries or individual stocks within fund portfolios.
Request and Response Details
- Request Method: POST
- Core Parameters:
fundCode(required): Standard 6-digit fund code.