{
  "openapi": "3.0.1",
  "info": {
    "title": "USPTO Trademark Search — Lookup & Monitoring API | $2.50/1k",
    "description": "Search US trademarks on USPTO by word mark, owner or goods, or look up serial and registration numbers: status, Nice classes, filing and registration dates, company owner, goods and services. Filter live/dead, class, filing date. No login.",
    "version": "0.1",
    "x-build-id": "b63xsuFYG5uGbsHg9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glasswing~uspto-trademark-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glasswing-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/glasswing~uspto-trademark-scraper/runs": {
      "post": {
        "operationId": "runs-sync-glasswing-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/glasswing~uspto-trademark-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-glasswing-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": {
          "keywords": {
            "title": "Search terms",
            "type": "array",
            "description": "Words to search for, one per line (for example `nike`, `coffee`, `\"just do it\"`). Each term is a separate search. Quotes match an exact phrase, `*` is a wildcard (`nik*`), `-word` excludes a word. Where the term is searched is set by Search in.",
            "default": [
              "nike"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchIn": {
            "title": "Search in",
            "enum": [
              "wordmark",
              "owner",
              "goods",
              "all"
            ],
            "type": "string",
            "description": "Which part of the record the search terms are matched against.",
            "default": "wordmark"
          },
          "serialNumbers": {
            "title": "Serial or registration numbers",
            "type": "array",
            "description": "Look up specific marks: 8-digit serial numbers (`97123456`) or registration numbers (`0978952`, `3038323`). Numbers the USPTO does not know return a free `not_found` row.",
            "items": {
              "type": "string"
            }
          },
          "phrases": {
            "title": "Phrases to check (live marks)",
            "type": "array",
            "description": "Brand names or slogans to check against live marks (pending or registered). Each phrase gets its own rows: `matchType` is `exact` (same text, ignoring case, accents and punctuation) or `close` (contains the phrase as whole words, the same words reordered, or about one letter in five different), and `matchedPhrase` says which phrase matched. A phrase with no live match returns a free `not_found` row. Class and filing-date filters apply; status is always live. Leave empty for the normal search.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many records in total. Each search term returns at most this many marks (and never more than 10,000). Each record with status `ok` is one billable result.",
            "default": 20
          },
          "status": {
            "title": "Status",
            "enum": [
              "all",
              "live",
              "dead"
            ],
            "type": "string",
            "description": "Only live marks (pending or registered), only dead marks (abandoned, cancelled, expired), or both.",
            "default": "all"
          },
          "classes": {
            "title": "International classes",
            "type": "array",
            "description": "Nice classes 1-45, for example `25` (clothing) or `9` (software, electronics). A mark matches if it covers any of the listed classes.",
            "items": {
              "type": "string"
            }
          },
          "filedFrom": {
            "title": "Filed on or after",
            "type": "string",
            "description": "Only applications filed on or after this date (YYYY-MM-DD). Combine with Sort by newest to monitor new filings."
          },
          "filedTo": {
            "title": "Filed on or before",
            "type": "string",
            "description": "Only applications filed on or before this date (YYYY-MM-DD)."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "Best match first, newest filings first, or oldest filings first.",
            "default": "relevance"
          },
          "onlyNew": {
            "title": "Only new marks (watch mode)",
            "type": "boolean",
            "description": "Return only marks that an earlier run with this option on has not returned yet, so a scheduled run (daily or weekly) gives you just the new filings. Already-seen marks are skipped and never charged; a run with nothing new finishes successfully with a free `not_found` row per search. Seen marks are kept in a named key-value store on your own Apify account (next field). The first run returns everything, like a normal run. Combine with Sort by newest (a search stops at the first page with nothing new) and set Maximum results high enough for the first run. Serial and registration numbers you enter directly are always returned.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Name of the key-value store on your account that remembers which marks were already returned. Use a different name per schedule to keep separate watch lists (for example `trademarks-client-a`). Lowercase letters, digits and hyphens.",
            "default": "uspto-trademark-monitor"
          },
          "startUrls": {
            "title": "TSDR or tmsearch URLs (advanced)",
            "type": "array",
            "description": "Optional. TSDR status page URLs (`https://tsdr.uspto.gov/#caseNumber=...`) are looked up by their number; tmsearch.uspto.gov URLs with a `query` parameter are searched. Leave the example as is when you use Search terms.",
            "default": [
              "https://tsdr.uspto.gov/#caseNumber=72414176&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch"
            ],
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The Actor works from Apify's datacenter IPs without a proxy.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}