# USPTO API

> USPTO returns trademark filings and status information as a workflow and API.

USPTO's Search trademarks method finds U.S. trademark filings for a required brand name, with optional category and inactive-filing filters. USPTO's Get trademark status method returns a mark's current status and prosecution history using a required name or number and optional owner.

- Page: https://fous.com/workflows/uspto
- Handle: `@uspto`
- Category: [Legal](https://fous.com/workflows/category/legal)
- Source website: https://uspto.gov
- Last verified: Sep 29, 2026
- Fous is not affiliated with USPTO.

## Methods

### Get trademark status

Operation `get_trademark_status`, version 1. 1 credit per call.

Get the current status and prosecution history of one U.S. trademark by name, serial number or registration number. For names, select the newest live matching mark (or matching owner) and list other matches; history includes up to 50 events. Name searches consider up to 5,000 search results.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `owner` | string | no | `"Sunbeam Products, Inc."` | Optional owner name to disambiguate a name search; for example, Sunbeam Products, Inc. |
| `trademark` | string | yes | `"Sunbeam"` | Brand name, 8-digit serial number, or 7-digit registration number; for example, Sunbeam or 90768648. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "trademark"
  ],
  "properties": {
    "owner": {
      "type": "string",
      "default": "",
      "description": "Optional owner name to disambiguate a name search; for example, Sunbeam Products, Inc.",
      "examples": [
        "Sunbeam Products, Inc."
      ]
    },
    "trademark": {
      "type": "string",
      "description": "Brand name, 8-digit serial number, or 7-digit registration number; for example, Sunbeam or 90768648.",
      "examples": [
        "Sunbeam",
        "90768648",
        "6835405"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "owner": "Sunbeam Products, Inc.",
      "trademark": "Sunbeam"
    },
    {
      "trademark": "90768648"
    },
    {
      "trademark": "6835405"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `status` | string or null | `"Registered. The registration date is used to determine when post-registration maintenance documents are due."` | Current status in plain words. |
| `mark_text` | string or null | `"SUNBEAM ADVANCEDHEAT"` | Trademark wording. |
| `tsdr_link` | string | `"https://tsdr.uspto.gov/#caseNumber=90768648&caseType=SERIAL_NO&caseSearchType=US_APPLICATION&searchType=statusSearch"` | Link to the case in TSDR. |
| `owner_name` | string or null | `"Sunbeam Products, Inc."` | Current owner name. |
| `filing_date` | string or null | `"2021-06-11"` | Application filing date, YYYY-MM-DD. |
| `status_date` | string or null | `"2022-08-30"` | Date of current status, YYYY-MM-DD. |
| `other_matches` | array |  | Other marks matching the searched name and optional owner, ordered by live status then most recent filing. |
| `other_matches[].is_live` | boolean |  | Whether the filing is live. |
| `other_matches[].mark_text` | string or null |  | Trademark wording. |
| `other_matches[].tsdr_link` | string |  | Link to this case in TSDR. |
| `other_matches[].owner_name` | string or null |  | Owner name. |
| `other_matches[].filing_date` | string or null |  | Filing date, YYYY-MM-DD. |
| `other_matches[].serial_number` | string |  | USPTO serial number. |
| `other_matches[].registration_number` | string or null |  | Registration number. |
| `owner_address` | string or null | `"6655 Peachtree Dunwoody Rd., Atlanta, GEORGIA, 30328, UNITED STATES OF AMERICA"` | Current owner mailing address. |
| `serial_number` | string | `"90768648"` | USPTO serial number. |
| `mark_image_link` | string or null | `"https://tsdrsec.uspto.gov/ts/cd/standardimages/90768648/webcontent"` | Link to mark image, if available. |
| `publication_date` | string or null | `"2021-10-26"` | Publication date, YYYY-MM-DD. |
| `registration_date` | string or null | `"2022-08-30"` | Registration date, YYYY-MM-DD. |
| `attorney_of_record` | string or null | `"Juhi K. Patel"` | Attorney of record. |
| `goods_and_services` | array |  |  |
| `goods_and_services[].class` | string or null | `"011"` | International class number. |
| `goods_and_services[].description` | string or null | `"Electric heating pads, not for medical purposes."` | Goods or services for the class. |
| `prosecution_history` | array |  |  |
| `prosecution_history[].date` | string or null | `"2025-05-23"` | Event date, YYYY-MM-DD. |
| `prosecution_history[].event` | string or null | `"TEAS CHANGE OF CORRESPONDENCE RECEIVED"` | Prosecution event description. |
| `registration_number` | string or null | `"6835405"` | USPTO registration number, if registered. |
| `abandonment_or_cancellation_date` | string or null |  | Abandonment or cancellation date, YYYY-MM-DD. |

**Example input**

```json
{
  "trademark": "90768648"
}
```

**Example output**

```json
{
  "status": "Registered. The registration date is used to determine when post-registration maintenance documents are due.",
  "mark_text": "SUNBEAM ADVANCEDHEAT",
  "tsdr_link": "https://tsdr.uspto.gov/#caseNumber=90768648&caseType=SERIAL_NO&caseSearchType=US_APPLICATION&searchType=statusSearch",
  "owner_name": "Sunbeam Products, Inc.",
  "filing_date": "2021-06-11",
  "status_date": "2022-08-30",
  "other_matches": [],
  "owner_address": "6655 Peachtree Dunwoody Rd., Atlanta, GEORGIA, 30328, UNITED STATES OF AMERICA",
  "serial_number": "90768648",
  "mark_image_link": "https://tsdrsec.uspto.gov/ts/cd/standardimages/90768648/webcontent",
  "publication_date": "2021-10-26",
  "registration_date": "2022-08-30",
  "attorney_of_record": "Juhi K. Patel",
  "goods_and_services": [
    {
      "class": "011",
      "description": "Electric heating pads, not for medical purposes."
    }
  ],
  "prosecution_history": [
    {
      "date": "2025-05-23",
      "event": "TEAS CHANGE OF CORRESPONDENCE RECEIVED"
    },
    {
      "date": "2025-05-23",
      "event": "ATTORNEY/DOM.REP.REVOKED AND/OR APPOINTED"
    },
    {
      "date": "2025-05-23",
      "event": "TEAS REVOKE/APP/CHANGE ADDR OF ATTY/DOM REP RECEIVED"
    }
  ],
  "registration_number": "6835405",
  "abandonment_or_cancellation_date": null
}
```

### Search trademarks

Operation `search_trademarks`, version 1. 1 credit per call.

Find US trademark filings matching a brand name, optionally limited to likely goods or service classes. Exact marks appear first; similar marks follow. Results are not a legal clearance opinion, and uncommon categories may only match goods descriptions.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `brand_name` | string | yes | `"Patagonia"` | Brand to check, for example Sunbeam. |
| `max_results` | integer | no | `10` | Maximum records returned, for example 25. |
| `include_dead` | boolean | no | `true` | Include inactive filings, for example false for live marks only. |
| `product_category` | string | no | `"clothing"` | Products or services in plain words, for example coffee, clothing or software. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "brand_name"
  ],
  "properties": {
    "brand_name": {
      "type": "string",
      "description": "Brand to check, for example Sunbeam.",
      "examples": [
        "Patagonia",
        "Sunbeam",
        "Zqxvvnqpt"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum records returned, for example 25.",
      "x-fous-developer": true,
      "examples": [
        10
      ]
    },
    "include_dead": {
      "type": "boolean",
      "default": false,
      "description": "Include inactive filings, for example false for live marks only.",
      "examples": [
        true
      ]
    },
    "product_category": {
      "type": "string",
      "default": "",
      "description": "Products or services in plain words, for example coffee, clothing or software.",
      "examples": [
        "clothing",
        "coffee"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "brand_name": "Patagonia",
      "max_results": 10,
      "include_dead": true,
      "product_category": "clothing"
    },
    {
      "brand_name": "Sunbeam",
      "product_category": "coffee"
    },
    {
      "brand_name": "Zqxvvnqpt"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `summary` | string | `"26 trademarks match Patagonia for clothing"` |  |
| `trademarks` | array |  |  |
| `trademarks[].owner` | string or null | `"Patagonia, Inc."` |  |
| `trademarks[].status` | string | `"Dead - cancelled"` |  |
| `trademarks[].classes` | array |  |  |
| `trademarks[].mark_text` | string or null | `"PATAGONIA"` |  |
| `trademarks[].filing_date` | string or null | `"2010-01-29"` |  |
| `trademarks[].serial_number` | string | `"77923689"` |  |
| `trademarks[].mark_image_link` | string or null | `"https://tmcms-docs.uspto.gov/cases/77923689/mark/large.png"` |  |
| `trademarks[].registration_date` | string or null | `"2013-12-03"` |  |
| `trademarks[].uspto_status_link` | string | `"https://tsdr.uspto.gov/#caseNumber=77923689&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch"` |  |
| `trademarks[].goods_and_services` | string or null | `"(CANCELLED) IC 018: [ flyfishing sports packs, backpacks ].; (CANCELLED) IC 025: [ shirts, [ shorts, pants, jackets, pu` |  |
| `trademarks[].registration_number` | string or null | `"4444060"` |  |

**Example input**

```json
{
  "brand_name": "Patagonia",
  "max_results": 10,
  "include_dead": true,
  "product_category": "clothing"
}
```

**Example output**

```json
{
  "summary": "26 trademarks match Patagonia for clothing",
  "trademarks": [
    {
      "owner": "Patagonia, Inc.",
      "status": "Dead - cancelled",
      "classes": [
        "018 - Leather goods and bags",
        "025 - Clothing, footwear and headwear"
      ],
      "mark_text": "PATAGONIA",
      "filing_date": "2010-01-29",
      "serial_number": "77923689",
      "mark_image_link": "https://tmcms-docs.uspto.gov/cases/77923689/mark/large.png",
      "registration_date": "2013-12-03",
      "uspto_status_link": "https://tsdr.uspto.gov/#caseNumber=77923689&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch",
      "goods_and_services": "(CANCELLED) IC 018: [ flyfishing sports packs, backpacks ].; (CANCELLED) IC 025: [ shirts, [ shorts, pants, jackets, pullovers,] fishing waders, vests [, hats ] ].",
      "registration_number": "4444060"
    },
    {
      "owner": "PATAGONIA, INC.",
      "status": "Live - registered",
      "classes": [
        "025 - Clothing, footwear and headwear"
      ],
      "mark_text": "PATAGONIA",
      "filing_date": "1980-03-31",
      "serial_number": "73256083",
      "mark_image_link": "https://tmcms-docs.uspto.gov/cases/73256083/mark/large.png",
      "registration_date": "1982-02-09",
      "uspto_status_link": "https://tsdr.uspto.gov/#caseNumber=73256083&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch",
      "goods_and_services": "IC 025: Mens and Womens Clothing-Namely, Sweaters, Rugby Shirts, Walking Shorts, Trousers, Jackets, Mittens, Hoods and Rainwear.",
      "registration_number": "1189402"
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@uspto",
  "visibility": "public",
  "operation": "get_trademark_status",
  "version": 1,
  "input": {
    "owner": "Sunbeam Products, Inc.",
    "trademark": "Sunbeam"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@uspto\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_trademark_status\",\n  \"version\": 1,\n  \"input\": {\n    \"owner\": \"Sunbeam Products, Inc.\",\n    \"trademark\": \"Sunbeam\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@uspto",
  "visibility": "public",
  "operation": "get_trademark_status",
  "version": 1,
  "input": {
    "owner": "Sunbeam Products, Inc.",
    "trademark": "Sunbeam"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@uspto","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Check a brand name against matching U.S. trademark filings.
- Narrow trademark matches to a product or service category.
- Review a mark's current status and filing dates.
- Track prosecution events for a trademark filing.
- Compare matching marks and their owners.

## FAQ

### Is Fous affiliated with USPTO?

No. Fous is not affiliated with USPTO. This workflow reads the public uspto.gov website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a USPTO account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from uspto.gov when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### Which filings match a brand name?

Search trademarks returns matching filings for a required brand name, with optional product or service category and inactive-filing filters.

### What is a trademark's current status?

Get trademark status returns the current status for a trademark searched by name, serial number, or registration number.

### What events appear in a trademark's history?

Get trademark status returns prosecution history with event dates and descriptions.

## Related

- [WIPO API](https://fous.com/workflows/wipo.md): Search trademark records in the WIPO Global Brand Database.
- [Google Patents API](https://fous.com/workflows/google-patents.md): Google Patents searches public records and provides patent details and company summaries; legal status is estimated, and citations, claims, and company breakdowns have record limits.
- [Espacenet API](https://fous.com/workflows/espacenet.md): European Patent Office public patent search and family information.
- [CPSC API](https://fous.com/workflows/cpsc.md): U.S. Consumer Product Safety Commission recalls and product safety information.
- [ClinicalTrials.gov API](https://fous.com/workflows/clinicaltrials-gov.md): ClinicalTrials.gov helps users find studies and view public trial records, including sponsor-run or funded studies; site distances are approximate, and contacts, eligibility, or exact dates may be missing.
- [Federal Register API](https://fous.com/workflows/federal-register.md): Search United States federal rules, proposed rules, notices, and presidential documents.
- [Trustpilot API](https://fous.com/workflows/trustpilot.md): Trustpilot provides company ratings, reply and location details when available, recent public reviews, and company search results with ratings, review counts, categories, locations, and links.
- [USPS API](https://fous.com/workflows/usps.md): USPS provides latest available package tracking, standardized U.S. addresses with ZIP+4, recommended cities for five-digit ZIP Codes, and estimated domestic postage and delivery dates.
- [All Legal workflows](https://fous.com/workflows/category/legal)
