The trademarks endpoint is exposed under both GET /v1/trademarks and POST /v1/trademarks. Both methods call the same service and return the same response shape. Pick whichever fits your call site.
Complex queries, long filter lists, aggregations, debugging
A few advanced options live only on POST because they do not fit in a query string: options.aggregations and options.aggregations_only. Everything else (filters, strategies, pagination, highlights, include_total, sort) works identically on both.For the full parameter reference, see List Trademarks. The sections below show concrete usage patterns you can copy into your own code.
If you omit strategies, exact and fuzzy are used. For comprehensive trademark clearance searches, pass all four strategies explicitly: exact,phonetic,fuzzy,prefix.
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.
Narrow results with filters. On POST, filters are nested under a filters object. On GET, they are flat query parameters using comma-separated values for arrays and flat underscore operators for date ranges.
On POST, filters must be nested under filters. Passing offices, nice_classes, status_stage, or other filter keys at the top level returns a validation_error with unrecognized_keys. There is also no top-level search_type or type field. Strategy selection happens through the strategies array.
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" } (POST) or filing_date_gte=2020-01-01&filing_date_lt=2025-01-01 (GET).
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.