EUIPO Trademark Search Scraper avatar

EUIPO Trademark Search Scraper

Pricing

Pay per event

Go to Apify Store
EUIPO Trademark Search Scraper

EUIPO Trademark Search Scraper

Search EUIPO and TMview trademarks by word: mark name, owner, status, Nice classes, application, registration and expiry dates, office and record URL. Filter by office, match mode and page depth, as clean deduplicated rows.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Devil Scrapes mark

EUIPO Trademark Search Scraper

💰 $2.20 / 1 000 results  ·  pay only for results  ·  no credit card to try

The devil's in the data. 😈

Search EUIPO and TMview trademarks by word and get clean, deduplicated rows: mark name, owner, status, Nice classes, application, registration and expiry dates, the registering office, and the record URL. EUIPO (the EU trademark office) is the default; add national offices when you want them.

🎯 What this scrapes

TMview is the joint trademark search of EUIPO and national offices, and it has no bulk export. This Actor runs each word you give it, walks the result pages thirty marks at a time, and returns one row per trademark: the stable TMview st13 id, mark name, office, application and registration numbers, status, mark type, Nice classes, applicant names, application / registration / expiry dates, opposition window, designated territories, Vienna codes, and image links for figurative marks.

Office scope. By default the search is limited to the EUIPO office (EM), and every row carries its office code so you can check it. Pass other codes in offices (for example DE, FR, ES) to search national registers too, or leave the list empty to search every office TMview covers.

🔥 Features

  • 🛡️ We rotate browser fingerprints (curl-cffi Chrome, Firefox and Safari impersonation) so the source sees a real browser's TLS handshake, not a Python script.
  • 🔁 We retry with exponential backoff on rate limits and server errors, honouring Retry-After. Up to 5 attempts per page.
  • 🌐 We rotate proxy sessions through Apify Proxy on every block, with a fresh session and exit IP each time.
  • 🧊 Run-wide deduplication. The same st13 never appears twice in your dataset, across pages or across queries in one run.
  • 🎚️ Match mode and office filters. Contains, exact word, or fuzzy matching, over the offices you choose.
  • 🧱 Fault isolation. One query that gets blocked doesn't end the others; we log it and keep going.
  • 💰 You pay only for results that land. No data, no charge (only the small actor-start warm-up fee).

💡 Use cases

  • Brand protection teams: watch for new filings that contain your brand name across the EU register.
  • Law firms and IP agents: run clearance searches and export the hits with owners, classes and dates.
  • Naming and product teams: check whether a candidate name is already taken in the classes you care about.
  • Data and analytics: build trademark datasets by owner, class or filing date for dashboards.

⚙️ How to use it

  1. Add one or more words to queries, for example nike or adidas.
  2. Keep offices at EM for EUIPO, or add national office codes.
  3. Set maxPages and maxItems to bound how much you pull.
  4. Run it, then export to JSON, CSV, or Excel, or pull the dataset straight from the Apify API.

📥 Input

FieldTypeRequiredDefaultNotes
queriesarray<string>yesnikeWords to search for in trademark names.
officesarray<string>no["EM"]Office codes. EM is EUIPO. Empty searches every office.
criteriastringnoCC contains, W exact word, F fuzzy.
maxPagesintegerno3Pages fetched per query, 30 marks each (1-500).
maxItemsintegerno100Hard cap on total rows across the run (1-15000).
proxyConfigurationobjectyesApify ProxyApify Proxy configuration.

Example input

{
"queries": ["nike", "adidas"],
"offices": ["EM"],
"criteria": "C",
"maxPages": 2,
"maxItems": 100,
"proxyConfiguration": { "useApifyProxy": true }
}

📤 Output

One row per deduplicated trademark.

FieldTypeNotes
st13stringTMview ST13 id, the stable dedupe key.
trademarkNamestring | nullWord mark text.
officestringRegistering office code, for example EM.
officeUrlstring | nullThe office's own record URL.
applicationNumber / registrationNumberstring | nullOffice numbers.
statusstring | nullRegistered, Filed, Expired, Ended and so on.
trademarkTypestring | nullWord, Figurative, Combined and so on.
niceClassesarray<integer>Nice classification classes.
applicantsarray<string>Applicant / owner names.
applicationDate / registrationDate / expirationDatestring | nullISO-8601 dates.
oppositionPeriodStart / oppositionPeriodEndstring | nullOpposition window.
designatedOfficesarray<string>Territories the mark protects.
viennaCodesarray<string>Vienna figurative-element codes.
imageUrl / thumbnailUrlstring | nullMark image links, figurative marks only.
searchQuerystringInput query that produced this row.
pageNumberinteger1-based result page.
scrapedAtstringUTC ISO-8601 run timestamp.

Example output record

{
"st13": "EM500000006655302",
"trademarkName": "NIKE",
"office": "EM",
"officeUrl": "http://euipo.europa.eu/trademark/data/EM500000006655302",
"applicationNumber": "006655302",
"registrationNumber": "006655302",
"status": "Ended",
"trademarkType": "Word",
"niceClasses": [21],
"applicants": ["Navipol sp. z o.o."],
"applicationDate": "2008-02-08T12:00:00.000Z",
"searchQuery": "nike",
"pageNumber": 1,
"scrapedAt": "2026-10-12T08:00:00Z"
}

💰 Pricing

Pay-Per-Event: you pay only when these events fire.

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
result-emitted$0.002Per deduplicated trademark row written to the dataset

Example: 1 000 rows = $2.20 per run ($0.20 start + 1000 x $0.002). No subscription, no minimum, no card required to try it.

🚧 Limitations

  • Search-listing fields only. This returns what the TMview results list publishes. Goods and services text and full owner addresses sit on the office record pages and are out of scope.
  • Office scope is yours to set. The default is EUIPO only (EM). Empty offices searches every office, so check the office column.
  • Result depth. Each query pages thirty marks at a time; set maxPages high enough for the depth you need.
  • A query with no matches is a success. It finishes with zero rows and a status message naming what was searched.

❓ FAQ

Do I need an EUIPO account or API key? No. This reads the public TMview search.

Is this EUIPO only? By default, yes: offices defaults to ["EM"] and every row carries its office so you can verify it. Add other office codes or empty the list to widen the search.

What do the match modes do? C finds marks containing your word, W finds the exact word, and F adds fuzzy matches.

Can I search several words in one run? Yes. Pass an array to queries; every row carries searchQuery so you can tell which search found it.

What happens if a search is blocked? We retry up to 5 times with a fresh browser fingerprint and proxy session each time. If a query still can't be read, the others carry on and the status message says so. The run ends as failed only when a query was blocked and nothing at all could be collected.

Can I run this on a schedule? Yes. Use Apify Schedules to re-run your watch list and catch new filings.

💬 Your feedback

Found a bug, or need a field we don't return yet? Open an issue on the Actor's Issues tab. We read every one.