{
  "openapi": "3.0.1",
  "info": {
    "title": "DPMA German Trademark Register Scraper: Bulk Search & Watchlist",
    "description": "Bulk-search the DPMA German trademark register for multiple candidate marks in one run. Get status, Nice classes, opposition history, and full procedure timelines, plus a recurring watch mode reporting only new or changed marks. Built for IP clearance, not one mark at a time. From $0.00035/result.",
    "version": "0.1",
    "x-build-id": "sMb6YbZYQBQH3aNzt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~dpma-trademark-register-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-dpma-trademark-register-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/getascraper~dpma-trademark-register-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-dpma-trademark-register-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/getascraper~dpma-trademark-register-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-dpma-trademark-register-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": {
          "searchTerms": {
            "title": "Search terms",
            "maxItems": 25,
            "type": "array",
            "description": "One or more mark names, applicant/owner names, or registration numbers to search for. Put several candidate brand names here to run a bulk clearance check in a single run instead of one Actor run per name, the main gap versus the two DPMA-specific competitor Actors, which only accept one query per run.",
            "items": {
              "type": "string"
            },
            "default": [
              "BMW"
            ]
          },
          "registerScope": {
            "title": "Register scope",
            "enum": [
              "DE",
              "ALL"
            ],
            "type": "string",
            "description": "German marks only (DE) covers national DPMA registrations, the actor's core focus. All also includes EU-unitary and international Madrid-system marks that DPMA's own register shows as designating Germany, useful for a fuller clearance picture but noisier for a pure German-register lookup.",
            "default": "DE"
          },
          "statusFilter": {
            "title": "Status filter (contains match)",
            "type": "array",
            "description": "Only return marks whose register status text contains one of these snippets (case-insensitive), for example \"eingetragen\" for registered marks or \"gel\" to catch cancelled ones. Leave empty to return every status. DPMA's real status strings are German phrases like \"Marke eingetragen\", \"Marke eingetragen/Schutz bewilligt\", and \"Marke gelöscht/Schutz erloschen\", confirmed live, so a strict dropdown would risk silently excluding a real status this actor has not seen yet. Applied directly against the register's own status column, so this filter adds no extra requests.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxResultsPerTerm": {
            "title": "Max results per search term",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of matching marks to return for each search term. Keep this modest for clearance checks, where you mainly need to know if close matches exist, not every historical filing.",
            "default": 10
          },
          "fetchDetails": {
            "title": "Fetch full detail record",
            "type": "boolean",
            "description": "Fetch each mark's full register page for the deep fields the results list does not include: Nice classes, goods and services text, applicant and representative address, opposition-period dates, seniority, and the complete procedure history (filing, opposition, renewal, assignment events). Adds one extra request per result, so it is off by default. This is the actor's other main differentiator: the two broader EU/TMview-based competitors only expose current status and an opposition window, not the full DPMA procedure history.",
            "default": false
          },
          "niceClasses": {
            "title": "Nice classes filter",
            "type": "string",
            "description": "Only keep marks registered in these Nice classification classes, for example \"9, 25, 42\". Only takes effect when \"Fetch full detail record\" is also enabled above, since the class list is a detail-page field, not part of the cheap results list. Leave blank to skip this filter.",
            "default": ""
          },
          "watchMode": {
            "title": "Recurring watch mode",
            "type": "boolean",
            "description": "Turn this into a monitor: instead of returning every match on every run, the actor remembers what it saw last time (per search term, in a named state store) and only returns marks that are new or have changed since the previous run with the same watch state name. Pair with an Apify schedule for ongoing brand-clearance or portfolio monitoring, the recurring-use case neither DPMA-specific competitor Actor offers today.",
            "default": false
          },
          "watchStateName": {
            "title": "Watch state name",
            "type": "string",
            "description": "Name for this run's saved watch state, only used when recurring watch mode is on. Use a different name for each independent watchlist (for example one per client or brand) so their histories do not overwrite each other.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "DPMAregister returned plain HTTP 200 responses with no anti-bot challenge during live testing, so Apify's datacenter proxy group is the default. Only switch to residential if you start seeing blocked or empty responses.",
            "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}