Skip to content
/api/v1/form-13f/fund/bulk

Bulk query multiple funds in one request (basket analysis).

Bulk query multiple funds in one request (basket analysis).

free

Why use this

Retrieve reports for up to 20 funds at once. Supports configurable detail level: 'summary' (metadata + top 10 holdings) or 'full' (complete report with analysis).

Common use case

Building a 'basket' of hedge funds (e.g. Tiger Global + Citadel + Renaissance) and generating an aggregated portfolio view without 20 sequential API calls.

Batches up to 20 fund reports into one request. The default detail is full: paginated holdings, analysis totals, sector_allocation and per-fund _meta.pagination. Analysis item arrays are omitted unless include_analysis_items is true. Summary returns metadata, top ten holdings and holdings_count. Successful reports appear in data.funds; failures appear separately in data.errors with the original cik and an error message. data.total_requested counts input entries and data.total_returned counts successful reports. No per-fund status field or top-level coverage meta block is returned.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
ciksbodyrequired——JSON array of 1-20 CIK strings, zero-padded or bare. Empty arrays and more than 20 entries return 400. Send an array, not comma-separated text or JSON encoded inside a string.["1067983","1649339"]
periodqueryoptional——Report period YYYY-MM-DD. Applied to all funds.2025Q4
detailqueryoptionalfull—'summary' or 'full'. Summary returns top 10 holdings only.—
sizequeryoptional50—Holdings per page (only for detail=full). Accepted alias: `limit`.50
fromqueryoptional0—Pagination offset (only for detail=full). Accepted alias: `offset`.0

Response schema

FieldTypeNullableDescription
statusstringnoRequest status; success responses contain data with separate successful and failed entries.
request_idstringyesRequest identifier supplied by the request middleware.
timestampstringnoUTC response timestamp.
data.fundsarraynoSuccessful fund reports containing fund identity, filing metadata and holdings. Summary adds holdings_count; full adds analysis totals, sector_allocation and _meta.pagination.
data.errorsarraynoFailed input entries, each containing cik and error.
data.errors[].cikanyyesOriginal JSON input value for the failed entry, preserved without conversion.
data.errors[].errorstringnoThe failure message for this entry.
data.total_requestedintegernoNumber of entries in the requested CIK array.
data.total_returnedintegernoNumber of successful fund reports in data.funds.

Sample response

·
  • "status": "success"
  • "request_id": null
  • "timestamp": "2026-09-27T12:00:00Z"
  • "data":
    • "funds":
    • "errors":
    • "total_requested": 2
    • "total_returned": 1
    }
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl -X POST "https://api.finradar.ai/api/v1/form-13f/fund/bulk?period=2025Q4&size=50&from=0" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ciks": "[\"1067983\",\"1649339\"]"
}'

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).