USPTO Patent Public Search API endpoint
Searches USPTO Patent Public Search's full-text index of granted patents and published applications, returning bibliographic results (title, applicant/assignee, inventors, filing and publication dates, application number, IPC/CPC classifications, page count). q accepts USPTO's full Advanced Search query syntax -- field-specific search (e.g. battery.ti., Microsoft.as.), date ranges (@pd>=20200101<=20241231), boolean and proximity operators, and wildcards -- see the markdown doc for the full field-code table and syntax reference.
/usptoppubs/searchQuery parameters:
q (required) — search query text. Accepts the full BRS query syntax USPTO Patent Public Search's own Advanced Search box uses (this endpoint submits q through that same query mode) -- see "Query syntax" below.databases (optional) — comma-separated subset of databases to search. Allowed values: US-PGPUB, USPAT, USOCR. Defaults to all three.num (optional, default 20, max 100) — results to return per page.page (optional, default 0) — results page, 0-indexed.Response fields: query, num_found, per_page, page, results[] (publication_number, guid, title, database, applicant_names[], assignee_name, inventors_short, application_number, filing_date, publication_date, ipc_codes, cpc_codes, kind_codes[], page_count, language), source_url, fetched_at.
A result's guid and database feed directly into /usptoppubs/detail to fetch that document's full abstract, description, and claims text.
q is not limited to plain keywords -- it accepts USPTO's full Advanced Search (BRS) query language, so most filtering happens by composing q rather than through separate parameters:
Field-specific search -- append .<code>. (or [<code>]) to a term to restrict it to one part of the record, e.g. radar.ti. (title only) or Microsoft.as. (assignee only). Commonly used codes:
| Code | Searches | Example |
|---|---|---|
TI | Title | concrete.ti. |
AB | Abstract | amethyst.ab. |
CLM / CLMS | Claims | tube.clm. |
SPEC | Specification | collar.spec. |
BSUM | Brief summary | medicinal.bsum. |
AS | Assignee name | Microsoft.as. |
IN / INV | Inventor name | (Smith NEAR2 John).in. |
ATT / ATTY | Attorney/agent/firm name | (cantor NEAR3 colburn).atty. |
PN | Publication/patent number | 7557042.pn. |
APP | Application number | 10/501576.app. |
DID | Document ID (with hyphens) | US-11449323-B2.did. |
CPC | Cooperative Patent Classification | F16L11/00.cpc. |
IPC | International Patent Classification | G06F17/00.ipc. |
CCLS / CLAS | US classification | 138/26.ccls. |
AD / FD | Application filing date | 20120616.ad. |
AY / FY | Application filing year | 2006.ay. |
PD | Publication date | 20150217.pd. |
The full searchable-index list (100+ codes covering every bibliographic field) is USPTO's own public reference: https://www.uspto.gov/patents/search/patent-public-search/searchable-indexes.
Date ranges -- prefix a date field with @ and compare directly, no .field. suffix needed:
| Comparison | Syntax |
|---|---|
| Equal | @pd=20011118 |
| Greater than | @ad>19961231 |
| Greater than or equal | @ay>=2014 |
| Less than | @py<1975 |
| Less than or equal | @py<=1975 |
| Not equal | @pd<>19990216 |
| Range | @ay>=1980<=1986 |
Boolean operators: AND, OR, NOT (ANDNOT), XOR.
Proximity operators (precedence ADJ > NEAR > WITH > SAME):
x ADJn y -- x and y within n words, in order, same sentence.x NEARn y -- x and y within n words, any order, same sentence.x WITHn y -- x and y within n sentences of each other.x SAMEn y -- x and y within n paragraphs (max 25) of each other.Wildcards/truncation: $ truncates with an optional numeric character-count modifier (prod$3 matches "produce", "product", "production" -- up to 3 extra characters); ? matches exactly one character. Prefer a numeric $n modifier over an unmodified $/* -- unmodified wildcards search the full index and are slow.
Example composed queries: battery.ti. AND lithium.ab., (Smith NEAR2 John).in. AND @pd>=20200101<=20241231, F16L11/00.cpc. AND Microsoft.as..
A publication with no matches for a query returns a 200 response with num_found: 0 and an empty results array, not an error.
Example response (trimmed):
{"code":200,"msg":"OK","data":{"query":"battery","num_found":500,"per_page":20,"page":0,"results":[{"publication_number":"US10758101B2","guid":"US-10758101-B2","title":"UPRIGHT VACUUM CLEANER WITH BATTERY SUPPORT PLATE","database":"USPAT","applicant_names":["Emerson Electric Co."],"assignee_name":"Emerson Electric Co.","inventors_short":"Fogarty; Thomas E. et al.","application_number":"15/620,213","filing_date":"2017-06-12T00:00:00Z","publication_date":"2020-09-01T00:00:00Z","ipc_codes":"A47L9/00","kind_codes":["B2"],"page_count":15,"language":"EN"}],"source_url":"https://ppubs.uspto.gov/api/searches/searchWithBeFamily","fetched_at":"2026-08-15T19:00:00Z"}}
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| publication_number | 20 | “US12761285B1” and 19 other values |
| guid | 20 | |
| title | 20 | median 60 characters |
| database | 20 | USPAT in all 20 |
| applicant_names | 20 | median 1 entry |
| assignee_name | 17 | “Analog Devices International Unlimited Company” and 14 other values |
| inventors_short | 20 | “Kamath; Narsimh Dilip et al.” and 19 other values |
| application_number | 20 | “17/575587” and 19 other values |
| filing_date | 20 | 2022-01-13 to 2024-02-08 |
| publication_date | 20 | 2026-10-13 |
| ipc_codes | 20 | “G01R31/392;G01R31/367” and 19 other values |
| cpc_codes | 20 | “G01R31/392;G01R31/367;G01R31/396” and 19 other values |
| kind_codes | 20 | median 1 entry |
| page_count | 20 | |
| language | 20 | EN in all 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Search query text -- accepts USPTO's full Advanced Search (BRS) query syntax: field codes, date ranges, boolean/proximity operators, wildcards | battery | |
| databases | string | No | all three | Comma-separated subset of databases to search. Allowed values: US-PGPUB, USPAT, USOCR. Defaults to all three | US-PGPUB,USPAT,USOCR |
| num | integer | No | Results to return, default 20, max 100 | 20 | |
| page | integer | No | Results page, 0-indexed, default 0 | 0 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/usptoppubs/search?q=battery&num=10&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "battery",
"num_found": 500,
"per_page": 20,
"page": 0,
"results": [
{
"publication_number": "US10758101B2",
"guid": "US-10758101-B2",
"title": "UPRIGHT VACUUM CLEANER WITH BATTERY SUPPORT PLATE",
"database": "USPAT",
"applicant_names": [
"Emerson Electric Co."
],
"assignee_name": "Emerson Electric Co.",
"inventors_short": "Fogarty; Thomas E. et al.",
"application_number": "15/620,213",
"filing_date": "2017-06-12T00:00:00Z",
"publication_date": "2020-09-01T00:00:00Z",
"ipc_codes": "A47L9/00",
"kind_codes": [
"B2"
],
"page_count": 15,
"language": "EN"
}
],
"source_url": "https://ppubs.uspto.gov/api/searches/searchWithBeFamily",
"fetched_at": "2026-08-15T19:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/usptoppubs.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | usptoppubs.SearchResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.num_found | integer | No | 500 | |||
| data.page | integer | No | 0 | |||
| data.per_page | integer | No | 20 | |||
| data.query | string | No | battery | |||
| data.results | array | No | ||||
| data.results[].applicant_names | array | No | ||||
| data.results[].application_number | string | No | 15/620,213 | |||
| data.results[].assignee_name | string | No | ||||
| data.results[].cpc_codes | string | No | ||||
| data.results[].database | string | No | USPAT | |||
| data.results[].filing_date | string | No | 2017-06-12 | |||
| data.results[].guid | string | No | US-10758101-B2 | |||
| data.results[].inventors_short | string | No | ||||
| data.results[].ipc_codes | string | No | ||||
| data.results[].kind_codes | array | No | ||||
| data.results[].language | string | No | EN | |||
| data.results[].page_count | integer | No | ||||
| data.results[].publication_date | string | No | 2020-09-01 | |||
| data.results[].publication_number | string | No | US10758101B2 | |||
| data.results[].title | string | No | UPRIGHT VACUUM CLEANER WITH BATTERY SUPPORT PLATE | |||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/usptoppubs/search?q=battery&num=10&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"