EUIPO Trademark Search
Pricing
Pay per usage
EUIPO Trademark Search
Search EU trademark filings via the official EUIPO API. Supports multi-word brand names, combined keyword searches in a single run, date range and Nice class filtering, and automatic token caching.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
DoppelSpotter
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
Search the official EUIPO Trademark Search API for EU trademark filings matching one or more brand keywords. Built by DoppelSpotter and published at doppelspotter/euipo-trademark-search.
Key features
- Multi-keyword OR queries in a single run — accepts a
keywordsarray and compiles all terms into one RSQL OR group, so your entire brand vocabulary is covered in a single actor invocation:(verbalElement=="*sparx*",verbalElement=="*sparx maths*"). - Full support for multi-word brand names — all search values are correctly quoted in RSQL so terms containing spaces work exactly as expected:
verbalElement=="*sparx maths*". - Expiry-aware token caching — the EUIPO OAuth2 response includes an 8-hour
expires_in. The actor caches the access token in an Apify Key-Value Store and reuses it until it is within 5 minutes of expiry, so most runs start immediately without re-authenticating. - Refresh-token grant — when a token nears expiry, the actor uses the
refresh_tokenreturned by EUIPO to silently extend the session rather than re-sending full credentials. - 429 rate-limit handling — respects the EUIPO
Retry-Afterheader and retries automatically. - Optional trademark filters — filter results by Nice class, trademark status, and mark type directly from the input schema.
- Demo mode — runs without credentials and outputs registration instructions rather than failing the run, so the Apify Store healthcheck works out of the box.
Authentication
- Register a free account at dev.euipo.europa.eu
- Create an app to receive a Client ID and Client Secret
- Subscribe to the Trademark search API plan
The actor uses the OAuth2 client_credentials flow and caches the resulting access token in an Apify Key-Value Store named euipo-token-cache so subsequent runs in the same Apify account can reuse it without round-tripping to the auth server on every invocation.
Input
| Field | Type | Required | Description |
|---|---|---|---|
clientId | string (secret) | yes | EUIPO developer portal Client ID |
clientSecret | string (secret) | yes | EUIPO developer portal Client Secret |
keywords | string[] | yes | Brand keywords; multi-word terms with spaces are fully supported |
dateFrom | string (YYYY-MM-DD) | no | Lower bound for the trademark application date |
dateTo | string (YYYY-MM-DD) | no | Upper bound for the trademark application date |
maxResults | integer 1–500 | no | Default: 50 |
niceClass | string | no | Comma-separated class numbers, e.g. 9,42 |
status | enum | no | REGISTERED, APPLICATION_PUBLISHED, etc. |
markFeature | enum | no | WORD, FIGURATIVE, etc. |
useSandbox | boolean | no | Default: false. Use EUIPO sandbox for testing |
Output
One dataset item per matching trademark application:
{"applicationNumber": "019301286","markName": "SparX Wallet","applicantName": "BROXUS HOLDINGS LTD","niceClasses": "9, 42","filingDate": "2026-01-09","registrationDate": "","expiryDate": "","status": "APPLICATION_PUBLISHED","markType": "Word Mark","markKind": "Individual","markBasis": "EU Trademark","representativeName": "","goodsAndServicesDescription": "Class 9: ...","renewalStatus": "","markImageUrl": "","euipoUrl": "https://euipo.europa.eu/eSearch/#basic/1+1+1+1/50+50+50+50/019301286","extractedAt": "2026-03-16T12:00:00.000Z","requestMetadata": {"keywords": ["sparx", "sparx maths"],"dateFrom": "2025-03-15","dateTo": "2026-03-16","maxResults": 50,"filter": "(wordMarkSpecification.verbalElement==\"*sparx*\",wordMarkSpecification.verbalElement==\"*sparx maths*\");applicationDate>=\"2025-03-15\";applicationDate<=\"2026-03-16\"","page": 0,"useSandbox": false}}
Demo mode
If no credentials are provided, the actor runs in demo mode and emits a single diagnostic dataset item explaining how to register for EUIPO API access, rather than failing the run. This lets the Apify Store healthcheck work without secrets.