---
title: "Search, analyze and map patent landscapes across major jurisdictions (US, EP, WO, CN, JP, KR). Three modes: (1) search —"
method: POST
path: "/api/v1/call/patent_landscape"
tags: ["data"]
---

# Search, analyze and map patent landscapes across major jurisdictions (US, EP, WO, CN, JP, KR). Three modes: (1) search —

`POST /api/v1/call/patent_landscape`

## Request

- Base URL: `https://mcp.gapup.io`
- URL: `https://mcp.gapup.io/api/v1/call/patent_landscape`
- Auth: HTTP bearer

Search, analyze and map patent landscapes across major jurisdictions (US, EP, WO, CN, JP, KR). Three modes: (1) search — find patents by keywords, company name or inventor name; (2) landscape — aggregate distributions: top assignees, top inventors, CPC class breakdown, filings by year, citation leaders, white-space innovation opportunities; (3) lookup — retrieve a specific patent by number (e.g. US10000000B2, EP3456789A1, WO2023/123456). Primary source: WIPO PatentScope (WO PCT, keyless). Optional sources: USPTO PatentsView (US, env PATENTSVIEW_API_KEY), EPO OPS (EP/WO, env EPO_OPS_CONSUMER_KEY + EPO_OPS_CONSUMER_SECRET), Lens.org (global, env LENS_API_TOKEN). Use cases: freedom-to-operate (FTO) analysis, R&D gap identification, VC due diligence IP audit, competitor patent portfolio mapping, inventor network analysis. SLA: <=24s p95 (parallel fetches, 8s per source). Cache: 24h TTL (patent data stable). Quality score: 30 pts per retrieved source (max 90), +10 if >=10 patents, +10 bonus for landscape mode with non-empty top_assignees.

## Request body

- object
  - `query` string, required: Keywords, company/inventor name, or patent number (e.g. "machine learning", "Tesla Inc", "US10000000B2")
  - `mode` 'search' | 'landscape' | 'lookup': search: keyword/inventor/assignee search; landscape: aggregate distributions; lookup: fetch by patent number. Default: "search"
  - `jurisdictions` string[]: Jurisdictions to include. Default: ["US","EP","WO"]
  - `date_from` string: ISO date YYYY-MM-DD — earliest filing date
  - `date_to` string: ISO date YYYY-MM-DD — latest filing date
  - `max_results` number: Max patents to return (5-50). Default: 20
  - `async` boolean: If true, returns a job_id immediately (<200ms) instead of waiting for the result. Poll the result with job_result(job_id). Use for slow tools to avoid client timeouts.

## Response `200`

Tool result

- object
  - `tool` string
  - `result` object
    - `query` string, required
    - `mode` 'search' | 'landscape' | 'lookup', required
    - `patents` object[], required
      - `patent_number` string, required
      - `title` string, required
      - `assignee` string, required
      - `inventors` string[], required
      - `filing_date` string, required
      - `grant_date` string
      - `abstract` string, required
      - `cpc_codes` string[]
      - `ipc_codes` string[]
      - `citations_received` number
      - `family_size` number
      - `status` 'granted' | 'pending' | 'expired' | 'withdrawn'
      - `url` string, required
      - `source` 'USPTO_PatentsView' | 'Google_Patents' | 'EPO_OPS' | 'Lens', required
    - `landscape` object
      - `top_assignees` object[], required
        - `name` string, required
        - `count` number, required
        - `pct` number, required
      - `top_inventors` object[], required
        - `name` string, required
        - `count` number, required
      - `cpc_distribution` object[], required
        - `code` string, required
        - `label` string, required
        - `count` number, required
        - `pct` number, required
      - `filings_by_year` object[], required
        - `year` number, required
        - `count` number, required
      - `citation_leaders` object[], required
        - `patent_number` string, required
        - `citations` number, required
      - `white_space_hint` string
    - `sources` object[], required
      - `name` string, required
      - `url` string, required
      - `status` 'retrieved' | 'partial' | 'unavailable', required
    - `quality_score` number, required
    - `status` 'partial' | 'final' | 'failed', required
  - `request_id` string
  - `source` 'rest-api'
  - `ms` number

## Other responses

- `400`: Invalid arguments
- `401`: Unauthorized
- `402`: Payment Required — pay via x402 (USDC on Base) then retry with X-Payment header
- `404`: Tool not found
- `429`: Rate limited
- `500`: Internal error

---

[API](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api.md) · [All operations](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/revisions/afb9da3b98f4?raw)
