FactSet Ownership client library for .NET
$ dotnet add package FactSet.SDK.FactSetOwnershipFactSet's Fund Ownership API gives access to both Holdings, Holders, and Transactions data.
Factset's Holdings endpoints gives access to all the underlying securities and their position details held within a given fund. Fund Types supported include Open-End Mutual Funds, Closed-end Mutual Funds, and Exchange Traded Funds. Security Holders information retrieves all "holder types" and their positions across institutions, funds, insiders, and stakeholders. FactSet also provides extensive insider and institutional transactions data for multiple countries including the United States, China, and Canada.
The FactSet Ownership and Mutual Funds database collects global equity ownership data for approximately 50,000 institutions, 60,000 unique Mutual Fund portfolios, and 400,000 Insider/Stakeholders from around 110 countries. For more details review our Data Collection methodology.
This .NET package is automatically generated by the OpenAPI Generator project:
For more information, please visit https://developer.factset.com/contact
dotnet add package FactSet.SDK.Utils
dotnet add package FactSet.SDK.FactSetOwnership -v 1.3.0
nuget install FactSet.SDK.Utils
nuget install FactSet.SDK.FactSetOwnership -Version 1.3.0
[!IMPORTANT] The parameter variables defined below are just examples and may potentially contain non valid values. Please replace them with valid values.
using System;
using System.Net;
using System.Threading.Tasks;
using FactSet.SDK.Utils.Authentication;
using FactSet.SDK.FactSetOwnership.Api;
using FactSet.SDK.FactSetOwnership.Client;
using FactSet.SDK.FactSetOwnership.Model;
namespace Example
{
public static class GetBatchDataExample
{
public static async Task Main()
{
var config = new FactSet.SDK.FactSetOwnership.Client.Configuration();
// Examples for each supported authentication method are below,
// choose one that satisfies your use case.
/* (Preferred) OAuth 2.0: FactSetOAuth2 */
// See https://github.com/FactSet/enterprise-sdk#oauth-20
// for information on how to create the app-config.json file
//
// The confidential client instance should be reused in production environments.
// See https://github.com/FactSet/enterprise-sdk-utils-dotnet#authentication
// for more information on using the ConfidentialClient class
ConfidentialClient confidentialClient = await ConfidentialClient.CreateAsync("/path/to/app-config.json");
config.OAuth2Client = confidentialClient;
/* Basic authentication: FactSetApiKey */
// See https://github.com/FactSet/enterprise-sdk#api-key
// for information how to create an API key
// config.Username = "USERNAME-SERIAL";
// config.Password = "API-KEY";
var apiInstance = new BatchProcessingApi(config);
var id = "id_example"; // Guid | The Batch Request identifier. This value is returned in the response to a request with `batch=Y`, and is used to check the status and retrieve the results of the request.
try
{
// Returns the response for the Batch Request
BatchProcessingApi.GetBatchDataResponseWrapper result = apiInstance.GetBatchData(id);
switch (result.StatusCode)
{
case (HttpStatusCode)200:
Console.WriteLine(result.Response200);
break;
case (HttpStatusCode)202:
Console.WriteLine(result.Response202);
break;
}
}
catch (ApiException e)
{
Console.WriteLine("Exception when calling BatchProcessingApi.GetBatchData: " + e.Message );
Console.WriteLine("Status Code: "+ e.ErrorCode);
Console.WriteLine(e.StackTrace);
}
}
}
}
To use the API client with a HTTP proxy, setup a System.Net.WebProxy
Configuration c = new Configuration();
System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/");
webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
c.Proxy = webProxy;
All URIs are relative to https://api.factset.com/content/factset-ownership/v1
| Class | Method | HTTP request | Description |
|---|---|---|---|
| BatchProcessingApi | GetBatchData | GET /batch-result | Returns the response for the Batch Request |
| BatchProcessingApi | GetBatchStatus | GET /batch-status | Returns the latest status and metadata for the Batch Request. |
| FundHoldingsApi | GetOwnershipHoldings | GET /fund-holdings | Get underlying holdings information for a requested fund identifer. |
| FundHoldingsApi | PostOwnershipHoldings | POST /fund-holdings | Get holdings for a list of funds. |
| SecurityHoldersApi | GetSecurityHolders | GET /security-holders | Get security ownership data for requested security identifers. |
| SecurityHoldersApi | PostSecurityHolders | POST /security-holders | Get security ownership data for a list of requested securities. |
| TransactionsApi | GetOwnershipInsiderTransactions | GET /transactions/insider | Get insider transactions details for a list of requested identifiers. |
| TransactionsApi | GetOwnershipInstitutionalTransactions | GET /transactions/institutional | Get institutional transaction details for a list of requested identifiers. |
| TransactionsApi | PostOwnershipInsiderTransactions | POST /transactions/insider | Get insider transactions details for a list of requested identifiers. |
| TransactionsApi | PostOwnershipInstitutionalTransactions | POST /transactions/institutional | Gets institutional transaction details for a list of requested identifiers. |
Please refer to the contributing guide.
Copyright 2026 FactSet Research Systems Inc
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.