# tmview-py CLI tool to search EU trademark registries via [TMview](https://www.tmdn.org/tmview/), which aggregates 137M+ marks from EUIPO, all 27 EU member states, and WIPO international registrations. ## Install ```bash pip install -e . ``` ## Usage ```bash tmview [options] ``` ``` Options: -o, --offices CODES Comma-separated office codes (default: all EU + WIPO) -l, --limit N Max results (default: 20, max: 100) -c, --classes NUMS Nice class filter, comma-separated (e.g. 9,35) -s, --status STATUS registered | pending | expired -v, --verbose Show fetch timestamp column -d, --download-logos Download logo images to DIR --similar-to IMG Find trademarks with visually similar logos to IMG --json Output raw JSON instead of table --page N Page number (default: 1) --all-offices Also include non-EU offices (US, GB, JP, CH, etc.) ``` ## Examples ```bash tmview "NIKE" tmview "TESLA" --offices EM,DE,FR tmview "APPLE" --classes 9,35 --status registered tmview "GOOGLE" --json | jq '.[:3]' tmview "COCA COLA" --limit 50 --page 2 tmview "Hacking-Lab" --all-offices -v # Image similarity search tmview --similar-to logo.png tmview --similar-to logo.png --all-offices -d ./matches ``` ## Output columns | Column | Description | |---------|-------------| | Origin | Office code + name where the mark was filed | | Name | Trademark name | | Status | Registration status (colour-coded) | | Type | Mark type: Word, Figurative, Combined, 3D, etc. | | Owner | First listed applicant/owner | | Classes | Nice classes (see below) | | Applied | Application date | | App # | Application number | | Fetched | Timestamp of the API request (`-v` only) | ### Nice classes Trademarks are categorised by the [Nice Classification](https://www.wipo.int/nice/en/) system — 45 classes that group goods and services. Common ones: | Class | Covers | |-------|--------| | 9 | Software, electronics, computers | | 25 | Clothing, footwear | | 35 | Advertising, business services | | 38 | Telecommunications | | 41 | Education, entertainment | | 42 | IT services, SaaS, research | Use `-c` to filter: `tmview "APPLE" -c 9,42` ### Status colours - **Green** — Registered - **Yellow** — Filed / Pending - **Red** — Expired / Refused ### Office codes Default search covers all EU member states plus EUIPO (`EM`) and WIPO international registrations (`WO`). Notable codes: | Code | Registry | |------|----------| | `EM` | EUIPO (EU-wide) | | `WO` | WIPO / Madrid Protocol (international) | | `BX` | Benelux (Belgium, Netherlands, Luxembourg) | | `DE` | Germany | | `FR` | France | | `GB` | UK (post-Brexit) | | `CH` | Switzerland | | `US` | USPTO | Full list: `tmview --help` ## Caching Results are cached in `~/.cache/tmview/` keyed by query parameters. Cached responses are served instantly and flagged with `(cached — fetched )` on stderr. Delete the cache directory to force fresh results.