# Uspto Trademark Search Status Scraper (`sian.agency/uspto-trademark-search-status-scraper`) Actor

Search the USPTO register by keyword, owner or class, and pull full TSDR dossiers by serial number: prosecution status and history, owners with addresses, attorneys, goods & services. No API key.

- **URL**: https://apify.com/sian.agency/uspto-trademark-search-status-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Business, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.64 / 1,000 search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## USPTO Trademark Search & Status Scraper — Dossier & Discovery ⚖️

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Print on Demand Generator](https://img.shields.io/badge/Store-POD%20Listing%20Generator-FF9900)](https://apify.com/sian.agency/print-on-demand-listing-generator?fpr=sian) [![Amazon ASIN Lookup](https://img.shields.io/badge/Store-Amazon%20ASIN%20Lookup-FF9900)](https://apify.com/sian.agency/amazon-asin-lookup?fpr=sian) [![Etsy Product Scraper](https://img.shields.io/badge/Store-Etsy%20Product%20Scraper-F1641E)](https://apify.com/sian.agency/etsy-product-scraper?fpr=sian)

#### 🎉 Official USPTO search discovery & deep TSDR dossiers in one actor — search millions of trademarks or extract complete case files with zero API keys

##### Built for IP attorneys, brand managers, e-commerce sellers, M\&A due diligence teams, and trademark researchers who need official USPTO registry data on schedule

***

### 🔎 What is the USPTO Trademark Search & Status Scraper — and when should you use it?

The **USPTO Trademark Search & Status Scraper** turns USPTO trademark search records, legal status statements and full TSDR case dossiers into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** trademark search discovery by keyword, phrase, owner or Nice class with live/dead status flags, filing and registration dates. Also when you need full TSDR case dossiers by serial number including complete prosecution histories, owner entity and address data, attorneys, correspondents, and detailed goods and services descriptions.

**Use something else when:** you need an integrated print-on-demand product creation workflow with automated trademark clearance. Use [Print on Demand Listing & Design Generator](https://apify.com/sian.agency/print-on-demand-listing-generator?fpr=sian) for niche scoring, AI design generation, marketplace SEO copy and automated trademark clearance screening all in one. Use this actor for standalone USPTO trademark research, due diligence, portfolio mapping and registry monitoring without product listing generation.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/uspto-trademark-search-status-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want USPTO trademark search and TSDR status dossier data using the Apify Actor `sian.agency/uspto-trademark-search-status-scraper`.

Use it when I need: trademark search discovery by keyword, phrase, owner or Nice class with live/dead status flags, filing and registration dates. Also when you need full TSDR case dossiers by serial number including complete prosecution histories, owner entity and address data, attorneys, correspondents, and detailed goods and services descriptions.

Don't use it when: you need an integrated print-on-demand product creation workflow with automated trademark clearance — use print-on-demand-listing-generator instead.

How to call it: pick one `operation` per run (`search` or `dossier`). In `search` mode, pass `queries` (keywords, brands, or owners) with optional `niceClasses`, `searchFilter` (all/live/dead), and `searchField`. In `dossier` mode, pass 8-digit serial numbers in `queries` (e.g. `78787878`) to extract full TSDR case files including prosecution histories.

Start with this input:
{
  "operation": "search",
  "queries": [
    "nike"
  ],
  "niceClasses": [
    "25"
  ],
  "searchFilter": "live",
  "maxResultsPerQuery": 50
}

Ask me which trademark keywords, brand names, owners or serial numbers you want to research, and whether you need search discovery or full TSDR dossiers, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Search for all live trademarks matching 'coffee' in Nice class 30 and list their owners.*
- *Pull the complete TSDR case dossier and prosecution history for serial number 78787878.*
- *Map the full live and dead trademark portfolio for owner 'Starbucks Corporation'.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/uspto-trademark-search-status-scraper.md](https://apify.com/sian.agency/uspto-trademark-search-status-scraper.md).

***

### 📋 Overview

**USPTO trademark intelligence made effortless.** Whether you are clearing a new brand name before launch, monitoring competitor filings, or performing deep legal due diligence by serial number, this actor connects directly to official United States Patent and Trademark Office systems with zero API fees, accounts, or proxy configuration.

Most trademark scrapers on the Store only return basic search summaries or charge expensive monthly subscription lock-ins. This actor bundles **two powerful modes** under a single interface:

1. 🔍 **Search Discovery (via Trademark Search API):** Fast full-text querying across millions of live and dead marks by brand name, phrase, owner name, or Nice classification.
2. 📑 **Deep TSDR Dossier (via Trademark Status & Document Retrieval):** Complete case file extraction by 8-digit serial number — full prosecution timelines, owner physical addresses, legal entity types, prosecuting attorney records, and goods & services classifications.

***

### ✨ Features

- ⚡ **Official Direct USPTO Data**: Queries `tmsearch.uspto.gov` and `tsdr.uspto.gov` directly — guaranteed 100% official data with zero third-party latency.
- 🎯 **Brand Clearance & Risk Screening**: Filter instantly by `live`, `dead`, or `all` status and restrict across Nice classes (1–45) to detect exact or conflicting marks.
- 🏢 **Full Corporate Entity & Address Extraction**: Pulls full owner mailing addresses, state/country of incorporation, and entity types (Corporation, LLC, Individual).
- 📜 **Complete Prosecution Timelines**: Extracts the full dated prosecution history for every mark in dossier mode (e.g. Office Actions, Publication, Registration, Renewal).
- 🧑‍⚖️ **Attorney & Correspondent Intelligence**: Surfaces prosecuting attorneys and correspondent contact data for IP litigation, licensing, and professional outreach.
- 💰 **Pay-Per-Event Pricing**: Pay only for successful records retrieved. Search results cost a fraction of a cent; failed queries or not-found records are never billed.
- 📊 **Query-Ready Formats**: Export clean JSON, CSV, or Excel directly from Apify or stream into workflows via Webhooks and API.

***

### 🎬 Quick Start

Pick an operation, enter your query or serial numbers, and click Run.

```bash
## Run via cURL — Search live trademarks in class 25 (Apparel)
curl -X POST "https://api.apify.com/v2/acts/sian.agency~uspto-trademark-search-status-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "operation": "search",
  "queries": ["nike"],
  "niceClasses": ["25"],
  "searchFilter": "live",
  "maxResultsPerQuery": 50
}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick an Operation

- **Search Discovery (`search`)**: Use this when you want to find trademarks by keyword, brand phrase, owner name, or classification code.
- **Deep Dossier (`dossier`)**: Use this when you already have specific 8-digit US serial numbers (e.g., `78787878`, `97123456`) and need the full legal file.

#### Step 2: Configure Search Parameters

- **`queries`**: List of search phrases, brand names, owners, or serial numbers (batch up to 500 in a single run!).
- **`niceClasses`** *(Optional, Search mode)*: Filter by Nice International Classes (e.g. `25` for Apparel, `09` for Software/Electronics, `30` for Coffee/Food).
- **`searchFilter`** *(Optional, Search mode)*: `live` (registered & pending), `dead` (abandoned/cancelled), or `all`.
- **`searchField`** *(Optional, Search mode)*: Restrict search to `wordmark`, `owner`, `goods_services`, or `all`.

#### Step 3: Run & Export

Click **Start**. Data streams in real time into your Apify Dataset. Export in one click to JSON, CSV, Excel, or connect directly to Zapier, Make, or Python/Node.js pipelines.

***

### 📥 Input Configuration

| Field | Type | Operation | Description | Default |
|---|---|---|---|---|
| `operation` | enum | All | `search` (Search Discovery) or `dossier` (Deep TSDR Dossier) | `search` |
| `queries` | array | All | Search terms/phrases, or 8-digit serial numbers in dossier mode | `["nike"]` |
| `searchFilter` | enum | `search` | Filter marks: `all`, `live` (active/pending), or `dead` (abandoned/expired) | `all` |
| `niceClasses` | array | `search` | International Nice classes to restrict (1–45) | `[]` |
| `searchField` | enum | `search` | Field to match: `all`, `wordmark`, `owner`, or `goods_services` | `all` |
| `maxResultsPerQuery` | integer | `search` | Maximum number of results to extract per query (1–1000) | `100` |
| `includeProsecutionHistory` | boolean | `dossier` | Include dated prosecution event timeline in dossier rows | `true` |

***

### 📊 Sample Output (JSON)

#### Search Discovery Row

```json
{
  "serialNumber": "73177777",
  "registrationNumber": "1125972",
  "markText": "NANCY DREW",
  "statusLabel": "The registration has been renewed.",
  "liveDead": "LIVE",
  "ownerName": "Simon & Schuster, Inc.",
  "niceClasses": ["016"],
  "filedDate": "1978-07-10",
  "registrationDate": "1979-10-16",
  "goodsAndServices": ["Books and publications..."],
  "tsdrUrl": "https://tsdr.uspto.gov/#caseNumber=73177777&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch"
}
```

#### Deep Dossier Row

```json
{
  "serialNumber": "78787878",
  "registrationNumber": null,
  "markText": "MAC MEMPHIS ATHLETIC CAMPUS",
  "caseStatus": "Abandoned because the applicant failed to respond or filed a late response to an Office action.",
  "statusDate": "2007-09-25",
  "filingDate": "2006-01-09",
  "liveDead": "DEAD",
  "markType": "Collective Membership Mark",
  "registerType": "Principal",
  "owners": [
    {
      "name": "MEMPHIS ATHLETIC CAMPUS FOUNDATION",
      "address": "123 Campus Way, Chicago, ILLINOIS UNITED STATES 60601",
      "entityType": "CORPORATION"
    }
  ],
  "attorneyName": "Jane Doe, Esq.",
  "correspondent": "Jane Doe, Law Offices of...",
  "goodsAndServices": [
    {
      "classNumber": "200",
      "description": "Indicating membership in an athletic organization",
      "status": "DEAD"
    }
  ],
  "prosecutionHistory": [
    {
      "date": "2007-09-25",
      "historyDescription": "ABANDONMENT - FAILURE TO RESPOND OR LATE RESPONSE"
    },
    {
      "date": "2006-10-12",
      "historyDescription": "NON-FINAL ACTION MAILED"
    }
  ],
  "tsdrUrl": "https://tsdr.uspto.gov/#caseNumber=78787878&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch"
}
```

***

### ⚖️ Trademark & Legal Notice

*USPTO and TSDR are trademarks of the United States Patent and Trademark Office. This actor is an independent data extraction tool and is not affiliated with, endorsed by, or sponsored by the USPTO or the United States Government. All extracted data is publicly accessible government information.*

# Actor input Schema

## `operation` (type: `string`):

Pick one mode per run. Search Discovery finds marks by keyword with live/dead and Nice-class filters; Deep Dossier pulls the complete TSDR case file for serial numbers you already know.

## `queries` (type: `array`):

Search terms (Search Discovery) or serial numbers (Deep Dossier) — one per item. In search mode each term is matched against word marks, owners, goods & services and serial/registration numbers, like the official search portal. In dossier mode each item must be an 8-digit serial number like 78787878.

## `searchFilter` (type: `string`):

Keep live, dead, or all matching marks — Search Discovery only.

## `niceClasses` (type: `array`):

Select Nice International Classification classes (1–45) to restrict your search. Multi-select prevents typing errors — Search Discovery only.

## `searchField` (type: `string`):

Scope the term match — Search Discovery only.

## `maxResultsPerQuery` (type: `integer`):

Hard cap on records returned per query (1–1000). Search Discovery only.

## `includeProsecutionHistory` (type: `boolean`):

Include the dated prosecution-history timeline (office actions, responses, publications) in dossier rows.

## Actor input object example

```json
{
  "operation": "search",
  "queries": [
    "nike"
  ],
  "searchFilter": "all",
  "niceClasses": [],
  "searchField": "all",
  "maxResultsPerQuery": 100,
  "includeProsecutionHistory": true
}
```

# Actor output Schema

## `output` (type: `string`):

One flat row per trademark: mark text, serial and registration numbers, live/dead status, owner, Nice classes, filing and registration dates, goods & services, attorney, mark image and TSDR link — dossier rows add prosecution history, every owner address, correspondent contact, design codes, filing bases and maintenance dates.

## `report` (type: `string`):

HTML report with run status, success/error row counts, success rate, targets processed, duration, and the inputs used — written even on fatal crash.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "operation": "search",
    "queries": [
        "nike"
    ],
    "searchFilter": "all",
    "niceClasses": [],
    "searchField": "all",
    "maxResultsPerQuery": 100,
    "includeProsecutionHistory": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/uspto-trademark-search-status-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "operation": "search",
    "queries": ["nike"],
    "searchFilter": "all",
    "niceClasses": [],
    "searchField": "all",
    "maxResultsPerQuery": 100,
    "includeProsecutionHistory": True,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/uspto-trademark-search-status-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "operation": "search",
  "queries": [
    "nike"
  ],
  "searchFilter": "all",
  "niceClasses": [],
  "searchField": "all",
  "maxResultsPerQuery": 100,
  "includeProsecutionHistory": true
}' |
apify call sian.agency/uspto-trademark-search-status-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/uspto-trademark-search-status-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/iChcMpS0bOKOs2Jhs/builds/48TpjEQZywo2H9mGE/openapi.json
