Skip to main content

Why This Matters

When filing a trademark, you must specify exactly what goods or services your mark covers. This isn’t freeform — each trademark office maintains a list of pre-approved descriptions they accept. Using the right wording avoids examiner objections, which cause delays and extra costs. The challenge: different offices accept different wording. A description accepted at the USPTO may be rejected at the EUIPO, and vice versa. Signa solves this by aggregating 96,000+ pre-approved descriptions from the world’s two largest term databases, merged into a single searchable API.

The Nice Classification System

All trademark offices worldwide use the Nice Classification — a system of 45 classes that categorize goods and services:
  • Classes 1–34: Goods (physical products, chemicals, software, etc.)
  • Classes 35–45: Services (advertising, legal, education, etc.)
Use GET /v1/classifications?type=goods or ?type=services to filter, or fetch all 45 with no filter.
The 45 class headings are universal — every office uses them. But the specific descriptions within each class are where offices diverge. For example, Class 9 covers “scientific and electronic apparatus.” But when you file, you can’t just write “Class 9.” You need a specific description like:
“Downloadable computer software for managing cryptocurrency transactions”
Whether that exact wording is accepted depends on which office you’re filing at.

How Office Acceptance Works

There is no single universal list of accepted descriptions. Instead, there are independent databases maintained by different offices, with partial overlap:
The Harmonised Database (HDB), maintained by EUIPO via TMClass, is the closest thing to an international standard for specific G&S descriptions. Originally an EU initiative, it has been adopted by 63+ offices worldwide — all 27 EU national offices plus 36 non-EU offices including those in Asia, Africa, Latin America, and the Caribbean. When you select an HDB term, it is guaranteed accepted at all participating offices without examiner objection. The USPTO ID Manual is the US-specific database, maintained independently with its own editorial standards. Signa aggregates both and merges them at query time:
DatabaseTermsAccepted atIn Signa
Harmonised Database (HDB/TMClass)43,000+63+ offices worldwide (all EU + 36 non-EU adopters)Yes
USPTO ID Manual70,000+USPTO (24,000+ also cross-accepted via TM5)Yes
TM5 ID List~17,000USPTO, EUIPO, JPO (Japan), KIPO (Korea), CNIPA (China)Yes (tagged)
What about WIPO’s Madrid G&S Manager (MGS)? The HDB explicitly incorporates MGS terms — it’s a superset, not a separate database. WIPO’s ~10,000 base terms and office-contributed additions all flow into the HDB. By ingesting TMClass, we already have MGS coverage.
The TM5 list is not a separate database — it’s the overlap between EUIPO and USPTO terms that has been formally harmonised across all five TM5 partner offices. In the API response, TM5 terms have is_harmonised: true and show all five offices in accepted_offices.

Searching for Terms

Use the classification terms endpoint to search within a specific Nice class:
curl -G "https://api.signa.so/v1/classifications/9/terms" \
  -H "Authorization: Bearer sig_live_YOUR_KEY" \
  --data-urlencode "q=blockchain"
Example Response
{
  "object": "list",
  "data": [
    {
      "term": "Downloadable computer software for managing cryptocurrency transactions on a blockchain",
      "term_key": "downloadable computer software for managing cryptocurrency transactions on a blockchain",
      "is_harmonised": false,
      "accepted_offices": ["USPTO"],
      "source": "uspto_idm",
      "language": "en"
    },
    {
      "term": "Downloadable software for blockchain-based inventory management",
      "term_key": "downloadable software for blockchain-based inventory management",
      "is_harmonised": false,
      "accepted_offices": ["USPTO"],
      "source": "uspto_idm",
      "language": "en"
    }
  ],
  "has_more": false,
  "pagination": { "cursor": null }
}

Understanding the Response Fields

FieldWhat it tells you
termThe exact description text. Use this wording in your filing.
accepted_officesWhich offices accept this exact wording. If you see ['USPTO', 'EUIPO'], it works at both.
is_harmonisedtrue = accepted at all TM5 offices (US, EU, Japan, Korea, China). Safest for multi-jurisdiction filings.
sourceWhere this term came from: tmclass (EUIPO), uspto_idm (USPTO).

Multi-Source Merging

When the same term exists in both the EUIPO and USPTO databases, Signa merges them into a single result with combined accepted_offices:
Database rows (internal):
  tmclass:   "Acetone" → accepted_offices: ['EUIPO']
  uspto_idm: "Acetone" → accepted_offices: ['USPTO', 'EUIPO', 'JPO', 'KIPO', 'CNIPA']

API returns (merged):
  "Acetone" → accepted_offices: ['EUIPO', 'USPTO', 'JPO', 'KIPO', 'CNIPA']
This happens automatically — you always see one result per unique term with the full set of offices.

Common Patterns

Find descriptions for a product

Search with product keywords to find pre-approved descriptions:
# "What descriptions can I use for my AI legal research tool?"
curl -G "https://api.signa.so/v1/classifications/42/terms" \
  -H "Authorization: Bearer sig_live_YOUR_KEY" \
  --data-urlencode "q=legal research software"

Find terms accepted at a specific office

Filter the results client-side by accepted_offices:
const terms = await signa.references.classificationTerms(9, {
  q: "software",
  limit: 100,
});

// Terms accepted at USPTO
const usptoTerms = terms.data.filter(t =>
  t.accepted_offices.includes("USPTO")
);

// Terms accepted at BOTH USPTO and EUIPO
const bothOffices = terms.data.filter(t =>
  t.accepted_offices.includes("USPTO") &&
  t.accepted_offices.includes("EUIPO")
);

Find the safest wording for multi-jurisdiction filings

Use harmonised_only=true to get only TM5-harmonised terms — these are guaranteed accepted at the five largest trademark offices:
curl -G "https://api.signa.so/v1/classifications/9/terms" \
  -H "Authorization: Bearer sig_live_YOUR_KEY" \
  --data-urlencode "q=computer software" \
  --data-urlencode "harmonised_only=true"
These terms carry the lowest risk of examiner objection across jurisdictions.

Not sure which class?

If you’re not sure which Nice class your product falls into, search for it across the classification headings:
# Search class titles and descriptions
curl -G "https://api.signa.so/v1/classifications" \
  -H "Authorization: Bearer sig_live_YOUR_KEY" \
  --data-urlencode "q=software"
This searches the 45 class headings. Software-related goods are typically in Class 9, while software-related services are in Class 42.

Data Coverage

Signa’s classification term database is updated automatically:
SourceUpdate frequencyCoverage
Nice Classification headingsMonthly45 classes, ~10,000 base terms
EUIPO TMClass (Harmonised Database)Quarterly43,000+ terms accepted across 63+ offices
USPTO ID ManualMonthly70,000+ terms accepted at USPTO
Vienna Classification (design codes)Monthly2,100+ visual element codes
Data freshness: The Nice taxonomy updates once per year (January). Individual terms are added throughout the year by each office. Signa syncs monthly to capture additions while keeping API response times fast.

Classification Terms API

Full endpoint reference with parameters and response schema

List Classifications

Get all 45 Nice class headings

Trademark Clearance

Use classifications in a full clearance workflow

Class Coverage Audits

Analyze class distribution across a portfolio