Global Trademark Search Scraper - 77 Offices Worldwide
Pricing
from $13.00 / 1,000 results
Global Trademark Search Scraper - 77 Offices Worldwide
Search 145M+ trademarks from 77 national and regional registers at once: mark text, owner name and address, representative, status, Nice classes, goods and services wording, oppositions, priority and seniority claims. JSON, CSV, Excel.
Pricing
from $13.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Global Trademark Search Scraper
Here is one real result, trimmed to show every field the actor returns:
{"st13": "EM500000018396517","office": "EM","officeName": "European Union (EUIPO)","markText": "PIXELMATE","markFeature": "Word","kindOfMark": "Individual","status": "Registered","statusDetail": "Registered","statusDate": "2021-07-15","applicationNumber": "018396517","applicationDate": "2021-02-11","registrationNumber": "018396517","registrationDate": "2021-07-14","expirationDate": "2031-02-11","renewalStatus": "Not to be renewed","applicantNames": ["Framos Holding GmbH"],"applicants": [{"name": "Framos Holding GmbH","street": "Wallbergstraße 9","city": "Pullach im Isartal","postcode": "82049","country": "DE","addressText": "Wallbergstraße 9, 82049, Pullach im Isartal","legalEntity": "Legal Entity","nationality": "DE","identifier": "1170902"}],"applicantAddresses": ["Wallbergstraße 9, 82049, Pullach im Isartal"],"representatives": [{"name": "DE CLERCQ & PARTNERS","street": "Edgard Gevaertdreef 10 a","city": "Sint-Martens-Latem","postcode": "9830","country": "BE","addressText": "Edgard Gevaertdreef 10 a, 9830, Sint-Martens-Latem","legalEntity": "Legal Person","identifier": "69847"}],"niceClasses": [9],"goodsAndServices": [{"classNumber": 9,"description": "Connectors for electronic circuits; Plug-in connectors; Connectors for electronic devices; Electronic components, namely semiconductors, sensors, microprocessors, signal memories, A/D converters, D/A converters, multipliers, integrated circuits, amplifiers, diodes, transistors, rectifiers, CMOS circuits and thyristors; Interface circuits for video cameras; Graphics processing units (gpus); Semiconductors and semiconductor chip sets; System-on-chip processors; Electronic computer vision accelerators.","language": "en"}],"goodsServicesText": "9: Connectors for electronic circuits; Plug-in connectors; …","goodsServicesLanguages": ["bg", "cs", "da", "de", "el", "en", "es", "et", "fi", "fr", "hr", "hu", "it", "lt", "lv", "mt", "nl", "pl", "pt", "ro", "sk", "sl", "sv"],"protectionTerritories": ["DE", "BE", "FI", "PT", "BG", "DK", "LT", "LU", "HR", "LV", "FR", "HU", "SE", "SI", "BX", "SK", "IE", "EE", "MT", "EM", "GR", "IT", "ES", "AT", "CY", "CZ", "PL", "RO", "NL"],"viennaCodes": [],"priorities": [],"seniorities": [],"seniorityClaimed": false,"oppositions": [],"oppositionCount": 0,"oppositionPeriodStart": "2021-04-06","oppositionPeriodEnd": "2021-07-06","publications": [{ "identifier": "2021/063", "section": "A.1", "date": "2021-04-06" },{ "identifier": "2021/131", "section": "B.1", "date": "2021-07-15" },{ "identifier": "2022/136", "section": "C.3.2", "date": "2022-07-22" }],"markEvents": [{"identifier": "021607042","kind": "Proprietor - Change of name and address","status": "Published","statusDate": "2022-05-09","publicationDate": "2022-05-10"},{"identifier": "022002276","kind": "Trade mark - Partial Surrender","status": "Published","statusDate": "2022-07-22","publicationDate": "2022-07-22"}],"markTranscription": "PIXELMATE","filingLanguage": "nl","secondLanguage": "en","applicationReference": "STRF-212430-TM-EU","fastTrack": "false","acquiredDistinctiveness": "false","markImageUrl": "http://euipo.europa.eu/trademark/image/EM500000018396517","officeRecordUrl": "https://euipo.europa.eu/trademark/data/EM500000018396517","detailUrl": "https://www.tmdn.org/tmview/api/detail/EM500000018396517","fullRecordAvailable": true,"matchedQuery": "PIXELMATE","source": "TMview global trademark search (EUIPO/TMDN)","observedAt": "2026-08-20T21:25:26.808Z"}
One search across 77 trademark registers and more than 145 million marks, from the US, EU, China, Japan, Brazil and 72 more offices, plus the Madrid international register. Most trademark scrapers cover a single office. This one returns the same clean record shape for all of them, with the owner, the representative, the goods and services wording, and the opposition history attached. Export as JSON, CSV or Excel.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Offices covered
- Quickstart
- Input reference
- Output reference
- Use cases
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
Give it a brand name, an owner name, or no search term at all and just filters, and it returns matching trademarks from every register you selected, with the full public record attached: who owns the mark and where they are based, which IP firm represents them, what goods and services it covers in the language you ask for, which territories it is protected in, whether anyone opposed it and on what grounds, and when it expires.
Both search fields accept a list, so one run can cover many brands or many owners at once. Results are merged and de-duplicated across searches and across offices. Fields with no value at the publishing office are omitted, never guessed.
Large pulls are handled for you: when a filter combination matches more marks than a single query can return, the actor splits it into smaller office and filing-date slices automatically and keeps going, so maxTrademarks in the hundreds of thousands still works.
Offices covered
Albania, Argentina, Australia, Austria, Belize, Benelux, Bosnia and Herzegovina, Brazil, Brunei, Bulgaria, Cambodia, Canada, Chile, China, Colombia, Costa Rica, Croatia, Cuba, Cyprus, Czechia, Denmark, Dominican Republic, Egypt, Estonia, European Union (EUIPO), Finland, France, Georgia, Germany, Greece, Hungary, Iceland, India, Ireland, Israel, Italy, Japan, Jordan, Laos, Latvia, Liechtenstein, Lithuania, Malaysia, Malta, Mexico, Moldova, Monaco, Montenegro, Morocco, New Zealand, North Macedonia, Norway, Paraguay, Peru, Philippines, Poland, Portugal, Romania, Russia, San Marino, Serbia, Slovakia, Slovenia, South Korea, Spain, Sweden, Switzerland, Thailand, Trinidad and Tobago, Tunisia, Turkiye, Ukraine, United Kingdom, United States, Uruguay, Vietnam, and the WIPO Madrid international register.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 100 EU trademarks in Nice class 9 filed during 2025, each with the owner's postal address and the goods and services wording in English.
{"offices": ["EM"],"niceClasses": ["9"],"applicationDateFrom": "2025-01-01","applicationDateTo": "2025-12-31","trademarkStatus": ["Registered"],"maxTrademarks": 100,"fetchFullRecord": true}
Leave both search fields empty to browse a whole register purely by filter. All filters combine with AND; multi-value fields match any of the listed values.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxTrademarks | integer | no | 10 | Maximum trademarks to collect. Hard cap; the actor stops once it is reached. |
markTexts | string[] | no | (empty) | Brand names or mark words to search. Each entry runs as its own search; results are merged and de-duplicated. |
applicantNames | string[] | no | (empty) | Owner names to search, for example Nestle, Siemens. Each entry runs as its own search. |
matchMode | enum | no | contains | How mark text is matched: contains, exact, beginsWith, word, or fuzzy for clearance-style similar spellings. |
offices | string[] | no | (all 77) | Two-letter office codes to search, for example US, EM, CN, GB, WO. |
territories | string[] | no | (all) | Keep only marks in force in these territories. Useful for EU and Madrid marks whose protection reaches beyond the issuing office. |
niceClasses | string[] | no | (all) | Nice classification classes 1 to 45, for example 9, 25, 35. |
trademarkStatus | string[] | no | (all) | Registered, Filed, Expired, Ended. |
trademarkTypes | string[] | no | (all) | Word, Figurative, Combined, 3D shape, Sound, Colour, Position, and others. |
viennaCodes | string[] | no | (all) | Vienna classification codes for figurative elements, for example 26.11.12. |
applicationDateFrom | string | no | (empty) | Only marks filed on or after this date (YYYY-MM-DD). |
applicationDateTo | string | no | (empty) | Only marks filed on or before this date (YYYY-MM-DD). |
registrationDateFrom | string | no | (empty) | Only marks registered on or after this date (YYYY-MM-DD). |
registrationDateTo | string | no | (empty) | Only marks registered on or before this date (YYYY-MM-DD). |
fetchFullRecord | boolean | no | true | Open each mark's full register record for goods and services, priority and seniority claims, oppositions, publications and register events. Turn off for a faster, lighter run. |
fetchPartyDetails | boolean | no | true | Also look up owner and representative postal addresses at the publishing office. |
goodsServicesLanguage | string | no | en | Preferred language for goods and services wording. Falls back to English, then to whatever the office published. |
proxyConfiguration | object | no | residential | Proxy settings. Leave as is unless you know you need something different. |
Output reference
One dataset item per trademark. Types: string, integer, boolean, object[], string[], or the field is omitted when the publishing office has no value for it.
| Field | Type | Description |
|---|---|---|
st13 | string | Stable 13-character identifier, unique across all offices. |
office | string | Two-letter office code. |
officeName | string | Office name, for example European Union (EUIPO). |
markText | string | The trademark text. |
markFeature | string | Mark type: Word, Figurative, Combined, 3D shape, Sound, and others. |
kindOfMark | string | Individual, Collective, Certification, and similar. |
status | string | Registered, Filed, Expired or Ended. |
statusDetail | string | The office's own status wording, for example Application refused. |
statusDate | string | Date the current status took effect. |
applicationNumber | string | Application number at that office. |
applicationDate | string | Filing date (YYYY-MM-DD). |
registrationNumber | string | Registration number at that office. |
registrationDate | string | Registration date (YYYY-MM-DD). |
expirationDate | string | Date protection expires (YYYY-MM-DD). |
renewalStatus | string | Renewal state recorded by the office. |
applicantNames | string[] | Owner names. |
applicants | object[] | Owners with name, street, city, state, postcode, country, addressText, legalEntity, nationality, and email / phone where the office publishes them. |
applicantAddresses | string[] | Flat owner addresses, convenient for CSV exports. |
representatives | object[] | IP firm or attorney of record, same shape as applicants. |
niceClasses | integer[] | Nice classification classes covered. |
goodsAndServices | object[] | Per class: classNumber, description, language. |
goodsServicesText | string | All classes flattened into one string. |
goodsServicesLanguages | string[] | Every language the office published the wording in. |
protectionTerritories | string[] | Territories where the mark is in force. |
viennaCodes | string[] | Vienna classification codes for the figurative elements. |
priorities | object[] | Priority claims: country, number, date. |
seniorities | object[] | Seniority claims: country, applicationNumber, registrationNumber, dates, status. |
seniorityClaimed | boolean | Whether any seniority is claimed. |
oppositions | object[] | Oppositions with identifier, date, grounds, status, statusDate, and the earlierMarks relied on. |
oppositionCount | integer | Number of oppositions on record. |
oppositionPeriodStart | string | Start of the opposition window. |
oppositionPeriodEnd | string | End of the opposition window. |
publications | object[] | Official bulletin entries: identifier, section, date. |
markEvents | object[] | Register events such as ownership changes, surrenders and transfers. |
markDescription | string | Description of the mark, where published. |
markDisclaimer | string | Disclaimed elements. |
markTranslation | string | Translation of a non-Latin or foreign-language mark. |
markTranscription | string | Transliteration of the mark. |
colourClaimed | string | Colours claimed, for example Orange; Red; White. |
filingLanguage | string | Language the application was filed in. |
secondLanguage | string | Second language of the application, where applicable. |
applicationReference | string | The applicant's own file reference. |
fastTrack | string | Whether the application used the office's fast-track route. |
acquiredDistinctiveness | string | Whether acquired distinctiveness was claimed. |
markImageUrl | string | Image of the mark, for figurative and combined marks. |
officeRecordUrl | string | Link to the record at the publishing office. |
detailUrl | string | Link to the multi-office record view. |
fullRecordAvailable | boolean | Whether the full register record was retrieved for this mark. |
partyDetailsWithheld | boolean | Present when the office does not publish owner or representative details to automated requests. |
matchedQuery | string | Which search or filter slice matched this record. |
source | string | Constant source label. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | Present only on a failed run, where a single item with a populated error field is written instead of results. |
Use cases
- Global clearance searches. Run one
fuzzysearch for a proposed brand across all 77 offices and see every conflicting mark, its classes and its owner, before you file. - Portfolio and competitor mapping. Pull an owner's entire worldwide filing history in a single run, including marks filed under local subsidiary names.
- Renewal and expiry pipelines. Filter by expiry window and office to get marks coming up for renewal, with the responsible IP firm and its address already attached.
- IP firm business development. Find owners filing into your jurisdiction and see who currently represents them, with postal addresses for outreach.
- Brand protection and watch services. Monitor new filings in your Nice classes and territories with a filing-date window, and catch lookalikes early with fuzzy matching.
- Opposition and litigation research. Study which grounds succeed in a given office and class, and which earlier marks are relied on.
Run via API and CLI
Start a run via the REST API. Replace YOUR_TOKEN with your Apify API token.
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~tmview-global-trademarks-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"offices":["EM"],"niceClasses":["9"],"applicationDateFrom":"2025-01-01","maxTrademarks":100}'
Apify CLI:
apify call scrapers_lat/tmview-global-trademarks-scraper \--input '{"markTexts":["nike"],"matchMode":"fuzzy","maxTrademarks":25}'
Fetch results
Results land in the run's dataset and can be exported as JSON, CSV or Excel from the Apify console or the API:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=csv&token=YOUR_TOKEN"
Billing and limits
This actor uses pay-per-event pricing. You are only charged on a successful result.
| Event | Price (USD) | When it is charged |
|---|---|---|
result | 0.015 | Once per trademark written to the dataset. |
- No charge on failure. If a run errors, a single item with a populated
errorfield is written and is not charged. Empty runs cost nothing. - Free Apify plans are capped at 10 results per run; upgrade for larger pulls.
- Spend cap respected. Set
maxTotalChargeUsdon the run to stop once a budget is reached. - De-duplicated. The same mark is never charged twice in a run, even when several searches or offices match it.
- Set
maxTrademarksto control run size and cost, and use the filters to target the exact segment you need.
FAQ and troubleshooting
Which trademarks are covered? Marks published by the 77 offices listed above, including applications, registrations, expired and ended marks. Each office decides how far back its own history goes.
How fresh is the data? It is read live from the public registers on each run, and every record carries observedAt.
Why do some rows have partyDetailsWithheld? A handful of offices publish owner and representative details only through a channel that refuses automated requests. Those rows still carry the owner name that the register itself returns, and the flag tells you the postal address was unavailable rather than absent. Owner addresses are available for most European and Latin American offices.
Why is goodsAndServices sometimes not in English? Many offices publish the wording only in their own language. The actor returns your requested language when it exists, then English, then whatever the office published. goodsServicesLanguages tells you which versions exist.
Can I search several brands at once? Yes. markTexts and applicantNames both accept lists, and results are merged and de-duplicated by the mark's global identifier.
What is st13? A 13-character identifier that is stable and unique across every office, so you can key on it when you re-run and diff.
Why are applicationDate and registrationDate sometimes inconsistent? A few offices record the registration date of an earlier related right. The dates are reported exactly as the office publishes them, never adjusted.
Can I get more than the count I set? No. maxTrademarks is a hard cap; the actor stops once it is reached.
Do I need an API key? No. The registers are public. Residential proxies are used by default because the registers throttle bulk traffic, and Apify Proxy is already included in your plan.
Not affiliated with, endorsed by or sponsored by EUIPO, WIPO or any national intellectual property office. All data is read from publicly available records.
