{
  "openapi": "3.0.1",
  "info": {
    "title": "USPTO Trademark Batch Search API",
    "description": "Batch-search the USPTO trademark register by keyword, serial number, registration number, or owner. Returns live/pending/dead status, Nice classes, owners, dates, goods/services, and TSDR links. HTTP-only, no API key. Built for POD clearance, brand monitoring, and AI agents.",
    "version": "0.1",
    "x-build-id": "oheHCBPrYhex03LOl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~uspto-trademark-batch-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-uspto-trademark-batch-search",
        "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/khadinakbar~uspto-trademark-batch-search/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-uspto-trademark-batch-search",
        "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/khadinakbar~uspto-trademark-batch-search/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-uspto-trademark-batch-search",
        "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": {
          "searchTerms": {
            "title": "Search terms",
            "maxItems": 100,
            "type": "array",
            "description": "Words or phrases to check against USPTO wordmarks, for example 'star wars' or 'just do it'. Each term is searched separately, up to 100 per run. Use this for POD/brand clearance, not for patent search and not for downloading TSDR prosecution PDFs.",
            "items": {
              "type": "string"
            }
          },
          "serialNumbers": {
            "title": "Serial numbers",
            "maxItems": 100,
            "type": "array",
            "description": "USPTO serial numbers to look up exactly, such as 74612654. Accepts 7-8 digits, an SN prefix, or a TSDR URL with caseNumber. Maximum 100 per run. Use this when you already know the filing number; do not put brand phrases here.",
            "items": {
              "type": "string"
            }
          },
          "registrationNumbers": {
            "title": "Registration numbers",
            "maxItems": 100,
            "type": "array",
            "description": "USPTO registration numbers to look up exactly, such as 2239077 or RN:2239077. Maximum 100 per run. This is the registration identifier on a live or dead certificate, not the 8-digit serial number.",
            "items": {
              "type": "string"
            }
          },
          "ownerNames": {
            "title": "Owner names",
            "maxItems": 50,
            "type": "array",
            "description": "Owner or applicant names to search, for example 'Nike, Inc.'. Returns that owner's marks subject to status and class filters. Maximum 50 per run. This is an owner-portfolio search, not a goods/services keyword search.",
            "items": {
              "type": "string"
            }
          },
          "statusFilter": {
            "title": "Status filter",
            "enum": [
              "live",
              "pending",
              "registered",
              "dead",
              "all"
            ],
            "type": "string",
            "description": "Which USPTO live/dead states to return. Default live includes registered and pending filings and is the usual POD clearance filter. pending is live-but-unregistered; dead is abandoned/cancelled/expired; all includes history. This is not a legal-risk score.",
            "default": "live"
          },
          "niceClasses": {
            "title": "Nice classes",
            "type": "string",
            "description": "Optional comma-separated Nice Classification numbers from 1 to 45, for example '25' for clothing or '25,9,18'. Leave empty to search every class. Class 25 is the common POD clothing filter; this is not a US design-code or coordinated-class filter."
          },
          "matchMode": {
            "title": "Wordmark match mode",
            "enum": [
              "contains",
              "exact"
            ],
            "type": "string",
            "description": "How searchTerms are matched against USPTO wordmarks. contains (default) finds the phrase inside combined mark text, so 'star wars' also returns STAR WARS GALACTIC STARCRUISER. exact prefers the literal wordmark. Serial and registration lookups ignore this field.",
            "default": "contains"
          },
          "maxResultsPerTerm": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum matching trademark rows saved for each search term, serial, registration, or owner query. Default 5 keeps POD batches cheap; raise toward 50 for owner portfolios. This caps output per query, not the entire USPTO hit count.",
            "default": 5
          },
          "maxResults": {
            "title": "Max results per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on dataset rows for the whole run, including CLEAR rows. Default 250. Use this as the cost ceiling: each saved row is one $0.005 trademark-result event. This is not pagination into a previous run.",
            "default": 250
          },
          "includeClearRows": {
            "title": "Include CLEAR rows",
            "type": "boolean",
            "description": "When enabled (default), a query with zero matches still writes one row with matchFound=false and recordStatus=CLEAR so a 100-term batch stays complete. Turn this off when you only want conflicting marks. CLEAR rows are billed the same as matches.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many USPTO queries to run in parallel. Default 4 balances speed against USPTO courtesy limits. Lower to 1 if you see HTTP 429 in the log; raise to 8 only for large owner or serial batches.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}