Funds Holding a Stock
curl --request GET \
--url https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"code": 0,
"data": {
"symbol": "<string>",
"total": 123,
"members": [
{
"fund_code": "<string>",
"fund_symbol": "<string>",
"fund_name": "<string>",
"currency": "<string>",
"position_ratio": "<string>",
"report_date": "2023-12-25"
}
]
},
"page": {
"next_cursor": "<string>",
"limit": 2
}
}
Shareholders and Institutional Holdings
Funds Holding a Stock
Query funds that disclose holdings in a specified stock and the stock’s weight in each fund; supports pagination.
GET
/
v1
/
fundamentals
/
fund-holdings
/
latest
Funds Holding a Stock
curl --request GET \
--url https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"code": 0,
"data": {
"symbol": "<string>",
"total": 123,
"members": [
{
"fund_code": "<string>",
"fund_symbol": "<string>",
"fund_name": "<string>",
"currency": "<string>",
"position_ratio": "<string>",
"report_date": "2023-12-25"
}
]
},
"page": {
"next_cursor": "<string>",
"limit": 2
}
}
Plan Access
| Plan | Available |
|---|---|
| Free | ❌ |
| Starter | ❌ |
| Professional | ✅ |
| Full-Market Plans (A-Shares, HK Stocks, US Stocks) | ✅ |
| Enterprise | ✅ |
Notes
- Holdings are based on each fund’s disclosure date and may not reflect the current trading date. Pagination information is returned in the top-level
pageobject.
Supported Markets
| Market | Examples |
|---|---|
| US Stocks | AAPL.US |
| HK Stocks | 700.HK |
| A-Shares | 600519.SH |
Request Parameters
| Parameter | Required | Description |
|---|---|---|
symbol | Yes | Stock symbol |
type | No | Product type; currently supports stock |
limit | No | Number of records per page; default 200, range 1–500 |
cursor | No | Pagination cursor. Omit it on the first request; for the next page, pass the previous response’s top-level page.next_cursor value |
Request Example
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest?symbol=AAPL&type=stock&limit=3"
Response Fields
The table below lists fields indata and the pagination fields; an outer code=0 indicates success.
| Field | Description |
|---|---|
| symbol | Stock symbol. |
| total | Total number of fund records holding the stock. |
| members | Funds that disclose holdings in the stock. |
| └─ fund_code | Fund code. |
| └─ fund_symbol | Standardized fund symbol. |
| └─ fund_name | Fund name. |
| └─ position_ratio | Weight of the stock in the fund’s holdings. |
| └─ currency | Currency. |
| └─ report_date | Report date in YYYY-MM-DD format. |
| page | Top-level pagination information. |
| └─ next_cursor | Cursor for the next page. When non-null, pass it unchanged as cursor in the next request; null means the last page has been reached. |
| └─ limit | Current page limit. |
total is the total number of matching records, while members contains only the current page. To request the next page, keep symbol, type, and limit unchanged and pass the current response’s top-level page.next_cursor value unchanged as the next request’s cursor. The cursor is an opaque string used by the API and should not be decoded or calculated by the client. Stop when page.next_cursor is null.
The first-page example above uses limit=3. If its top-level pagination object is:
{ "page": { "next_cursor": "Mw", "limit": 3 } }
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.tickdb.ai/v1/fundamentals/fund-holdings/latest?symbol=AAPL&type=stock&limit=3&cursor=Mw"
Mw is only an example; always use the cursor returned by the preceding page.Authorizations
Query Parameters
Stock symbol
Examples:
"AAPL"
"700"
"600519"
"AAPL.US"
"700.HK"
"600519.SH"
Product type; currently supports stock
Available options:
stock Number of records per page; default 200, range 1–500
Required range:
1 <= x <= 500Next-page cursor; omit on the first request
Minimum string length:
1