{
  "openapi": "3.0.1",
  "info": {
    "title": "USPTO Trademark Search, Check & Monitor — No Login, $2.79/1k",
    "description": "USPTO trademark search by mark, owner, goods, attorney, serial or registration number; full TSDR details with attorney e-mail; clearance check with a verdict per candidate mark; monitor of new filings and status changes; bulk. No login or cookies. MCP-ready for AI agents. $2.79 per 1,000 records.",
    "version": "1.0",
    "x-build-id": "xjYhfIearvkgPJ2wu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fortuitous_pirate~uspto-trademark-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fortuitous_pirate-uspto-trademark-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/fortuitous_pirate~uspto-trademark-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fortuitous_pirate-uspto-trademark-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/fortuitous_pirate~uspto-trademark-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fortuitous_pirate-uspto-trademark-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "details",
              "check",
              "monitor",
              "patents"
            ],
            "type": "string",
            "description": "search = marks matching your queries (one row per mark). details = full TSDR record per serial/registration number (owner address, attorney e-mail, prosecution history). check = one verdict row per candidate mark (available / possible_conflict / likely_conflict / exact_match_live) with the matching live serials — the trademark-check add-on event. monitor = only NEW filings and status changes since the last run (named key-value store per monitorId). patents = legacy US patent search. Left empty, the mode is inferred from the inputs you fill in."
          },
          "queries": {
            "title": "Queries",
            "type": "array",
            "description": "One search per entry: word marks (searchMode text), owner names (owner), goods & services phrases (goods), attorney names (attorney), serial or registration numbers (serial / registration). In details mode: serial (8 digits) or registration (7 digits) numbers. In check mode (if candidates is empty): candidate marks. Results of all entries merge into one dataset.",
            "items": {
              "type": "string"
            }
          },
          "listUrl": {
            "title": "Queries from CSV / Google Sheet",
            "type": "string",
            "description": "Optional URL of a CSV file or a Google Sheet shared as \"anyone with the link\"; the first column is appended to queries (a header row like query/mark/candidate is skipped)."
          },
          "searchMode": {
            "title": "Search mode",
            "enum": [
              "text",
              "owner",
              "goods",
              "attorney",
              "serial",
              "registration"
            ],
            "type": "string",
            "description": "What the queries are matched against in search mode."
          },
          "searchQuery": {
            "title": "Search query (single)",
            "type": "string",
            "description": "Legacy single query; same as one entry in queries."
          },
          "candidates": {
            "title": "Candidate marks to check",
            "type": "array",
            "description": "check mode: brand names to clear. Each gets one row with a verdict, the exact and close LIVE marks (serial, owner, status, classes) and the count of dead exact matches. Charged per candidate (trademark-check event). Alias: terms.",
            "items": {
              "type": "string"
            }
          },
          "serialNumbers": {
            "title": "Serial numbers",
            "type": "array",
            "description": "USPTO application serial numbers (8 digits) to look up. In search mode returns the index record; in details mode the full TSDR record.",
            "items": {
              "type": "string"
            }
          },
          "registrationNumbers": {
            "title": "Registration numbers",
            "type": "array",
            "description": "USPTO registration numbers (7 digits) to look up.",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "title": "Status filter",
            "enum": [
              "all",
              "live",
              "dead",
              "pending"
            ],
            "type": "string",
            "description": "all, live (registered or pending), dead (abandoned, cancelled, expired) or pending (live but not yet registered). Alias: liveDead.",
            "default": "all"
          },
          "internationalClasses": {
            "title": "Nice classes (1-45)",
            "type": "array",
            "description": "Restrict search, check and monitor to these international classes, e.g. [\"9\", \"42\"] or [\"025\"]. Empty = all 45 classes. Aliases: niceClasses, classes (\"25,9\"), internationalClass.",
            "items": {
              "type": "string"
            }
          },
          "internationalClass": {
            "title": "Nice class (single, legacy)",
            "type": "string",
            "description": "Legacy single-class filter; same as one entry in internationalClasses."
          },
          "exactMatch": {
            "title": "Exact phrase only",
            "type": "boolean",
            "description": "search mode, text: only marks whose word mark or pseudo mark contains the query as an exact phrase (no partial-word hits).",
            "default": false
          },
          "filingDateStart": {
            "title": "Filed from (YYYY-MM-DD)",
            "type": "string",
            "description": "Only marks filed on or after this date. Alias: dateFrom."
          },
          "filingDateEnd": {
            "title": "Filed until (YYYY-MM-DD)",
            "type": "string",
            "description": "Only marks filed on or before this date. Alias: dateTo."
          },
          "includeDetails": {
            "title": "Include TSDR details in search results",
            "type": "boolean",
            "description": "search mode: fetch the TSDR record for every result (status date, owner address, attorney firm and e-mail, correspondent e-mail, law office, prosecution history, assignments). One extra request per mark; no extra charge. Alias: includeDocuments.",
            "default": false
          },
          "maxItems": {
            "title": "Max records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap on dataset rows per run (search, details, monitor, patents). check mode always checks every candidate.",
            "default": 10
          },
          "onlyNew": {
            "title": "Only new marks (search mode)",
            "type": "boolean",
            "description": "search mode: remember every serial returned under monitorId and skip it on later runs, so a scheduled search emits only marks it has not returned before.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of the watchlist / dedupe state (key-value store tm-watch-<hash>). One ID per client or brand. Used by monitor mode and onlyNew.",
            "default": "default"
          },
          "watchTerms": {
            "title": "Monitor: word marks to watch",
            "type": "array",
            "description": "monitor mode: new applications whose word mark (or pseudo mark) contains a word starting with this text. \"apple\" matches APPLE, APPLEGATE FARM, GOLDEN APPLE.",
            "items": {
              "type": "string"
            }
          },
          "ownerNames": {
            "title": "Monitor: owner / applicant names to watch",
            "type": "array",
            "description": "monitor mode: new applications filed by these owners (phrase match on the applicant name).",
            "items": {
              "type": "string"
            }
          },
          "watchSerials": {
            "title": "Monitor: serial numbers to watch",
            "type": "array",
            "description": "monitor mode: applications whose status you track. First run reports the current status (changeType new); later runs report only changes of status, status date or latest prosecution event (changeType updated).",
            "items": {
              "type": "string"
            }
          },
          "filedSinceDays": {
            "title": "Monitor: filed within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "monitor mode: only applications filed within this many days. 7 suits a weekly schedule; 30 for a first baseline.",
            "default": 7
          },
          "maxNewPerTerm": {
            "title": "Monitor: max new filings per watch",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "monitor mode: stop scanning a watch term after this many new filings; the rest come out next run.",
            "default": 5
          },
          "firstRunMode": {
            "title": "Monitor: first run mode",
            "enum": [
              "emitAll",
              "baseline"
            ],
            "type": "string",
            "description": "What to do when the monitor has no saved state yet. emitAll reports every current match; baseline records them silently so the next run reports only what is new.",
            "default": "emitAll"
          },
          "webhookUrl": {
            "title": "Monitor: webhook URL",
            "type": "string",
            "description": "monitor mode: after each run a JSON summary {monitorId, runAt, newCount, updatedCount, records[first 50]} is POSTed here (Slack, Zapier, Make, n8n, your docketing system)."
          },
          "usptoApiKey": {
            "title": "USPTO TSDR API key (optional)",
            "type": "string",
            "description": "Optional key from https://account.uspto.gov/api-manager/. Without it the keyless TSDR backend of tmsearch.uspto.gov is used, which returns the same record. Alias: tsdrApiKey."
          },
          "searchType": {
            "title": "Legacy: searchType",
            "enum": [
              "trademarks",
              "patents",
              "both"
            ],
            "type": "string",
            "description": "Legacy input of the former USPTO Patent & Trademark Scraper: patents, trademarks or both. Use mode instead."
          },
          "keyword": {
            "title": "Legacy: keyword",
            "type": "string",
            "description": "Legacy single query (patents or trademark text search); same as one entry in queries."
          },
          "trademarkSerialNumber": {
            "title": "Legacy: trademark serial number",
            "type": "string",
            "description": "Legacy single serial-number lookup; same as one entry in serialNumbers."
          },
          "patentType": {
            "title": "Patents: patent type",
            "enum": [
              "all",
              "utility",
              "design",
              "plant",
              "reissue"
            ],
            "type": "string",
            "description": "patents mode with a PatentsView key: utility, design, plant, reissue or all.",
            "default": "all"
          },
          "patentsViewApiKey": {
            "title": "Patents: PatentsView API key (optional)",
            "type": "string",
            "description": "patents mode: free key from patentsview.org/apis/keyrequest for full patent records (claims count, assignees, inventors, CPC). Without it Google Patents is used."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}