PatentRef

Data version 20261027.2, as of 2026-10-27: the build these pages were checked against. API version 1.21.0.

/api/v1/g_claim/

Upstream view GClaimList (index g_claims, response key g_claims). Long text of granted patents, served since 2026-10-08 from the long-text build 20261006.4; GET /api/v1/meta/health/ shows text_data_version. The last grant date covered is 2025-12-30 in all four long-text endpoints: claims, brief summaries and drawing descriptions of patents granted 1976 to 2025-12-30, detailed descriptions of 2005 to 2025-12-30. Patents granted after 2025-12-30 (the weekly grants) have no long text yet and answer 0 rows here. Search it with _text_all, _text_any or _text_phrase. _contains matches within one word (a needle with a space answers 0 rows); _contains with a one-word needle, a range or an empty _begins on the text field answers 400 ERR_Q unless patent_id (up to 1,000 values) is in the same _and, since no index serves it. A query that matches nearly every row (_neq on patent_id) answers at once. The endpoint answers 501 ERR_NOT_IMPLEMENTED only when no long-text file is in service. The long text comes from its own file: X-Data-Version on these answers names the build of the main search file, and X-Text-Data-Version (the same value as text_data_version in GET /api/v1/meta/health/) names the long-text file; cache long text under X-Text-Data-Version. claim_sequence counts from 0 (claim 1 is claim_sequence 0); claim_number is the printed number as five digits ("00001"); claim_dependent is null for an independent claim and names the parent ("claim 1") for a dependent one; exemplary is "1" for the exemplary claim and "0" otherwise. Any field may be null where the bulk data has no value. Default fields (f): patent_id, claim_sequence, claim_text. Default sort (s): [{"patent_id": "asc"}, {"claim_sequence": "asc"}]. Default options (o): {"pad_patent_id": false}.

Routes
GET POST /api/v1/g_claim/
Response key
g_claims
Default f
patent_id, claim_sequence, claim_text
Default s
[{"patent_id": "asc"}, {"claim_sequence": "asc"}]
Default o
{"pad_patent_id": false}
q
required on the list route

Example

curl -s -G -H "X-Api-Key: $KEY" https://patentref.io/api/v1/g_claim/ \
  --data-urlencode 'q={"_gte": {"patent_id": "12050000"}}' \
  --data-urlencode 's=[{"patent_id": "asc"}, {"claim_sequence": "desc"}]' \
  --data-urlencode 'o={"size": 100, "after": ["12050006", 2]}'
import json, os, requests

base_url = "https://patentref.io"
headers = {"X-Api-Key": os.environ["PATENTREF_KEY"]}
params = {"q": {"_gte": {"patent_id": "12050000"}}, "s": [{"patent_id": "asc"}, {"claim_sequence": "desc"}], "o": {"size": 100, "after": ["12050006", 2]}}
r = requests.get(base_url + "/api/v1/g_claim/", headers=headers,
                 params={k: json.dumps(v) for k, v in params.items()})
r.raise_for_status()
data = r.json()
print(data["total_hits"], data["g_claims"][:3])

Fields

Kind is how q treats the field (grammar, Field kinds). Sortable fields go in s. Nested fields are named with a dot in q and f; naming the group returns its upstream fields, and a field whose note says it is present only when f names it comes back only then. The rows of a group come in the order of their source (grammar, the response and paging).

FieldTypeKindSortableNote
patent_idstringkeywordyes
claim_numberstringkeywordyes
claim_dependentstringkeywordyes
claim_textstringtext
claim_sequenceintegernumberyes
exemplarystringnumberyes

Machine-readable: this page's data as JSON, and the operation in openapi.json (operationId GClaimList).