tmview-py
CLI tool to search EU trademark registries via TMview, which aggregates 137M+ marks from EUIPO, all 27 EU member states, and WIPO international registrations.
Install
pip install -e .
Usage
tmview <query> [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
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 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 <timestamp>) on stderr. Delete the cache directory to force fresh results.
