patentgrepDocs

PatentsView-compatible

Classification

CPC classes, subclasses and groups, IPC, USPC main classes and subclasses, and WIPO fields, each with titles and patent counts.

Send q, f, s and o as one JSON body with POST, or as JSON-encoded query parameters with GET.

Try itDemo key
POST /api/v1/cpc_class/
Response200Recorded 11 Oct 2026
{
  "error": false,
  "count": 1,
  "total_hits": 1,
  "cpc_subclasses": [
    {
      "cpc_subclass_id": "H01M",
      "cpc_subclass_title": "PROCESSES OR MEANS, e.g. BATTERIES, FOR THE DIRECT CONVERSION OF CHEMI…",
      "cpc_subclass_num_patents": 108332
    }
  ]
}

Request body

qobjectRequired

The query. A field and value matches exactly; combine clauses with _and, _or and _not. Dates use YYYY-MM-DD.

farray of stringsDefault: the endpoint's default fields

Fields to return. Name a group such as assignees to get all of its fields, or one field such as assignees.assignee_organization.

sarray of objects

Sort order, for example [{"patent_date": "desc"}]. Only sortable fields are allowed; end with a unique field to keep paging stable.

oobject
sizeRows per page. Default 100, up to 1,000. 0 returns only the count.afterCursor: the last row's sort values, in sort order.offsetSkip rows. Don't combine with after.

Operators and cursor paging work as on Patents.

curl https://api.patentgrep.com/api/v1/cpc_class/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"cpc_subclass_id": "H01M"},
    "f": [
      "cpc_subclass_id",
      "cpc_subclass_title",
      "cpc_subclass_num_patents"
    ]
  }'

/api/v1/cpc_class/

POST/api/v1/cpc_class/

Rows come back in cpc_classes. Without f you get cpc_class_id, cpc_class_title, cpc_class_first_seen_date. One record by id: GET /api/v1/cpc_class/{cpc_class_id}/.

8 fields
FieldTypeSortDescription
cpc_class_idstringYesThe three-character symbol for this Cooperative Patent Classification (CPC) Class.
cpc_class_titlestringNoThe descriptive title for this CPC Class.
cpc_class_first_seen_datedateYesThe publication date for the first patent to be assigned this class.
cpc_class_last_seen_datedateYesThe publication date for the most recent patent to be assigned this class.
cpc_class_years_activeintegerYesThe length of time in years over which this class has been in use.
cpc_class_num_patentsintegerYesThe number of patents to which this class is assigned.
cpc_class_num_assigneesintegerYesThe number of unique assignees that appear on patents assigned this class.
cpc_class_num_inventorsintegerYesThe number of unique inventors that appear on patents assigned this class.
curl https://api.patentgrep.com/api/v1/cpc_class/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"cpc_class_id": "example-id"},
    "f": [
      "cpc_class_id",
      "cpc_class_title",
      "cpc_class_first_seen_date"
    ],
    "s": [{"cpc_class_id": "asc"}],
    "o": {"size": 25}
  }'

/api/v1/cpc_subclass/

POST/api/v1/cpc_subclass/

Rows come back in cpc_subclasses. Without f you get cpc_subclass_id, cpc_subclass_title, cpc_class_id. One record by id: GET /api/v1/cpc_subclass/{cpc_subclass_id}/.

10 fields
FieldTypeSortDescription
cpc_subclass_idstringYesID for the CPC subclass.
cpc_subclass_titlestringNoTitle or description of the CPC subclass.
cpc_class_idstringNoCPC “class” symbol.
cpc_classstringNoName or description of the CPC class.
cpc_subclass_first_seen_datedateYesDate when the CPC subclass was first recorded.
cpc_subclass_last_seen_datedateYesDate when the CPC subclass was last recorded.
cpc_subclass_years_activeintegerYesNumber of years the CPC subclass has been active.
cpc_subclass_num_patentsintegerYesNumber of patents associated with the CPC subclass.
cpc_subclass_num_assigneesintegerYesNumber of assignees associated with the CPC subclass.
cpc_subclass_num_inventorsintegerYesNumber of inventors associated with the CPC subclass.
curl https://api.patentgrep.com/api/v1/cpc_subclass/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"cpc_subclass_id": "example-id"},
    "f": ["cpc_subclass_id", "cpc_subclass_title", "cpc_class_id"],
    "s": [{"cpc_subclass_id": "asc"}],
    "o": {"size": 25}
  }'

/api/v1/cpc_group/

POST/api/v1/cpc_group/

Rows come back in cpc_groups. Without f you get cpc_group_id, cpc_group_title, cpc_subclass_id. One record by id: GET /api/v1/cpc_group/{cpc_group_id}/, writing / in the id as :.

