USPTO APIppubs.uspto.gov ↗
Search US patents and pre-grant publications by attorney or agent name and registration number. Fetch bibliographic data, claims, abstract, and CPC codes.
What is the USPTO API?
This API exposes 2 endpoints against the USPTO Patent Public Search database, covering the USPAT, US-PGPUB, and USOCR collections. Use search_by_attorney to find patents and pre-grant publications by attorney name or registration number, and get_document_detail to retrieve a single document's full claims text, abstract, CPC codes, inventors, assignees, and front-page attorney/agent block.
curl -X GET 'https://api.parse.bot/scraper/2a40dfe8-0dfc-4173-8964-80a318a209a7/search_by_attorney?limit=3&attorney_name=Shu+Chen' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches USPTO Patent Public Search (US-PGPUB, USPAT and USOCR collections) for documents whose attorney/agent of record matches the supplied name and/or registration number, newest publication date first. Every word of attorney_name must appear in the document's attorney or legal-representative name field, in any order (so 'Shu Chen' and 'Chen Shu' both match an attorney recorded as 'Chen; Shu'). registration_number is applied to the site's attorney registration-number index; during testing that index held no values, so supplying it currently yields zero results. Attorney data is only printed on granted patents, so pre-grant publications rarely match. One result page per call: start is a zero-based offset and limit (1-20, values above 20 are clamped) is the page size; total is the site's full match count and has_more tells whether another page exists. The per-hit attorney fields (inventors, attorney_names, attorney_name, attorney_registration_number, law_firm) come from one extra document fetch per hit, so a call costs 1 + limit upstream requests; a hit whose detail fetch failed carries a non-null detail_error and empty attorney fields, and detail_coverage counts requested vs fetched details. A name that matches nothing returns total 0 and an empty results list.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results per page, 1-20; larger values are clamped to 20. |
| start | integer | Zero-based offset of the first result to return. |
| attorney_name | string | Attorney or agent name words, in any order (e.g. 'Shu Chen'). Only letters and digits are used; punctuation is ignored. Required unless registration_number is given. |
| registration_number | string | USPTO attorney/agent registration number, up to 8 digits (e.g. '62014'). Combined with attorney_name using AND when both are given. Required unless attorney_name is given. |
{
"type": "object",
"fields": {
"limit": "integer, effective page size after clamping",
"query": "the expert/BRS query string issued to the site",
"start": "integer, offset echoed back",
"total": "integer, total number of matching documents on the site",
"results": "array of hits: document_id (site id like US-12693226-B2, usable with get_document_detail), document_number, kind_code (A1/B1/B2/...), title, application_number, filing_date and publication_date (YYYY-MM-DD), status (Granted patent / Pre-grant publication), source collection, applicants, assignees, cpc (array of CPC codes), detail_url, inventors_short, inventors (array), attorney_names (all attorney/firm names on the front page), attorney_name (first one), attorney_registration_number (null when the site records none), law_firm, detail_error (null on success)",
"has_more": "boolean, true when start + returned count < total",
"detail_coverage": "object {requested, fetched}: how many per-hit detail fetches were attempted and succeeded"
},
"sample": {
"data": {
"limit": 3,
"query": "((Shu AND Chen).ATTY. OR (Shu AND Chen).LRNM.)",
"start": 3,
"total": 45,
"results": [
{
"cpc": [
"H04L63/0853",
"H04W12/068",
"H04L63/0876"
],
"title": "Proximity based user identification and authentication system and method",
"source": "USPAT",
"status": "Granted patent",
"law_firm": "K&L Gates LLP",
"assignees": [
"GREET SOLUTIONS INC."
],
"inventors": [
"Jimenez; Giovanni",
"Wenger; Russell"
],
"kind_code": "B2",
"applicants": [
"Greet Solutions Inc."
],
"detail_url": "https://ppubs.uspto.gov/pubwebapp/external.html?q=(12495297).pn.&db=USPAT",
"document_id": "US-12495297-B2",
"filing_date": "2024-02-01",
"detail_error": null,
"attorney_name": "Chen; Shu",
"attorney_names": [
"Chen; Shu",
"K&L Gates LLP"
],
"document_number": "12495297",
"inventors_short": "Jimenez; Giovanni et al.",
"publication_date": "2025-12-09",
"application_number": "18/430013",
"attorney_registration_number": null
}
],
"has_more": true,
"detail_coverage": {
"fetched": 3,
"requested": 3
}
},
"status": "success"
}
}About the USPTO API
Searching by Attorney or Agent
search_by_attorney queries across the US-PGPUB, USPAT, and USOCR collections for documents whose attorney or agent of record matches the supplied criteria. You can pass attorney_name (word-order-independent), registration_number (up to 8 digits), or both — the two parameters are combined with AND. Results are ordered newest publication date first. The response includes total (the full match count on USPTO), a has_more boolean for pagination, and an array of hits each carrying document_id (e.g. US-12693226-B2), document_number, and kind_code. Pagination is controlled by start (zero-based offset) and limit (1–20, clamped).
Fetching Document Detail
get_document_detail accepts a US patent number or pre-grant publication number — with or without the US prefix or kind code — and returns the full document record. Response fields include title, abstract, claims (all claims joined as text), number_of_claims, cpc (array of CPC classification codes), inventors (Last; First format), assignees, law_firm, attorney_agent_or_firm (structured front-page block), primary_examiner, kind_code, source collection, and status (granted or pre-grant).
Coverage and Pagination Notes
The document_id values returned by search_by_attorney map directly to the document_number parameter accepted by get_document_detail, so the two endpoints compose naturally. The detail_coverage field on search results reports how many per-hit detail fetches were requested and succeeded, which can be less than the page size if individual documents are unavailable. The USOCR collection covers older scanned patents whose text quality may vary.
The USPTO API is a managed, monitored endpoint for ppubs.uspto.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ppubs.uspto.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official ppubs.uspto.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a patent portfolio dashboard for a law firm by querying their registration number via
search_by_attorney. - Track all pre-grant publications (A1 kind code) filed by a specific patent attorney over time.
- Extract CPC classification codes from
get_document_detailto analyze a firm's technology focus areas. - Compile inventor and assignee lists across an attorney's prosecuted patents for competitive intelligence.
- Retrieve full claims text for a patent to feed into a claims analysis or similarity comparison tool.
- Verify attorney of record and law firm name for a given patent number using the
attorney_agent_or_firmblock. - Paginate through an agent's entire docket using
startandhas_moreto build a complete filing history.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does USPTO Patent Public Search have an official developer API?+
What does `get_document_detail` return beyond what the search results include?+
search_by_attorney results carry identifiers and kind codes. get_document_detail adds the full abstract, all claims text, number_of_claims, cpc code array, primary_examiner, structured attorney_agent_or_firm block, law_firm, inventors, assignees, and explicit status (granted vs. pre-grant).Can I search patents by assignee, inventor, or CPC code?+
What is the maximum number of results I can retrieve per request?+
limit parameter accepts 1–20 results per page; values above 20 are clamped to 20. Use start for zero-based offset pagination. The total field tells you the full count of matching documents, and has_more tells you whether additional pages exist.