Skip to main content
GET
Search Citations

When To Use This

Use this endpoint when the question spans marks rather than sitting on one record. Each row is one citation occurrence: one prior mark an examiner cited against one application in one office action. The corpus is a record of which marks an office has actually treated as a bar to registration, and what happened next. Typical uses: pull every §2(d) citation an office issued in a date window, find every application a specific registration has been cited against, or resolve an office-printed registration number to the mark behind it. For one mark at a time, use Trademark Citations and Trademark Cited By.
Coverage today is USPTO only. Citations are extracted from USPTO office actions and cover §2(d) likelihood-of-confusion refusals. Requests filtered to any other office return an empty list, including offices whose examiners never cite prior marks at all. Check capabilities.citations on List Offices to see the state of any office programmatically, rather than inferring coverage from an empty response.

Freshness

Citations are extracted hourly from stored office actions. Dispositions are recomputed once a day, so a newly extracted citation carries disposition: null until the next daily refresh, which can be up to about 24 hours. A disposition can also change on a later run as prosecution continues. disposition_as_of is stamped when the current disposition was first derived or last changed, and deliberately does not move when a daily run re-derives the same value. An unchanged timestamp means the disposition has been stable, not that the refresh stopped running.

Office Coverage And capabilities.citations

List Offices and Retrieve Office carry capabilities.citations, which is the programmatic answer to “should I expect anything here?”. not_applicable covers the opposition-only registries, where earlier-rights conflicts are left to third parties rather than raised by the examiner. Of the offices live today, the EUIPO (EM), INPI France (FR) and the Swiss IPI (CH) all work this way. WIPO (WO) is not_applicable for a narrower reason: the International Bureau does formalities only and never examines the mark, so substantive refusals come from the designated national offices under their own codes. An empty citation list for these offices is not a coverage gap, and it will not become non-empty.

Query Parameters

All filters are optional and combine with AND. An unfiltered request is allowed and returns the newest citations across the corpus.
string
Filter by issuing office, comma-separated (e.g. US or US,EM). Values are uppercase ST.3 office codes; legacy lowercase codes (e.g. uspto, and eu for EUIPO) are accepted as permanent aliases, and the two forms can be mixed in one list. Up to 100 values. An unrecognized code returns 200 with an empty list rather than an error, so polling for a not-yet-covered office is safe.
string
Filter by how the citation resolved, comma-separated. One or more of citation_issued, maintained, withdrawn, abandoned_after, published. Rows whose disposition has not been computed yet are excluded when this filter is supplied.
string
Filter by the stage the citation reached, comma-separated. One or both of nonfinal, final. final includes citations first raised in a nonfinal action that a later final action maintained.
string
Filter by refusal ground, comma-separated. 2d is the only value today, the USPTO §2(d) likelihood-of-confusion ground. This vocabulary is office-scoped rather than canonical across offices.
string
Restrict to citations issued against one citing application (tm_...).
string
Restrict to citations naming one prior mark (tm_...). This matches on the resolved link and additionally on that mark’s own application and registration numbers for unlinked citations from the same office, the same predicate Trademark Cited By uses, so the two views return the same rows.
string
Exact cited reference, as an application or registration number. Punctuation is ignored, digits are matched. Requires office: references are only unique within an office, so an office-less lookup is rejected with 400. Use this to go from a number an examiner printed to the citations that name it, including citations Signa has not linked to a record.
string
Office action date >= (YYYY-MM-DD).
string
Office action date <= (YYYY-MM-DD).
string
default:"-action_date"
-action_date for newest first, action_date for oldest first. No other sort fields. Sort is bound into the pagination cursor, so it cannot be changed mid-walk.
integer
default:"20"
Page size (1-100).
string
Opaque cursor from the previous response’s pagination.cursor.
Undated actions sort last in both directions, with id as the final tiebreaker.

Response

string
Always list.
object[]
boolean
Whether more citations are available.
object
Cursor for the next page.
string
Unique request identifier for support and debugging.

Disposition Values

A citation carries exactly one disposition, derived from the citing application’s later prosecution events and from whether the citation reappeared in subsequent office actions. When more than one signal applies, the strongest one wins, in this order: published, maintained, abandoned_after, withdrawn, citation_issued.

Worked Example: Finding The Marks That Actually Block

A clearance search tells you which registrations look similar. It does not tell you which ones an examiner has ever used to refuse somebody. This endpoint does, and the disposition filter is what separates the two. Ask for disposition=maintained,abandoned_after:
Those two values are the ones that matter, for different reasons:
  • maintained means the examiner did not back down. The refusal was carried into a final office action, so the office has committed to the position that this prior mark bars the application. It is the cleanest evidence that a mark is a live obstacle.
  • abandoned_after means the application died after being cited and was never revived. The applicant walked away rather than fight, which is the practical outcome a clearance search is trying to predict, even though the office never ruled.
And the ones to leave out, deliberately:
  • withdrawn means the examiner dropped the citation in a later action. The prior mark was raised and then set aside, so it is weak evidence of blocking, and sometimes evidence of the opposite.
  • published means the application went on to publish or register anyway. The cited mark did not stop it.
  • citation_issued means prosecution has not produced a signal yet. Including it mixes unresolved cases into a set you are treating as resolved.
To turn that into a per-mark verdict during clearance, run it from the cited mark rather than across the corpus. Take a candidate conflict from a search, then ask how that mark has behaved as a prior right:
Count distinct applications, not rows. A row is one citation occurrence in one office action, so an application cited in both a nonfinal and a final action contributes two rows. Group by trademark.id, falling back to application_ref when trademark is null. A registration that blocked a dozen distinct applications in the last three years is an owner whose mark the office reaches for routinely. One with none, despite years on the register and plenty of similar filings around it, is a much softer conflict. Pair it with the unfiltered cited-by set to get a rate rather than a raw number: a mark cited against twenty applications where eighteen citations were withdrawn or published is not the same risk as a mark cited against five where all five stuck. Two caveats worth building around. Rows with cited_trademark: null are real citations that Signa could not link to a record, so count them; on the per-mark cited-by endpoint they are already matched by reference for you. And abandoned_after is a censored observation, not a ruling: the application stopped, and the citation is one plausible reason among several.

Example Response

Code Examples

Resolve An Office-Printed Number

cited_ref plus office turns a number on an office action into the citations that name it, and into the mark behind it when Signa holds the record.
cURL

Errors

An unrecognized office is not an error. It returns 200 with an empty list.