Moving from the PatentsView API
To move a script or client from the PatentsView API to PatentRef, change the base URL from https://search.patentsview.org to https://patentref.io and add a PatentRef key in the X-Api-Key header. A Free key is at /api/v1/meta/signup/.
PatentRef answers the PatentSearch v1 grammar of the USPTO's PatentsView API, which the USPTO paused on 2026-03-20: the same paths, the same q, f, s and o parameters, the same response shape and error forms, from PatentRef's own snapshot of the USPTO data. The few places where an answer differs are listed under known differences.
What to change
- Base URL:
https://search.patentsview.orgbecomeshttps://patentref.io. The paths stay:/api/v1/patent/,/api/v1/inventor/and the rest, including/api/v1/patent/otherreference/, upstream's path before its release 2.2.0, which answers as/api/v1/patent/other_reference/does. - Key: get a Free key at /api/v1/meta/signup/ and send it in the same header,
X-Api-Key. A PatentsView key does not work here. - Nothing else: q, f, s and o, the response shape (
error,count,total_hitsand the records under the endpoint's key) and the error forms are the same.
The PatentsView code examples notebook
In PatentSearch/0-patentsearch-api-demo.ipynb of PatentsView-Code-Examples, set api_key to a PatentRef key and base_url = "https://patentref.io". Every other cell runs as written: GET with the parameters as JSON text, POST with the parameter dictionary as the body (with or without the trailing slash), the detail route api/v1/patent/D345393/, and the inventors group unpacked with pandas. Every path of its endpoint table answers, api/v1/patent/otherreference included (the CPC class and subclass, USPC main class, WIPO and pre-grant ones with their documented 501). Its related-entity example queries inventors.inventor_country for "UK", which matches nothing here or upstream: the field holds ISO two-letter codes, so the United Kingdom is "GB" (grammar, Country codes). Its response_key() rule (the plural of the last path part, with ipcr for ipc and wipo for wipo) gives the key of every endpoint here:
| Endpoint | Response key |
|---|---|
api/v1/assignee | assignees |
api/v1/cpc_class | cpc_classes |
api/v1/cpc_group | cpc_groups |
api/v1/cpc_subclass | cpc_subclasses |
api/v1/g_brf_sum_text | g_brf_sum_texts |
api/v1/g_claim | g_claims |
api/v1/g_detail_desc_text | g_detail_desc_texts |
api/v1/g_draw_desc_text | g_draw_desc_texts |
api/v1/inventor | inventors |
api/v1/ipc | ipcr |
api/v1/location | locations |
api/v1/nber_category | nber_categories |
api/v1/nber_subcategory | nber_subcategories |
api/v1/patent | patents |
api/v1/patent/attorney | attorneys |
api/v1/patent/foreign_citation | foreign_citations |
api/v1/patent/other_reference | other_references |
api/v1/patent/rel_app_text | rel_app_texts |
api/v1/patent/us_application_citation | us_application_citations |
api/v1/patent/us_patent_citation | us_patent_citations |
api/v1/pg_brf_sum_text | pg_brf_sum_texts |
api/v1/pg_claim | pg_claims |
api/v1/pg_detail_desc_text | pg_detail_desc_texts |
api/v1/pg_draw_desc_text | pg_draw_desc_texts |
api/v1/publication | publications |
api/v1/publication/rel_app_text | rel_app_texts |
api/v1/uspc_mainclass | uspc_mainclasses |
api/v1/uspc_subclass | uspc_subclasses |
api/v1/wipo | wipo |
The CPC class and subclass, USPC main class and WIPO lookups may answer 501 in a build that lacks their data set (known differences); each patent carries the same facts in its cpc_current, cpc_at_issue, uspc_at_issue and wipo groups.
Client libraries and MCP servers
- rOpenSci
patentsview(R): version 1.0.0 builds its URLs inget_base(). Until a release takes a base URL setting, replace that function for the session:assignInNamespace("get_base", function(endpoint) sprintf("https://patentref.io/api/v1/%s/", endpoint), ns = "patentsview"), and setPATENTSVIEW_API_KEYto a PatentRef key. mustberuss/PatentsView-APIWrapper(Python): the URL insafe_patentsview_post()becomeshttps://patentref.io/api/v1/plus the entity.patent-mcp-server0.7.0: setPATENTSVIEW_BASE_URL=https://patentref.ioandPATENTSVIEW_API_KEY; no code change. Later releases return a fixed answer from their PatentsView tools.
Responses carry X-Data-Version; cache by it, and check it when a paged walk spans a weekly refresh.