FactSet Concordance API

  • SECTIONS
  • Overview
  • API Definition
  • SDK Libraries
  • Notebooks
  • Code Snippet
  • Changelog
Overview

FactSet Concordance API:

The FactSet Concordance API enables Application Developers and Data Scientists to programmatically discover the FactSet Identifier for a specific Entity or Person based on attributes, such as name, URL, and location. FactSet Identifiers are mapped to industry-standard identifiers, as well as to a comprehensive set of reference data and unique content, to enhance the ability to quickly connect content sets.
Using the submitted attributes, the FactSet Concordance API leverages FactSet’s extensive Entity Master, People, and Symbology databases to return potential candidate matches and a proposed match. The result is a concorded FactSet Identifier that can then be used as input throughout FactSet's expanding catalog of Content using our Content APIs or Standard DataFeeds.

There are two types of workflows supported in the API:

  • Entity & People Match: The first workflow follows traditional API conventions in that a request is accepted and a response is returned synchronously enabling the concordance of up to 25 names in a single request. The response returns a list of 20 candidates as well as a proposed match.
  • Entity & People Match - Bulk: The second workflow allows you to input a large list of names within a .CSV file in a single request. With this workflow, a task is created for uploading a set of queries. Once the task has completed, the client retrieves the concordance results through the /entity-decisions or /people-decisions endpoint. Note that in the Bulk workflow, only the matches for the records are returned. Candidates are not included.

Once the service has provided a list of concorded FactSet Identifiers, you can then use our Entity Mappings and People Mappings endpoints to further review the universe of mapped identifiers or modify existing records.

Related Solutions:

  • Concordance in Snowflake: The Concordance Snowflake endpoints retrieve a list of entity matches within the Snowflake environment to easily link propriety and third-party content. For more information, please visit FactSet Concordance Service on Snowflake and the Sample Use Cases section below. These endpoints aren't not directly accessible to our clients, but rather embedded for use within Snowflake.
    • Make Note - the Snowflake Endpoints expressed in the below specification are not for direct client use, but used to enable use of Concordance within Snowflake.
  • FactSet Concordance Application: The FactSet Concordance Application provides a user-friendly web interface to self-serve their universe of concorded names and FactSet Entity Identifiers and make new mappings.
API Definition
SDK Libraries
Notebooks
Getting Started - Jupyter Notebook
Getting Started - Jupyter Notebook - SDK
Mapping to FactSet Identifiers with Symbology & Concordance APIs
Code Snippet
Sample code to retrieve the entity matches using Concordance API
# Imports
import pandas as pd

# FDS Packages
import fds.sdk.FactSetConcordance # To install, please use "pip install fds.sdk.utils fds.sdk.FactSetConcordance==0.24.2"
from fds.sdk.FactSetConcordance.api import entity_match_api,entity_match___bulk_api,universes_api,mappings_api,snowflake_api,people_match_api,people_mapping_api,people_match___bulk_api
from fds.sdk.FactSetConcordance.models import *
from fds.sdk.utils.authentication import ConfidentialClient

# Authentication using OAuth
configuration = fds.sdk.FactSetConcordance.Configuration(
    fds_oauth_client=ConfidentialClient('<PATH_TO_CONFIG_FILE>') # Path to config file from OAuth registration
)

# Get Entity Match Data
with fds.sdk.FactSetConcordance.ApiClient(configuration) as api_client:
    # Create Instance
    api_instance = entity_match_api.EntityMatchApi(api_client)
    
    # Request Object to Define Parameters
    entity_match_request = EntityMatchRequest(
        input=[
            EntityMatchRequestInput(
                name="Amazon",
                client_id="abc-123",
                country="US",
                state="CT",
                url="www.amazon.com",
                priority="HIGH",
                bbg_figi="BBG009S39JY5",
                bbg_ticker="GOOGL UW",
                bic="ABXXHKH1",
                cik="100331",
                crd="149722",
                cusip="02079K305",
                duns="687741991",
                ein="953540776",
                factset_id="0013TZ-E",
                fitch="47504",
                gvkey="107481",
                gvkey_iid="107481001",
                isin="US02079K305",
                jcn="3120001077477",
                lei="549300A6K7JX8EX2QZ33",
                lxid="LX113630",
                md="823736553",
                red_code="4C933G",
                rssd="1139297",
                sedol="BYZ5YB6",
                spr="301939",
                ticker="PriceTicker",
                ticker_exchange="GOOGL-NAS",
                ticker_region="GOOGL-US",
                ukch="CE012494",
                valoren="685558",
                wkn="A0MU9T",
                additional_context={
                    "key": "key_example",
                },
            ),
        ],
        include_entity_type=[
            "PUB",
        ],
        exclude_entity_type=[
            "EXT",
        ],
        include_entity_sub_type=[
            "AR",
        ],
        exclude_entity_sub_type=[
            "HF",
        ],
        include_parent=False,
        universe_id=1,
    )
    
    # Send Request
    api_response = api_instance.get_entity_match_for_list(entity_match_request)
    
    # Convert to Pandas Dataframe
    results = pd.DataFrame(api_response.to_dict()['data'])
    print(results)
