Skip to main content
You received a notice of opposition and need to decide whether to answer, negotiate, or narrow the application. This recipe shows how to profile the opposer across prior proceedings, cover the other names it files under, inspect the contested mark, and find portfolio marks that already have proceedings. Use Search Proceedings for cross-mark dispute sets, Trademark Proceedings for a single mark’s dispute history, and Search Trademarks with has_proceedings=true when you need marks that have any proceeding history.

Prerequisites

  • A Signa API key with trademarks:read
  • The opposer’s name as the office records it (the notice of opposition names it)
  • The contested trademark ID, if you are already responding to a specific opposition
US (TTAB) dates. filed_date is set on about 99% of US oppositions and cancellations, so filed_date_gte, sort=filed_date and filed_year count them correctly. Ex parte appeals do not carry a filing date yet, and decision_date is set on only a small share of US rows, so avoid decision-date filters for TTAB.
1

Start with the named opposer

Search proceedings where a party with the opposer’s name appeared as the challenger. q matches a case-insensitive substring of the party name the office recorded, and when you add party_role=opponent that same party must be the opponent. For TTAB oppositions, the challenger is usually the opponent.
q finds every proceeding where the name appears. party_owner_id and party_entity_id return only parties Signa has linked to that owner or entity. A link requires the party’s name, company suffix included, to match an owner of the marks in the dispute, so a merely similar name is not linked. Parties without a link are not returned, such as most Canadian and Australian opponents (they are matched only against the owner of the mark under challenge) and names that match only without a company suffix. Use the owner or entity filter when you hold the opposer’s own_ or ent_ ID and want only that company; use q to search by name or when you need every case.
There is a second way in when you hold the opposer’s mark rather than its name. Every proceeding is linked to each mark involved, on both sides: trademark_role=contested is the mark the proceeding targets, trademark_role=asserted is a mark the opposer pleaded. So GET /v1/trademarks/{id}/proceedings?trademark_role=asserted on the opposer’s registration lists the oppositions that registration has been used to file, and GET /v1/proceedings/{id} returns trademarks[] with every mark in the case and its role. party_role is about the named parties; trademark_role is about the marks.
Because outcome is from the challenger perspective, challenger_won and default_judgment are wins for the opposer when party_role=opponent. The party_role buckets count every party on the matching cases, so a respondent bucket next to opponent is expected: it counts the applicants the opposer went after. challenger_lost is a loss. settled, withdrawn, and pending are not win/loss buckets, so keep them out of win-rate denominators.
2

Cover the opposer's other names

q matches a substring of one recorded party name. It does not establish that two names belong to the same business, and it does not expand to a parent, subsidiaries or affiliates. A shorter substring such as Acme Bev catches spelling and suffix variants (Acme Beverages Inc., ACME BEVERAGES LLC) but can also catch unrelated parties, so check the names on each case with Get Proceeding before counting it. If the opposer also files under a different name (a parent company, a former name, a regional subsidiary), run one query per name and merge the results yourself, deduplicating by id. Drop office_code to see every office that records proceedings.
In this cross-office profile, decided outcomes are 8 + 1 + 3 = 12, and challenger wins are 8 + 1 = 9, so the opposer’s decided win rate is 75%. The duration_days field on each returned proceeding lets you compute case length over the full paginated set. nice_class can sum above the proceeding count because one multi-class proceeding contributes to each contested class.
3

Inspect the contested mark

Use the per-mark proceedings endpoint when you need the dispute history attached to the application you are defending.
This mark-level view is the quickest way to confirm the active parties, the case number, and whether the mark has any prior opposition or cancellation history beyond the current matter.
4

Find other marks with proceeding history

Use trademark search with has_proceedings=true to find marks in a portfolio that already have one or more proceedings. This is useful when you want comparable marks, repeat disputes, or a portfolio-level risk queue.
After you find the relevant marks, call Trademark Proceedings for each mark that needs party-level detail.

Decision Checklist

  • Compare outcomes across the opposer’s name variants. One recorded name may understate a corporate group’s dispute pattern, and q does not add related companies for you.
  • Treat default_judgment as a challenger win, but keep it visible because it means the respondent defaulted.
  • Exclude settled, withdrawn, and pending when calculating a decided win rate.
  • Review duration_days across decided proceedings to estimate how long a fight may run.
  • Use nice_class and office_code buckets to see whether the opposer concentrates in the classes and offices that matter to your mark.