Patent Filings Dataset
Track granted patents issued by the US Patent and Trademark Office (USPTO), mapped to publicly traded companies by ticker. Each record is an individual granted patent with its grant date, original application filing date, technology classifications, claim count, and inventors — a direct, structured signal of corporate R&D output and innovation pace.
What’s Included
Section titled “What’s Included”The Patent Filings dataset provides, for every granted patent:
- Patent Identity: USPTO patent number, title, type (utility, design, plant, reissue), and kind code
- Timing: Grant date and original application filing date, plus the filing-to-grant duration in days
- Assignee: The organization the patent is assigned to, mapped to a stock ticker, with the assignee type
- Technology Classification: CPC sections and subsections describing the technical domain, plus the primary section
- Scope Signals: Number of claims and forward-citation count
- Inventors: Named inventors and the inventor count
Coverage
Section titled “Coverage”| Source | Description | Update Frequency |
|---|---|---|
| USPTO | Granted patents mapped to NYSE and NASDAQ tickers | Weekly |
Patent Filings cover US-listed companies on NYSE and NASDAQ, with assignee organizations matched to ticker symbols at ingestion. The dataset carries 20 years of history, with granted patents dating back to 2006, suitable for long-horizon R&D and innovation analysis. New grants are published by the USPTO weekly.
This dataset tracks granted patents — patents the USPTO has issued. Each record also exposes the original applicationFilingDate, so you can analyze the filing-to-grant pipeline, but pending (ungranted) applications are not included.
Quick Start
Section titled “Quick Start”import requests
API_KEY = "YOUR_API_KEY"BASE_URL = "https://api.finbrain.tech/v2"
response = requests.get( f"{BASE_URL}/patent-filings/AAPL", headers={"Authorization": f"Bearer {API_KEY}"},)
data = response.json()for patent in data["data"]["patents"]: print(f"{patent['patentDate']} {patent['patentId']} " f"[{patent['primaryCpcSection']}] {patent['title']}")curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://api.finbrain.tech/v2/patent-filings/AAPL"You can narrow results with startDate, endDate (both filter on the grant date, YYYY-MM-DD), and limit query parameters.
Sample Response
Section titled “Sample Response”{ "success": true, "data": { "symbol": "AAPL", "name": "Apple Inc.", "patents": [ { "patentId": "12345678", "patentDate": "2025-03-11", "title": "Method and apparatus for low-power display synchronization", "type": "utility", "kind": "B2", "numClaims": 20, "numCitedBy": 0, "assigneeOrganization": "Apple Inc.", "assigneeType": "2", "applicationFilingDate": "2022-06-15", "filingToGrantDays": 999, "inventors": ["John Doe", "Jane Smith"], "numInventors": 2, "cpcSections": ["G", "H"], "cpcSubsections": ["G06", "H04"], "primaryCpcSection": "G" } ] }, "meta": { "timestamp": "2026-06-16T12:00:00.000Z" }}Key Fields
Section titled “Key Fields”| Field | Description | Example |
|---|---|---|
patentId | USPTO patent number (globally unique) | 12345678 |
patentDate | Grant date (YYYY-MM-DD) | 2025-03-11 |
title | Patent title | Method and apparatus for low-power display synchronization |
type | Patent type | utility |
kind | USPTO kind code | B2 |
numClaims | Number of claims | 20 |
numCitedBy | Forward-citation count | 0 |
assigneeOrganization | Organization the patent is assigned to | Apple Inc. |
assigneeType | Assignee type code (2 = US company, 3 = foreign company) | 2 |
applicationFilingDate | Original application filing date (YYYY-MM-DD) | 2022-06-15 |
filingToGrantDays | Days from filing to grant | 999 |
inventors | Named inventors | ["John Doe", "Jane Smith"] |
numInventors | Number of inventors | 2 |
cpcSections | CPC classification sections | ["G", "H"] |
cpcSubsections | CPC subsections | ["G06", "H04"] |
primaryCpcSection | Leading CPC section | G |
Technology Classification (CPC)
Section titled “Technology Classification (CPC)”Patents are tagged with Cooperative Patent Classification (CPC) codes describing their technical domain. The single-letter primaryCpcSection gives a quick read on where a company is innovating:
| Section | Technology Domain |
|---|---|
| A | Human Necessities |
| B | Performing Operations; Transporting |
| C | Chemistry; Metallurgy |
| D | Textiles; Paper |
| E | Fixed Constructions |
| F | Mechanical Engineering; Lighting; Heating; Weapons |
| G | Physics (computing, optics, instruments) |
| H | Electricity (electronics, communications) |
| Y | New / cross-sectional technologies |
Subsections (e.g., G06 for computing, H04 for communications) add a finer level of detail.
Use Cases
Section titled “Use Cases”R&D Pace Tracker
Section titled “R&D Pace Tracker”Measure how a company’s innovation output trends over time by counting granted patents per quarter:
import requestsimport pandas as pd
API_KEY = "YOUR_API_KEY"BASE_URL = "https://api.finbrain.tech/v2"
def patents_per_quarter(symbol): """Count granted patents per calendar quarter for a ticker.""" response = requests.get( f"{BASE_URL}/patent-filings/{symbol}", headers={"Authorization": f"Bearer {API_KEY}"}, ) patents = response.json()["data"]["patents"]
df = pd.DataFrame(patents) df["patentDate"] = pd.to_datetime(df["patentDate"]) df = df.set_index("patentDate")
return df["patentId"].resample("QE").count()
quarterly = patents_per_quarter("NVDA")print(quarterly.tail(8))Technology Mix
Section titled “Technology Mix”See which technical domains a company is investing in by breaking patents down by their primary CPC section:
import requestsfrom collections import Counter
API_KEY = "YOUR_API_KEY"BASE_URL = "https://api.finbrain.tech/v2"
def technology_mix(symbol): """Rank a company's patents by primary CPC section.""" response = requests.get( f"{BASE_URL}/patent-filings/{symbol}", headers={"Authorization": f"Bearer {API_KEY}"}, ) patents = response.json()["data"]["patents"]
sections = Counter(p["primaryCpcSection"] for p in patents if p["primaryCpcSection"]) return sections.most_common()
for section, count in technology_mix("TSLA"): print(f"{section}: {count} patents")Innovation Leaders Scan
Section titled “Innovation Leaders Scan”Compare granted-patent volume across a peer group to find the most prolific innovators:
import requests
API_KEY = "YOUR_API_KEY"BASE_URL = "https://api.finbrain.tech/v2"
def scan_patent_volume(symbols, start_date): """Rank tickers by number of patents granted since start_date.""" results = []
for symbol in symbols: try: response = requests.get( f"{BASE_URL}/patent-filings/{symbol}", headers={"Authorization": f"Bearer {API_KEY}"}, params={"startDate": start_date}, ) patents = response.json()["data"]["patents"] results.append({"symbol": symbol, "patents": len(patents)}) except Exception: continue
return sorted(results, key=lambda x: x["patents"], reverse=True)
semis = ["NVDA", "AMD", "INTC", "QCOM", "AVGO"]for r in scan_patent_volume(semis, "2024-01-01"): print(f"{r['symbol']}: {r['patents']} patents")Related Resources
Section titled “Related Resources”- Patent Filings API Reference — Endpoint details, parameters, and response schema
- Government Contracts Dataset — Federal contract awards mapped to tickers
- Corporate Lobbying Dataset — Track corporate influence and regulatory exposure
- Insider Transactions Dataset — SEC Form 4 executive trades
- Datasets Overview — Browse the full FinBrain dataset catalog