{
  "openapi": "3.0.1",
  "info": {
    "title": "Unified Patent Court Scraper - UPC Cases & Parties",
    "description": "Scrape the Unified Patent Court case registry: case number, action type, phase, division, parties, representatives, judges, patents. Export to CSV, Excel, JSON or XML.",
    "version": "0.2",
    "x-build-id": "ENibzD0ZvA3yLYjh2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~unified-patent-court-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-unified-patent-court-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/parseforge~unified-patent-court-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-unified-patent-court-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/parseforge~unified-patent-court-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-unified-patent-court-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "caseUrls": {
            "title": "Case page URLs",
            "type": "array",
            "description": "Unified Patent Court case pages, for example https://www.unifiedpatentcourt.org/en/node/184204. Leave empty to use the registry search instead.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "actionTypeIds": {
            "title": "Action or application type",
            "type": "array",
            "description": "The registry's own action list. Each type you tick runs one registry search, so two types means two searches. Leave empty to search every type at once.",
            "items": {
              "type": "string",
              "enum": [
                "458",
                "449",
                "453",
                "454",
                "445",
                "450",
                "469",
                "461",
                "457"
              ],
              "enumTitles": [
                "Action against decision",
                "Appeal",
                "Counter claim for infringement",
                "Counter claim for revocation",
                "Generic",
                "Infringement",
                "Other",
                "Provisional measures",
                "Revocation"
              ]
            }
          },
          "courtDivisionIds": {
            "title": "Court division",
            "type": "array",
            "description": "Court of Appeal, central divisions, local divisions and the Nordic Baltic regional division. Each division you tick runs one more registry search.",
            "items": {
              "type": "string",
              "enum": [
                "125",
                "126",
                "127",
                "349",
                "139",
                "140",
                "134",
                "135",
                "141",
                "143",
                "144",
                "136",
                "137",
                "133",
                "132",
                "138",
                "142",
                "223"
              ],
              "enumTitles": [
                "Court of Appeal, Luxembourg",
                "Central Division, Paris",
                "Central Division, Munich",
                "Central Division, Milan",
                "Local Division, Brussels",
                "Local Division, Copenhagen",
                "Local Division, Dusseldorf",
                "Local Division, Hamburg",
                "Local Division, Helsinki",
                "Local Division, Lisbon",
                "Local Division, Ljubljana",
                "Local Division, Mannheim",
                "Local Division, Milan",
                "Local Division, Munich",
                "Local Division, Paris",
                "Local Division, The Hague",
                "Local Division, Vienna",
                "Regional Division, Nordic Baltic"
              ]
            }
          },
          "maxItems": {
            "title": "Maximum cases",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "How many cases to deliver. Free users get a 10 case preview per run; paid users can ask for up to 1,000,000. The registry itself serves 60 cases per results page."
          },
          "caseNumber": {
            "title": "Case number",
            "type": "string",
            "description": "A full or partial case number, for example UPC-CFI-0003057/2026 or UPC_CoA_1/2024."
          },
          "patentNumber": {
            "title": "Patent number",
            "type": "string",
            "description": "The European patent or application number a case is about, for example EP1996376."
          },
          "patentName": {
            "title": "Patent name",
            "type": "string",
            "description": "The title of the patent, matched the way the registry matches it."
          },
          "partyName": {
            "title": "Party name",
            "type": "string",
            "description": "A claimant, defendant, applicant, respondent or proprietor on the record, for example Nokia."
          },
          "partyTypeId": {
            "title": "Party type",
            "enum": [
              "384",
              "382",
              "381",
              "380",
              "442",
              "383"
            ],
            "type": "string",
            "description": "Restrict the party name match to one role on the case."
          },
          "casePhaseId": {
            "title": "Case phase",
            "enum": [
              "446",
              "456",
              "451",
              "483",
              "443"
            ],
            "type": "string",
            "description": "Where the case stands in the procedure."
          },
          "languageId": {
            "title": "Language of proceedings",
            "enum": [
              "224",
              "225",
              "33",
              "226",
              "34",
              "35",
              "227",
              "228",
              "229",
              "230"
            ],
            "type": "string",
            "description": "The language the case is conducted in."
          },
          "representative": {
            "title": "Representative",
            "type": "string",
            "description": "The name of a representative on the record, for example Fuhrmann."
          },
          "documentName": {
            "title": "Document name",
            "type": "string",
            "description": "Matches the title of a document filed in the case, for example Statement of claim."
          },
          "filedAfter": {
            "title": "Lodged on or after",
            "type": "string",
            "description": "Date of formal receipt, as YYYY-MM-DD. The registry field is a real date input, so 01/06/2023 is silently discarded and 2023-06-01 works."
          },
          "filedBefore": {
            "title": "Lodged on or before",
            "type": "string",
            "description": "Date of formal receipt, as YYYY-MM-DD."
          },
          "decidedAfter": {
            "title": "Order or decision on or after",
            "type": "string",
            "description": "Date of an order or decision in the case, as YYYY-MM-DD."
          },
          "decidedBefore": {
            "title": "Order or decision on or before",
            "type": "string",
            "description": "Date of an order or decision in the case, as YYYY-MM-DD."
          },
          "maxBrowsers": {
            "title": "Browser budget",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "The most browsers a run may open. The court's edge lets some exit addresses through and holds others, so a run trades a spent address for a fresh one up to this ceiling. Six launches were needed on one measured run.",
            "default": 12
          },
          "challengeWaitSecs": {
            "title": "Seconds to wait out the edge check",
            "minimum": 20,
            "maximum": 240,
            "type": "integer",
            "description": "How long one address gets to clear the court's edge check before the run swaps it. Measured at 16 to 24 seconds when it clears at all, so a longer wait mostly buys idle time.",
            "default": 40
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The court's edge answers a direct container address far less often than a rotating one, so the Apify datacenter pool is on by default and every third browser reaches for a residential address instead. Measured 2026-09-08.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}