6 fields
FieldTypeSortDescription
cpc_group_idstringYesUnique identifier for the CPC group.
cpc_group_titlestringNoTitle or description of the CPC group.
cpc_subclass_idstringNoCPC "subclass" symbol to which the group belongs.
cpc_subclassstringNoName or description of the CPC subclass to which the group belongs.
cpc_class_idstringNoCPC "class" symbol to which the group belongs.
cpc_classstringNoName or description of the CPC class.
curl https://api.patentgrep.com/api/v1/cpc_group/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"cpc_group_id": "example-id"},
    "f": ["cpc_group_id", "cpc_group_title", "cpc_subclass_id"],
    "s": [{"cpc_group_id": "asc"}],
    "o": {"size": 25}
  }'

/api/v1/ipc/

POST/api/v1/ipc/

Rows come back in ipcr. Without f you get ipc_id, ipc_section, ipc_class. One record by id: GET /api/v1/ipc/{ipc_id}/.

4 fields
FieldTypeSortDescription
ipc_idstringYesPatentsView-internal ID for the IPC entry.
ipc_sectionstringNoTop-level IPC section (A–H).
ipc_classstringNoClass portion of the International Patent Classification.
ipc_subclassstringNoSpecific subclass symbol within the section (e.g., G06).
curl https://api.patentgrep.com/api/v1/ipc/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"ipc_id": "example-id"},
    "f": ["ipc_id", "ipc_section", "ipc_class"],
    "s": [{"ipc_id": "asc"}],
    "o": {"size": 25}
  }'

/api/v1/uspc_mainclass/

POST/api/v1/uspc_mainclass/

Rows come back in uspc_mainclasses. Without f you get uspc_mainclass_id, uspc_mainclass_title, uspc_mainclass_first_seen_date. One record by id: GET /api/v1/uspc_mainclass/{uspc_mainclass_id}/.

8 fields
FieldTypeSortDescription
uspc_mainclass_idstringYesID for the main U.S. classification at issue.
uspc_mainclass_titlestringNoDescription of uspc mainclass.
uspc_mainclass_first_seen_datedateYesDate when the main U.S. classification was first recorded.
uspc_mainclass_last_seen_datedateYesDate when the main U.S. classification was last recorded.
uspc_mainclass_years_activeintegerYesNumber of years the main U.S. classification has been active.
uspc_mainclass_num_patentsintegerYesNumber of patents associated with the main U.S. classification.
uspc_mainclass_num_assigneesintegerYesNumber of assignees associated with the main U.S. classification.
uspc_mainclass_num_inventorsintegerYesNumber of inventors associated with the main U.S. classification.
curl https://api.patentgrep.com/api/v1/uspc_mainclass/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"uspc_mainclass_id": "example-id"},
    "f": [
      "uspc_mainclass_id",
      "uspc_mainclass_title",
      "uspc_mainclass_first_seen_date"
    ],
    "s": [{"uspc_mainclass_id": "asc"}],
    "o": {"size": 25}
  }'

/api/v1/uspc_subclass/

POST/api/v1/uspc_subclass/

Rows come back in uspc_subclasses. Without f you get uspc_subclass_id, uspc_subclass_title, uspc_mainclass_id. One record by id: GET /api/v1/uspc_subclass/{uspc_subclass_id}/, writing / in the id as :.

4 fields
FieldTypeSortDescription
uspc_subclass_idstringYesID for the subclass.
uspc_subclass_titlestringNoThe description of the uspc subclass.
uspc_mainclass_idstringNoID for the main U.S. classification at issue.
uspc_mainclassstringNoThe main U.S. classification (class) at issue.
curl https://api.patentgrep.com/api/v1/uspc_subclass/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"uspc_subclass_id": "example-id"},
    "f": [
      "uspc_subclass_id",
      "uspc_subclass_title",
      "uspc_mainclass_id"
    ],
    "s": [{"uspc_subclass_id": "asc"}],
    "o": {"size": 25}
  }'

/api/v1/wipo/

POST/api/v1/wipo/

Rows come back in wipo. Without f you get wipo_id, sector_title, field_title. One record by id: GET /api/v1/wipo/{wipo_id}/.

3 fields
FieldTypeSortDescription
wipo_idstringYesUnique identifier for the WIPO entry.
sector_titlestringNoWIPO technology sector title.
field_titlestringNoWIPO technology field title.
curl https://api.patentgrep.com/api/v1/wipo/ \
  -H "X-Api-Key: $PATENTGREP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": {"wipo_id": "example-id"},
    "f": ["wipo_id", "sector_title", "field_title"],
    "s": [{"wipo_id": "asc"}],
    "o": {"size": 25}
  }'