Signa’s search is powered by OpenSearch with custom analyzers for trademark-specific matching.
Search Strategies
By default, every search runs all four strategies simultaneously and merges the results:
| Strategy | What it does |
|---|
exact | Case-insensitive exact keyword match — the entire mark text must match the query exactly |
phonetic | Catches sound-alikes regardless of spelling (e.g., “SIGNA” / “CYGNA” / “SYNNA”) |
fuzzy | Tolerates typos and minor character differences (fuzziness is always AUTO internally) |
prefix | Matches marks that start with the query text |
You can restrict which strategies are used by passing the strategies array:
curl -X POST https://api.signa.so/v1/trademarks/search \
-H "Authorization: Bearer $SIGNA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "signa",
"strategies": ["exact", "phonetic"]
}'
If you omit strategies, all four are used. This is the recommended default for trademark clearance searches since it gives the broadest coverage.
There is no user-controllable fuzziness parameter. Fuzzy matching always uses AUTO internally, which adjusts edit distance based on the length of the query term.
Filtering
Narrow results with filters. Date filters use object format with gte/lt operators:
curl -X POST https://api.signa.so/v1/trademarks/search \
-H "Authorization: Bearer $SIGNA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "signa",
"filters": {
"offices": ["uspto", "euipo"],
"nice_classes": [9, 42],
"status_stage": "registered",
"filing_date": { "gte": "2020-01-01" }
}
}'
Date filter operators:
| Operator | Meaning |
|---|
gte | Greater than or equal (from date, inclusive) |
lt | Less than (to date, exclusive) |
You can use both together for a range: "filing_date": { "gte": "2020-01-01", "lt": "2025-01-01" }.
Aggregations
Get faceted counts alongside results. Available aggregation fields:
| Field | Description |
|---|
office_code | Counts by trademark office |
nice_classes | Counts by Nice classification |
status_stage | Counts by status stage |
filing_year | Counts by filing year |
mark_feature_type | Counts by mark type (word, figurative, etc.) |
mark_legal_category | Counts by legal category (trademark, certification, etc.) |
filing_route | Counts by filing route (direct_national, madrid, etc.) |
{
"query": "signa",
"options": {
"aggregations": ["office_code", "status_stage", "nice_classes"]
}
}
Response Scoring
Search results include a relevance_score field, which is a normalized score from 0 to 100 (higher is more relevant). Results are sorted by relevance score in descending order by default.
Suggest
For autocomplete and typeahead:
GET /v1/trademarks/suggest?q=sig&limit=10