Skip to main content
You cover a basket of listed companies and you want their trademarks keyed the way you already think about them: by ticker. Give Signa a ticker like NKE and it resolves to the underlying entity, hands you the marks Signa has linked to the company and its GLEIF-reported subsidiaries, and lets you subscribe to future filings. This works because Signa links public-company facts onto entities: SEC tickers on the members that matched, plus a listing decoration that flows a listed parent’s ticker down to its subsidiaries through the GLEIF corporate family. So a ticker is not just the parent’s own marks: it reaches every entity in the listed group that GLEIF and Signa’s entity linking connect to it. See the coverage caveats for what that can miss.

Prerequisites

  • A Signa API key with trademarks:read scope
  • A stock ticker (uppercased, for example NKE or AAPL)

1

Resolve the ticker to an entity

Filter GET /v1/entities by ticker. The match is subsidiary-inclusive, so ticker=NKE returns Nike and its subsidiary entities. Sorting by -trademark_count puts the largest portfolios first, which is not necessarily the listed parent: an IP-holding subsidiary can hold more marks than its parent.
The list rows do not say which entity is the listed parent. Take any row’s id (an ent_*) to the next step, where the listing block identifies the parent.
2

Read the listing block

Fetch the entity with GET /v1/entities/{id}. When an entity is listed or a subsidiary of a listed company, the response carries a listing block. The block is omitted entirely when there is no listing, so its absence means “no listing or unknown,” never confirmed-private.
Listing block
Read it as two axes:
  • status: listed (the entity is itself publicly listed) or subsidiary_of_listed (it inherits a ticker from a listed ancestor).
  • source: direct (the ticker is the entity’s own) or inherited (the ticker comes from the nearest listed ancestor, surfaced in listed_ancestor). source is just status restated: listed is always direct, subsidiary_of_listed is always inherited.
A directly-listed parent (status: "listed", source: "direct") has listed_ancestor: null. That entity is the parent, so keep its id. For a subsidiary, listed_ancestor.id points at the listed parent when it resolves to a live entity in our system; use that id for the next step. It is null when the ancestor exists only in the GLEIF graph, in which case check the other rows from step 1 for the one with status: "listed".
3

Pull the linked portfolio, known subsidiaries included

Call GET /v1/entities/{id}/trademarks on the listed parent with include_family=true. That expands the query to the entity and every descendant in its GLEIF family tree, so one call returns the marks Signa has linked to the listed group, across the offices GET /v1/offices returns. Drop include_family (or set it false) to get just that one entity.
The full Search Trademarks filter set applies here (status, Nice classes, jurisdiction, date ranges), so you can narrow the group’s portfolio to, say, active class 25 marks filed this year. A family graph larger than the walk bounds returns 422 with error.reason family_graph_too_large.
4

Stand up a public-company watch

To be notified of future filings under the ticker, add ownerTicker to a watch’s filters. Watch filters share the same public-company/listing fields as search, so ownerTicker is subsidiary-inclusive too: ownerTicker: "NKE" fires on Nike’s own filings and its subsidiaries’ filings alike.Every watch needs a base scope from its watch_type (see Monitoring watches); ownerTicker is an additional filter layered on top. A common preset scopes a class watch to the Nice classes you care about and narrows it to the ticker, so you only hear about the group’s filings in your core classes:
cURL
Prefer a broader net? Swap ownerTicker for "ownerPubliclyTraded": true to watch new filings by any owner with an active listing association (a confirmed SEC ticker, or a resolved entity that is listed or a subsidiary of one), still scoped by your chosen classes. Preview the volume with POST /v1/watches/preview before you commit, and wire delivery through a webhook.

Coverage caveats

Public-company linkage is confirmed-positive only, and this shapes how you read a result:
  • Absent is not private. A missing ticker, publicly_traded: false, or an omitted listing block means no confirmed match was found, not that the company is confirmed private or unlisted. Never infer “private” from absence.
  • Coverage is strongest for large caps. Linkage leans on SEC tickers and GLEIF LEI reporting, so widely-held, LEI-reporting issuers resolve best. Thinly-covered small caps and non-reporting subsidiaries are likelier to be missing an edge.
  • Subsidiary reach depends on GLEIF Level 2. The inherited-ticker walk and include_family both follow the GLEIF corporate family, which covers LEI-reporting companies only. An IP-holding subsidiary with no reported parent edge is not reached from the parent, and an absent parent/subsidiary edge does not imply the absence of a corporate relationship.
  • A portfolio is only as complete as the owner linking. An entity’s marks are the marks of the owner records linked to it. An owner record not yet linked to the entity is not included, and one company can still be split across more than one entity. For a portfolio you must not under-count, also look up the company’s owner records by name with GET /v1/owners.