Finding the Principals of a Business
A common KYB and due diligence task is identifying the humans who own or control a business—the officers, owners, and registered agents named in official filings. This guide explains the data model behind that relationship and shows a complete query for surfacing it.
How Principals Are Modeled
In the Enigma data model, LegalEntity can be thought of as an abstract super class. Every legal entity is always associated with one of these two entities:
Person— A natural person (individual human).RegisteredEntity— A formally registered business organization (LLC, Corporation, etc.).
Very often the principals who control a business are found on the Registration that is filed with the Secretary of State. Registrations often name specific individuals. In our data model, the relationship between a Person and a Registration is represented by the Role entity — as owner, officer, registered agent, and so on. Each Role points back to a LegalEntity, and you can tell whether that entity is a person by checking whether legalEntityType is "Person".
The query path is:
Brand → legalEntities → registeredEntities → registrations → roles → legalEntities → names
The extra registeredEntities hop reflects the data model: LegalEntity is abstract. The concrete subtype RegisteredEntity is what the SoS filings (registrations) is connected to. A LegalEntity that is a natural person has no registeredEntity associated with it — that (plus the 'legalEntityType==Person') is how you know it is a Person rather than a RegisteredEntity (e.g. Corporation, LLC, etc.).
Tier Requirements
| Step | Field | Tier Required |
|---|---|---|
| Brand → Legal Entities | legalEntities | Core |
| Legal Entity → Registered Entities | registeredEntities | Premium |
| Registered Entity → Registrations | registrations | Premium |
| Registration → Roles | roles | Plus |
| Role → Legal Entities (persons) | legalEntities | Core |
You need at minimum Plus + Premium tiers to traverse this full path.
Query: Find Principals of a Business
The query below searches for a brand by name and location, then traverses to its domestic registrations to surface the roles and the persons named in them.
Request
query FindBusinessPrincipals {
search(searchInput: {
name: "Joe's Pizza"
address: { city: "Brooklyn", state: "NY" }
entityType: BRAND
conditions: { limit: 1 }
}) {
... on Brand {
id
names(first: 1) {
edges {
node {
name
}
}
}
legalEntities(first: 5) {
edges {
node {
names(first: 1) {
edges {
node {
name
legalEntityType
}
}
}
registeredEntities(first: 3) {
edges {
node {
registrations(
first: 5
conditions: {
filter: { EQ: ["jurisdictionType", "domestic"] }
orderBy: ["issueDate DESC"]
}
) {
edges {
node {
registeredName
registrationState
status
subStatus
roles(first: 20) {
edges {
node {
jobTitle
jobFunction
legalEntities(first: 1) {
edges {
node {
names(first: 1) {
edges {
node {
name
legalEntityType
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Reading the Response
Each role node in the response represents a person or entity named in an SoS filing. To identify the individual:
jobTitle— the role title as listed in the filing (e.g.,"Registered Agent","President","Member")jobFunction— a normalized job function (e.g.,"Accounting","Operations")legalEntities[].names[].name— the name of the legal entity performing this rolelegalEntities[].names[].legalEntityType—"Person"means this is a natural person; any other value (e.g.,"LLC") means a business entity holds the role
To limit results to natural persons, filter on legalEntityType:
roles(
first: 20
conditions: {
filter: { EQ: ["legalEntities.names.legalEntityType", "Person"] }
}
)
Related Resources
- Understanding Enigma Data — Full explanation of the LegalEntity supertype model
- Registration Attribute Reference — Fields available on registration filings
- Role Attribute Reference — Fields available on role records
- GraphQL API Search Reference — How to use
SearchInputparameters