Google Patents
Patents with number, assignee, inventor, priority and publication dates, PDF.
Google Patents results with publication number, assignee, inventor, priority, filing, grant and publication dates, and the PDF.
Request body
Send a JSON object with Content-Type: application/json. The same parameters also work
as a query string on GET /v1/patents. JSON arrays are rejected: to run many queries at
once, use POST /v1/batches at half price. Unknown parameters
return 400 invalid_request with a message that names the replacement; see
strict validation.
| Parameter | Type | Default | Description |
|---|---|---|---|
q required | string | The search query. Required. Up to 2,048 characters. | |
num | integer | 10 | Results per call. 10 per page; 100 fetches the top 100 as a depth bundle for 7 credits instead of 10. One of: 10, 20, 30, 50, 100. |
page | integer | 1 | Results page, 1–10. Each page is billed separately. |
format | string | json | Response format. markdown is LLM-ready prose; compact is JSON with only the fields agents need. One of: json, compact, markdown. |
fields | string | Comma-separated projection, e.g. results.title,results.link,knowledge_graph. Cuts tokens. |
Example request
Authenticate with Authorization: Bearer $SERPKITE_API_KEY (GET requests may pass
?api_key= instead). The official SDKs read
SERPKITE_API_KEY for you. See Authentication.
curl https://api.serpkite.com/v1/patents \
-H "Authorization: Bearer $SERPKITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q":"solid state battery electrolyte"}'Response fields
| Field | Type | Description |
|---|---|---|
request | object | The normalised request, with defaults filled in: endpoint, engine, q, country, language, location, num, page, device, autocorrect… |
results[] | array | position, title, snippet, link, publication_number, priority_date, filing_date, grant_date, publication_date, inventor, assignee, language, pdf_url, thumbnail_url. |
meta | object | request_id, credits_used, cached, cached_at, engine (the provider that answered), route (provider attempts, see Search providers), latency_ms, parse_quality (ok, partial, empty), resolved_urls. |
Every billed response also carries credit and latency headers
(X-Credits-Used, X-Credits-Remaining, X-Request-Id…).
Example response
{
"request": {
"endpoint": "patents",
"engine": "google",
"q": "solid state battery electrolyte"
},
"results": [
{
"position": 1,
"title": "Solid electrolyte composition and all-solid-state battery",
"snippet": "A sulfide solid electrolyte with improved ionic conductivity…",
"link": "https://patents.example.com/patent/US0000000A1",
"publication_number": "US0000000A1",
"priority_date": "2024-03-01",
"filing_date": "2025-02-27",
"publication_date": "2026-09-03",
"inventor": "Jane Example",
"assignee": "Example Energy Co",
"language": "en",
"pdf_url": "https://patents.example.com/pdf/US0000000A1.pdf"
}
],
"meta": {
"request_id": "req_01J8ZK4M6Q2V7",
"credits_used": 1,
"cached": false,
"engine": "google",
"latency_ms": 1034,
"parse_quality": "ok",
"resolved_urls": true
}
}Errors
Errors use one shape: {"error":{"code","message","request_id"}}. Errors are never billed.
Full list in Errors.
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | A parameter is missing or invalid. |
| 401 | unauthorized | The API key is missing, invalid or revoked. |
| 402 | insufficient_credits | Your balance is too low. Buy a pack or wait for the monthly free grant. |
| 429 | rate_limited | Too many requests per second for your plan. Retry after the Retry-After header. |
| 503 | upstream_error | Google could not be fetched or parsed. Not billed; retry after Retry-After. |