Changelog

2.9.0

Summary

Added candidates count to People Match and Entity Match endpoints. Added filters to the entity-match, entity-mapping and entity-mapping-delete endpoints.

Functionality Additions

  • Added candidatesCount parameter.

Filters added -

  • clientExcludeEntityType
  • clientExcludeEntitySubType
  • clientIncludeEntityType
  • clientIncludeEntitySubType

2.8.0

Summary

Added Additional Context

Functionality Additions

Comma separated list of any additional context information can be added along with other input values that need to be saved for an entity during search. This can be used by Managed Service for any unmapped records.

2.7.0

Summary

Added 6 new symbols.

Functionality Additions

New Symbols:

  • redCode: Markit Reference Entity Identifier symbol type.
  • lxid: Markit Syndicated Loan Identifier symbol type.
  • jcn: Japanese Corporate Number symbol type.
  • gvkeyIid: Compustat Global Company Key and Issue Identifier symbol type.
  • gvkey: Compustat Global Company Key symbol type.
  • factsetId: FactSet -E,-S,-R, -L Permanent Identifier symbol type.

2.6.0

Summary

Added the new /snowflake-entity-mapping endpoint.

Functionality Additions

New Endpoint:

  • /snowflake-entity-mapping: allow Snowflake users to manually save mappings to their universe with a chosen FactSet ID and any other metadata (state, country, url, etc.)

2.5.0

Summary

Added the sort parameter by which we can sort in either ascending or descending order.

Functionality Additions

Sort clientId, createdTime, updatedTime, clientName, entityId fields in ascending or descending order with asc and desc to indicate the order. This parameter is added to the following endpoints:

/entity-universe /people-universe

2.4.0

Summary

Updated the /entity endpoints with the symbology changes.

Functionality Additions

Added new parameters for entity related endpoints as part of the symbology changes. The endpoints with both request and response changes are:

/entity-match /entity-task /entity-mapping

The endpoints with only response change:

/entity-task-status /entity-decisions /entity-universe

2.3.1

Summary

Updated the response fields for People endpoints.

Functionality Additions

Added new response fields for people related endpoints as part of the null standardization.

2.3.0

Summary

Released on 26th May, 2022

New endpoints addition to add the service giving Concordance users the ability to create, specify, and manage the people concordance data

Functionality Additions

New Endpoints:

/people-match

  • Find potential people matches given a person's name.
  • People matches can be retrieved using person's name and other attributes like firstname, middlename and lastname.

/people-universe

  • Retrieve all saved mappings within a requested universe

/people-mapping

  • Saves a single Concordance People Mapping to a given universe.

/people-mapping-delete

  • Delete a Concordance Mapping to the client universe

/people-task

  • Create a People Concordance Task by uploading of a Comma-Separated List file (.csv / UTF-8 encoding) with a list of names and attributes and creation of a task id is mandatory to start the process.

/people-task-status

  • Get the status of the people task created using the /people-task endpoint.

/people-decisions

  • Retrieves the Decisions for an People Task (taskId). The decisions do not include all candidates, but rather the results of concording the requested list of names included in the input file

/universe-statistics

  • Gets the total number of mappings in a universe, as well as the number of mapped, unmapped and indeterminate mappings

Changes

Below changes to the existing endpoints

  • /universe - added a new parameter 'universeType' which helps to specify the type of universe whether it is people or an entity universe
  • /universes - added a new parameter 'universeType' which helps to specify the type of universe whether it is people or an entity universe

2.2.0

Summary

Added additional endpoint which allows users to delete previous entity mappings.

Functionality Additions

New Endpoint:

  • /entity-mapping-delete: allows users to delete a Concordance Mapping in the client universe. When making a post, all exiting values are overwritten in the database with the values passed in the request. Please note that clientId and universeId are required input parameters.

2.1.0

Summary

Added a new Snowflake endpoint.

Functionality Additions

New Endpoint:

  • /snowflake-entity-match: Allows users to perform an entity search and return a snowflake-friendly response, with up to 25 Names per request.

2.0.0

Summary

Major Version Upgrade to v2.0.0. Primary functionality addition of enabling "Universe" controls giving Concordance users the ability to create, specify, and manage where the concordance matches are ultimately saved to.

Functionality Additions

New Endpoints:

  • /universe - create a universe
  • /update-universe - update the metadata for a given universe
  • /universes - view all universes
  • /entity-universe-statistics - view top level universe statistics

/entity-task:

  • Introduce new required request parameter = “universeId”
  • Add - universeId, universeName, userSerial, userFullName
  • Remove our current limit of 10,000 ids per input file

/entity-task-status:

  • Use same response object as “entity-task” endpoint, which adds universeId, universName, userFullName, userSerial.

/entity-universe:

  • Add “universeId” to both request and response model.
  • Make universeId required in request.
  • Restructure response model to remove the “statistics” and simply flatten to include everything under “entities”
  • Create “POST” method, to allow for large list of “clientIds” to be used in request filter

/entity-mapping:

  • Introduce new required request parameter – “universeId”
  • Add “universeId” to response model

* Snowflake v2 will be available on 08-26-2021*