# 2s.io USPTO Trademark Search

> 2s.io USPTO Trademark Search is a paid API for AI agents from 2s.io, paid per call via x402, $0.0024/call, status unknown (last checked 2026-09-14).

Search US trademarks by wordmark text, owner name, or goods/services description, returning full trademark record details from the USPTO register

## Facts

- Endpoint: GET https://2s.io/api/law/trademark-search
- Price: $0.0024/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/2s-io-uspto-trademark-search-0d4c5941
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_wEYZJceOkfIOjSoGOPp0V

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability 2s-io-uspto-trademark-search-0d4c5941
```

Example prompt: Can you search the USPTO trademark register for live trademarks with the wordmark 'Sunrise' in Nice class 25 (clothing), and show me the owner, status, filing date, and goods/services for each result?

## When to prefer this

Use this endpoint when you need to search the USPTO trademark register by text (wordmark, owner, or goods/services) — a capability the USPTO itself offers no public API for. Prefer this over law.trademark-status when you don't have a known serial number and need discovery/search. If you already have a serial number and need detailed prosecution history, use the sibling law.trademark-status endpoint instead.

## Known failure modes

- No results found for query — trademark not in USPTO register or search terms too specific
- Invalid serial/registration number format — returns error or empty result
- Invalid intlClass value — filter silently ignored or returns error
- Query too vague — returns many irrelevant results; refine with field or intlClass filters
- Rate limit or payment failure — x402 payment not processed, returns 402 status

## How this service works

Search US trademarks by wordmark text, owner name, or goods/services — the text search the USPTO offers no public API for. Pass `query` for full-text search (ranked best-match first), or `serial` / `registrationNumber` for an exact record. Filter with `field` (mark|owner|all), `status` (live=registered+pending only, default; all=includes dead/abandoned), and `intlClass` (Nice class, e.g. 9). Returns each mark's wordmark, serial, registration number, status (+ live flag), filing/registration/abandonment dates, owner, international classes, and goods/services. Corpus: USPTO full trademark register (public domain). Use law.trademark-status for live USPTO prosecution detail on a known serial.

## Output

A ranked list of trademark records, each containing: wordmark text, USPTO serial number, registration number, current status (registered/pending/abandoned/etc.) with a live boolean flag, filing date, registration date and/or abandonment date, owner name, Nice international class(es), and goods/services description. Results are ranked by relevance for full-text queries, or return a single exact record for serial/registration number lookups.

## Example request

```json
{
 "input": {
  "type": "http",
  "method": "GET",
  "queryParams": {
   "field": "mark",
   "limit": 10,
   "query": "Apple",
   "offset": 0,
   "status": "live",
   "intlClass": "9"
  }
 }
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "queryParams"
   ],
   "properties": {
    "type": {
     "const": "http"
    },
    "method": {
     "const": "GET"
    },
    "queryParams": {
     "properties": {
      "field": {
       "enum": [
        "mark",
        "owner",
        "all"
       ],
       "type": "string",
       "description": "Which text to search. Default mark."
      },
      "limit": {
       "type": "integer",
       "description": "1–100, default 20."
      },
      "query": {
       "type": "string",
       "description": "Free-text search over wordmark (default), owner, or goods/services."
      },
      "offset": {
       "type": "integer",
       "description": "Pagination offset, default 0."
      },
      "serial": {
       "type": "string",
       "description": "Exact USPTO serial number (digits)."
      },
      "status": {
       "enum": [
        "live",
        "all"
       ],
       "type": "string",
       "description": "live (default) = registered+pending; all includes dead."
      },
      "intlClass": {
       "type": "string",
       "description": "Nice international class filter, e.g. 9 or 009."
      },
      "registrationNumber": {
       "type": "string",
       "description": "Exact USPTO registration number."
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "schema": {
  "type": "object",
  "properties": {
   "ok": {
    "type": "boolean"
   },
   "page": {
    "type": "object",
    "properties": {
     "size": {
      "type": "integer"
     },
     "pages": {
      "type": "integer"
     },
     "number": {
      "type": "integer"
     }
    }
   },
   "items": {
    "type": "array",
    "items": {
     "type": "object",
     "properties": {
      "owner": {
       "type": "string"
      },
      "status": {
       "type": "object",
       "properties": {
        "code": {
         "type": "string"
        },
        "date": {
         "type": "string"
        },
        "live": {
         "type": "boolean"
        },
        "label": {
         "type": "string"
        }
       }
      },
      "markText": {
       "type": "string"
      },
      "filingDate": {
       "type": "string"
      },
      "intlClasses": {
       "type": "array",
       "items": {
        "type": "string"
       }
      },
      "renewalDate": {
       "type": "string"
      },
      "serialNumber": {
       "type": "string"
      },
      "goodsServices": {
       "type": "string"
      },
      "abandonmentDate": {},
      "markDrawingCode": {
       "type": "string"
      },
      "cancellationDate": {},
      "registrationDate": {
       "type": "string"
      },
      "registrationNumber": {
       "type": "string"
      }
     }
    }
   },
   "total": {
    "type": "integer"
   },
   "source": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string"
     },
     "license": {
      "type": "string"
     },
     "provider": {
      "type": "string"
     }
    }
   }
  }
 },
 "example": {
  "ok": true,
  "page": {
   "size": 20,
   "pages": 1,
   "number": 1
  },
  "items": [
   {
    "owner": "Apple Inc.",
    "status": {
     "code": "700",
     "date": "2011-05-10",
     "live": true,
     "label": "Registered"
    },
    "markText": "APPLE",
    "filingDate": "1977-03-21",
    "intlClasses": [
     "009"
    ],
    "renewalDate": "2017-11-29",
    "serialNumber": "73302283",
    "goodsServices": "COMPUTERS …",
    "abandonmentDate": null,
    "markDrawingCode": "1",
    "cancellationDate": null,
    "registrationDate": "1977-11-29",
    "registrationNumber": "1078312"
   }
  ],
  "total": 1,
  "source": {
   "url": "https://data.uspto.gov/bulkdata/datasets/TRTYRAP",
   "license": "US Government public-domain data (17 U.S.C. §105). No attribution required.",
   "provider": "USPTO
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/2s-io-uspto-trademark-search-0d4c5941/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 2s.io](https://www.zero.xyz/host/2s.io/llms.txt)
