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.
Rows are citation occurrences, not applications. One application cited over the same prior mark in both a nonfinal and a final office action produces two rows. To count distinct applications, group by trademark.id, falling back to application_ref when trademark is null. This endpoint returns no total_count, so a raw row count is both the easiest number to reach for and the easiest to get wrong: it overstates how many applications a mark has actually blocked.
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. The EUIPO (EM), INPI France (FR), the Swiss IPI (CH) and the UKIPO (GB) all work this way, and the DPMA (DE) and the UIBM (IT) are classified the same 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 a not_applicable office is not a coverage gap, and it will not become non-empty. Those codes are illustrative, not a fixed list. capabilities.citations on List Offices is the authoritative, current answer for every office, and it is the one to read programmatically rather than hard-coding office codes from this page.

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 offices: 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 prosecution events and from whether the citation reappeared in subsequent office actions. The disposition is one verdict per (application, cited reference) pair. It is computed across that pair’s whole occurrence history and then written onto every occurrence row for the pair. It is not per row, and it is not per date. action_stage does vary from row to row, but it records the stage that occurrence of the citation reached, not the kind of document the row was extracted from: a citation first raised in a nonfinal action is upgraded to final once a later dated final action maintains the refusal, so a final row can still carry a nonfinal source_document_id. disposition is per pair and describes the citation’s fate overall. So a row with action_stage: nonfinal alongside disposition: maintained is expected, not a data error. It means a different occurrence of this same citation, against the same application, reached a final action. Filter action_stage=final if you want the occurrences that reached final, remembering that those rows include upgraded ones whose source_document_id is a nonfinal action; read disposition from any row of the pair if you want the pair’s outcome. published and abandoned_after are evaluated against the pair’s earliest office action date rather than against the individual row’s date, which is another reason every row of a pair carries the same answer. 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 offices 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 offices value is not an error. It returns 200 with an empty list.