All skills
davila7 avatar

/uspto-database

@2fe0cfa

Access USPTO APIs for patent/trademark searches, examination history (PEDS), assignments, citations, office actions, TSDR, for IP analysis and prior art searches.

Use this Skill: https://skilld.dev/gh/davila7/claude-code-templates/uspto-database

This session only. Nothing lands on disk.

referencespatentsearch_api.md

≈1.9k tokens on demand. Your agent reads this file only when SKILL.md points to it.

PatentSearch API Reference

Overview

The PatentSearch API is USPTO's modern ElasticSearch-based patent search system that replaced the legacy PatentsView API in May 2025. It provides access to patent data through June 30, 2025, with regular updates.

Base URL: https://search.patentsview.org/api/v1/

Authentication

All API requests require authentication using an API key in the request header:

X-Api-Key: YOUR_API_KEY

Register for an API key at: https://account.uspto.gov/api-manager/

Rate Limits

  • 45 requests per minute per API key
  • Exceeding rate limits results in HTTP 429 errors

Available Endpoints

Core Patent & Publication Endpoints

  • /patent - General patent data (granted patents)
  • /publication - Pregrant publication data
  • /publication/rel_app_text - Related application data for publications

Entity Endpoints

  • /inventor - Inventor information with location and gender code fields
  • /assignee - Assignee details with location identifiers
  • /location - Geographic data including latitude/longitude coordinates
  • /attorney - Legal representative information

Classification Endpoints

  • /cpc_subclass - Cooperative Patent Classification at subclass level
  • /cpc_at_issue - CPC classification as of patent issue date
  • /uspc - US Patent Classification data
  • /wipo - World Intellectual Property Organization classifications
  • /ipc - International Patent Classification

Text Data Endpoints (Beta)

  • /brief_summary_text - Patent brief summaries (granted and pre-grant)
  • /claims - Patent claims text
  • /drawing_description_text - Drawing descriptions
  • /detail_description_text - Detailed description text

Note: Text endpoints are in beta with data primarily from 2023 onward. Historical backfilling is in progress.

Supporting Endpoints

  • /other_reference - Patent reference materials
  • /related_document - Cross-references between patents

Query Parameters

All endpoints support four main parameters:

1. Query String (q)

Filters data using JSON query objects. Required parameter.

Query Operators:

  • Equality: {"field": "value"} or {"field": {"_eq": "value"}}
  • Not equal: {"field": {"_neq": "value"}}
  • Comparison: _gt, _gte, _lt, _lte
  • String matching:
    • _begins - starts with
    • _contains - substring match
  • Full-text search (recommended for text fields):
    • _text_all - all terms must match
    • _text_any - any term matches
    • _text_phrase - exact phrase match
  • Logical operators: _and, _or, _not
  • Array matching: Use arrays for OR conditions

Examples:

// Simple equality
{"patent_number": "11234567"}

// Date range
{"patent_date": {"_gte": "2020-01-01", "_lte": "2020-12-31"}}

// Text search (preferred for text fields)
{"patent_abstract": {"_text_all": ["machine", "learning"]}}

// Inventor name
{"inventor_name": {"_text_phrase": "John Smith"}}

// Complex query with logical operators
{
  "_and": [
    {"patent_date": {"_gte": "2020-01-01"}},
    {"assignee_organization": {"_text_any": ["Google", "Alphabet"]}}
  ]
}

// Array for OR conditions
{"cpc_subclass_id": ["H04N", "H04L"]}

2. Field List (f)

Specifies which fields to return in the response. Optional - each endpoint has default fields.

Format: JSON array of field names

["patent_number", "patent_title", "patent_date", "inventor_name"]

3. Sorting (s)

Orders results by specified fields. Optional.

Format: JSON array with field name and direction

[{"patent_date": "desc"}]

4. Options (o)

Controls pagination and additional settings. Optional.

Available options:

  • page - Page number (default: 1)
  • per_page - Records per page (default: 100, max: 1,000)
  • pad_patent_id - Pad patent IDs with leading zeros (default: false)
  • exclude_withdrawn - Exclude withdrawn patents (default: true)

Format: JSON object

{
  "page": 1,
  "per_page": 500,
  "exclude_withdrawn": false
}

Response Format

All responses follow this structure:

{
  "error": false,
  "count": 100,
  "total_hits": 5432,
  "patents": [...],
  // or "inventors": [...], "assignees": [...], etc.
}
  • error - Boolean indicating if an error occurred
  • count - Number of records in current response
  • total_hits - Total number of matching records
  • Endpoint-specific data array (e.g., patents, inventors)

Complete Request Example

Using curl

curl -X POST "https://search.patentsview.org/api/v1/patent" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {
      "_and": [
        {"patent_date": {"_gte": "2024-01-01"}},
        {"patent_abstract": {"_text_all": ["artificial", "intelligence"]}}
      ]
    },
    "f": ["patent_number", "patent_title", "patent_date", "assignee_organization"],
    "s": [{"patent_date": "desc"}],
    "o": {"per_page": 100}
  }'

Using Python

import requests

url = "https://search.patentsview.org/api/v1/patent"
headers = {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "q": {
        "_and": [
            {"patent_date": {"_gte": "2024-01-01"}},
            {"patent_abstract": {"_text_all": ["artificial", "intelligence"]}}
        ]
    },
    "f": ["patent_number", "patent_title", "patent_date", "assignee_organization"],
    "s": [{"patent_date": "desc"}],
    "o": {"per_page": 100}
}

response = requests.post(url, headers=headers, json=data)
results = response.json()

Common Field Names

Patent Endpoint Fields

  • patent_number - Patent number
  • patent_title - Title of the patent
  • patent_date - Grant date
  • patent_abstract - Abstract text
  • patent_type - Type of patent
  • inventor_name - Inventor names (array)
  • assignee_organization - Assignee company names (array)
  • cpc_subclass_id - CPC classification codes
  • uspc_class - US classification codes
  • cited_patent_number - Citations to other patents
  • citedby_patent_number - Patents citing this patent

Refer to the full field dictionary at: https://search.patentsview.org/docs/

Best Practices

  1. Use _text* operators for text fields - More performant than _contains or _begins
  2. Request only needed fields - Reduces response size and improves performance
  3. Implement pagination - Handle large result sets efficiently
  4. Respect rate limits - Implement backoff/retry logic for 429 errors
  5. Cache results - Reduce redundant API calls
  6. Use date ranges - Narrow searches to improve performance

Error Handling

Common HTTP status codes:

  • 200 - Success
  • 400 - Bad request (invalid query syntax)
  • 401 - Unauthorized (missing or invalid API key)
  • 429 - Too many requests (rate limit exceeded)
  • 500 - Server error

Recent Updates (February 2025)

  • Data updated through December 31, 2024
  • New pad_patent_id option for formatting patent IDs
  • New exclude_withdrawn option to show withdrawn patents
  • Text endpoints continue beta backfilling

Resources

Source: SKILL.md on GitHub

2 warnings5mo5 checks · Risk SAFE
  • Gen Agent Trust Hub7mo

    The skill provides tools and documentation for searching and analyzing USPTO patent and trademark data. It uses official API endpoints and follows security best practices for credential management and data handling. No malicious patterns or security risks were identified in the implementation or documentation.

  • Socket6mo

    No alerts

  • Snyk7mo

    Risk: MEDIUM · No issues

  • Runlayer7mo

    8/8 files flagged

  • ZeroLeaks5mo

    1 finding · Score: 82/100

Signed by skilld at 2fe0cfa. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 10 months ago

README badge

README badge for davila7/claude-code-templates/uspto-database