{
  "openapi": "3.0.1",
  "info": {
    "title": "USPTO Trademark Watch — New Filings & Status, No Login, $20/1k",
    "description": "Watch USPTO trademarks by word mark, owner, Nice class or serial number and get only NEW applications and status changes since the last run, with owner, attorney, classes, goods and TSDR link. Weekly schedule. No login or API key. MCP-ready. $20 per 1,000 alerts.",
    "version": "1.0",
    "x-build-id": "sOBzy5S2lpBYzdpPg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/outstanding_vegetable~uspto-trademark-watch/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-outstanding_vegetable-uspto-trademark-watch",
        "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/outstanding_vegetable~uspto-trademark-watch/runs": {
      "post": {
        "operationId": "runs-sync-outstanding_vegetable-uspto-trademark-watch",
        "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/outstanding_vegetable~uspto-trademark-watch/run-sync": {
      "post": {
        "operationId": "run-sync-outstanding_vegetable-uspto-trademark-watch",
        "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": {
          "watchTerms": {
            "title": "Word marks to watch",
            "type": "array",
            "description": "New applications whose word mark (or pseudo mark) contains a word starting with this text are reported. \"apple\" matches APPLE, APPLEGATE FARM and GOLDEN APPLE. One watch per term; each term gets its own maxNewPerTerm budget.",
            "default": [
              "apple",
              "nimbus"
            ],
            "items": {
              "type": "string"
            }
          },
          "ownerNames": {
            "title": "Owner / applicant names to watch",
            "type": "array",
            "description": "New applications filed by these owners (phrase match on the applicant name, e.g. \"Nike\", \"Procter & Gamble\"). Works alongside watchTerms; each name is its own watch.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "niceClasses": {
            "title": "Nice classes",
            "type": "array",
            "description": "Restrict the word-mark and owner watches to these international classes, e.g. [\"9\", \"42\"]. Empty = all 45 classes. Does not apply to watchSerials.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "watchSerials": {
            "title": "Serial numbers to watch",
            "type": "array",
            "description": "USPTO application serial numbers (8 digits) whose status you want to track. The first run reports each one's current status (changeType new); later runs report only when the status, status date or latest prosecution-history event changes (changeType updated).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "filedSinceDays": {
            "title": "Filed within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only consider applications filed within this many days. 7 suits a weekly schedule; use 30 for a first baseline.",
            "default": 7
          },
          "maxNewPerTerm": {
            "title": "Max new filings per watch",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop scanning a word-mark or owner watch after this many new filings. Filings beyond the cap stay unseen and come out on the next run.",
            "default": 5
          },
          "maxItems": {
            "title": "Max records per run",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Overall cap on emitted records (new filings plus serial status changes) per run.",
            "default": 10
          },
          "firstRunMode": {
            "title": "First run mode",
            "enum": [
              "emitAll",
              "baseline"
            ],
            "type": "string",
            "description": "What to do when the monitor has no saved state yet. emitAll: report every current match (good for a first test). baseline: silently record every current match and emit nothing, so the next scheduled run reports only what is new since.",
            "default": "emitAll"
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. After each run a JSON summary {monitorId, runAt, newCount, updatedCount, records[first 50]} is POSTed here (Slack, Zapier, Make, your docketing system).",
            "default": ""
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of this watchlist. Each ID keeps its own seen-state in a key-value store named tm-watch-<hash>, so you can run one monitor per client or brand side by side.",
            "default": "default"
          },
          "usptoApiKey": {
            "title": "USPTO API key (optional)",
            "type": "string",
            "description": "Optional key from https://account.uspto.gov/api-manager/ for the official TSDR API. Without it the actor uses the keyless TSDR backend of tmsearch.uspto.gov, which works fine; a key only matters if you run very large watchlists and want to stay within your own quota."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}