# EU Trademark Search (EUIPO)

> EU Trademark Search (EUIPO) is a paid API for AI agents from euipo.use.x402atlas.com, paid per call via x402, $0.5/call, status unknown (last checked 2026-10-12).

Searches the EUIPO database for registered and pending EU trademarks by name, with optional Nice class filtering, returning trademark details as structured JSON.

## Facts

- Endpoint: GET https://euipo.use.x402atlas.com/search?utm_source=zero.xyz
- Price: $0.5/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/eu-trademark-search-euipo-c23427c2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ieqVAqz6dXbk7bboEFqut

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability eu-trademark-search-euipo-c23427c2
```

Example prompt: Search the EU trademark database for 'Luminara' to see if it's already registered — filter by Nice class 25 so I can check if it's taken for clothing brands.

## When to prefer this

Use this endpoint when you need to search the official EU trademark registry (EUIPO) for brand name conflicts, trademark ownership, or application status — particularly when you need structured JSON output with owner names, Nice class breakdown, and key dates. Prefer this over general web search when you need authoritative, structured EUIPO data rather than scraped or aggregated results.

## Known failure modes

- Missing or too-short query string (under 2 characters) returns a validation error
- Invalid Nice class value outside 1–45 or malformed comma-separated list returns a schema error
- Zero results returns an empty trademarks array with a note field explaining no matches were found
- EUIPO backend unavailability may cause timeouts or upstream errors
- Results are capped at 20 per call regardless of total matches, so pagination is not supported

## How this service works

EU trademark search (EUIPO) — find registered and pending EU trademarks by name, optionally filtered by Nice class; returns trademark names, application numbers, status, owners, classes and key dates as clean JSON.

## Output

Returns a JSON object echoing the query and Nice class filter, the total number of matching EU trademarks (capped at 10,000), and up to 20 of the most relevant results. Each trademark record includes the verbal name, application number, status (e.g. REGISTERED, UNDER_EXAMINATION, EXPIRED, WITHDRAWN), mark kind (STANDARD, COLLECTIVE, CERTIFICATION), applicant/owner names, Nice classes, filing date, registration date, expiry date, and mark feature.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "query"
     ],
     "properties": {
      "query": {
       "type": "string",
       "maxLength": 200,
       "minLength": 2,
       "description": "Trademark name to search; finds identical, similar and lookalike EU marks."
      },
      "nice_class": {
       "type": "string",
       "pattern": "^([1-9]|[1-3][0-9]|4[0-5])(,([1-9]|[1-3][0-9]|4[0-5]))*$",
       "description": "Nice classification filter: one class or a comma-separated list, each 1–45 (e.g. \"25\" or \"9,25\")."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "query",
      "nice_class",
      "total",
      "trademarks"
     ],
     "properties": {
      "note": {
       "type": "string",
       "description": "Present only on the sample response (empty/omitted query) and on a zero-match response."
      },
      "query": {
       "type": "string",
       "description": "Echoed search query (trimmed)"
      },
      "total": {
       "type": "integer",
       "description": "Total matching EU trademarks, capped at 10000 (the response carries the 20 most relevant)"
      },
      "nice_class": {
       "type": [
        "string",
        "null"
       ],
       "description": "Echoed nice_class filter; null when none was passed"
      },
      "trademarks": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "application_number",
         "name",
         "status",
         "status_date",
         "mark_feature",
         "mark_kind",
         "nice_classes",
         "applicants",
         "filing_date",
         "registration_date",
         "expiry_date"
        ],
        "properties": {
         "name": {
          "type": "string",
          "description": "Verbal element of the mark; empty for purely figurative marks"
         },
         "status": {
          "type": "string",
          "d
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/eu-trademark-search-euipo-c23427c2/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from euipo.use.x402atlas.com](https://www.zero.xyz/host/euipo.use.x402atlas.com/llms.txt)
