/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
GETPOST/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).
| Field | Type | Kind | Sortable | Note |
|---|---|---|---|---|
patent_id | string | keyword | yes | |
claim_number | string | keyword | yes | |
claim_dependent | string | keyword | yes | |
claim_text | string | text | ||
claim_sequence | integer | number | yes | |
exemplary | string | number | yes |
Machine-readable: this page's data as JSON, and the operation in openapi.json (operationId GClaimList).