German Trademark Register Scraper avatar

German Trademark Register Scraper

Pricing

from $10.00 / 1,000 trademark records

Go to Apify Store
German Trademark Register Scraper

German Trademark Register Scraper

Search the German trademark register (DPMA). Export names, filing & registration dates, applicants, Nice classes (Nizza Klassen), goods & services, legal status and the real figurative mark images.

Pricing

from $10.00 / 1,000 trademark records

Rating

0.0

(0)

Developer

Robin Schwarzfeld

Robin Schwarzfeld

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

German Trademark Register Scraper (DPMA)

Search the German trademark register (DPMAregister, run by the Deutsches Patent- und Markenamt) and export structured data: trademark names, filing and registration dates, applicants, Nice classes, goods and services, legal status, the full procedure history, and the figurative mark images (Bildmarken) as downloadable files. No DPMA account needed.

Demo mode (currently on). By default this Actor runs in Demo mode and returns a small set of bundled sample records, including one example figurative mark image, so you can see the exact output format for free. This sample data is not live register data. Turn Demo mode off to scrape live from DPMAregister.

What you get

  • Word marks, word/figurative marks, figurative marks and 3D marks from the German register.
  • Figurative mark images downloaded to the key-value store, linked from every record.
  • Full detail per mark: goods and services text per Nice class, applicant name and address, former proprietors, opposition period, expiry, and the complete status and procedure history.
  • Flexible search: by mark text, applicant, Nice class, file or registration number, mark form, status, or filing-date range. A raw expert query is supported for full control.
  • Sortable results, so you can list the most recent registrations first.
  • A direct link to the official DPMAregister entry for every mark.

Who uses it

IP attorneys and paralegals (clearance and availability searches), brand-protection teams (competitor and infringement monitoring), M&A and due-diligence analysts (IP asset enumeration), domainers and startups (name availability), and market researchers.

Example output

Each trademark becomes one dataset item:

{
"applicationNumber": "951141",
"registrationNumber": "951141",
"markText": "Appletiser Pure Natural Apple Juice",
"markFeature": "Wort-/Bildmarke",
"markCategory": "Individualmarke",
"niceClasses": ["32"],
"applicationDate": "04.03.1970",
"registrationDate": "10.11.1976",
"statusText": "Marke eingetragen",
"applicantName": "European Refreshments Unlimited Company, Drogheda, IE",
"applicants": ["European Refreshments Unlimited Company, Drogheda, IE"],
"goodsServices": [
{ "class": "32", "description": "Fruchtsäfte und andere alkoholfreie Getränke." }
],
"records": [
{ "type": "Anmeldeverfahren", "status": "Marke eingetragen", "date": "10.11.1976" }
],
"thumbnailUrl": "https://register.dpma.de/DPMAregister/marke/de/images/..-thumbnail.jpg",
"imageUrl": "https://api.apify.com/v2/key-value-stores/<id>/records/image-951141.jpg",
"detailUrl": "https://register.dpma.de/DPMAregister/marke/register/951141/DE",
"hasImage": true,
"source": "dpmaregister",
"scrapedAt": "2026-08-22T19:05:00.000Z"
}

The image files live in the run's key-value store and are linked from every record via imageUrl. Word-only marks have no image and are skipped automatically.

Output fields

FieldDescription
applicationNumberFile / registration number (Aktenzeichen)
registrationNumberRegistration number (RN)
markTextVerbal element of the mark
markFeature / markCategoryMark form (Wortmarke, Wort-/Bildmarke, ...) and category
niceClassesNice classes (array)
applicationDate / registrationDateFiling (Anmeldetag) and registration date
publicationDate / expiryDate / cancellationDatePublication, expiry, cancellation dates
statusTextCurrent file status (Aktenzustand)
applicantName / applicants / formerApplicantsCurrent proprietor(s) and previous ones
representativeRepresentative (Vertreter), if any
goodsServicesGoods and services description per class
oppositionPeriodStart / oppositionPeriodEndOpposition window
recordsProcedure history (registration, opposition, transfer, renewal, cancellation, ...)
thumbnailUrl / imageUrl / hasImageThumbnail and full figurative mark image
detailUrlLink to the official DPMAregister entry

Input

Fill any combination of the structured fields (combined with AND), or provide a raw expert query. Key options:

InputMeaning
markTextMark text (field MARKE). Wildcards: ? any, ! one, # one-or-none
applicantApplicant or proprietor (INH)
niceClassesNice classes, e.g. 9, 35, 42 (KL)
registrationNumberExact registration or file number (RN)
markFormMark form (MF), e.g. Bildmarke, Wort-Bildmarke
statusCurrent status (ST)
databaseData stock: DE (default), EM, IR (DB)
applicationDateFrom / applicationDateToFiling-date range (AT)
rawQueryFull DPMAregister expert query. Overrides the fields above.
maxResultsCap on exported records (up to 250 per run)
fetchDetailsFetch full detail per mark (goods and services, applicant, history)
downloadImagesDownload figurative mark images
useProxyRoute the browser through Apify Proxy (recommended)

Raw query example: MARKE=Apple UND (KL=09 ODER KL=42) UND AT>=01.01.2015

Operators: UND / ODER / NICHT, comparisons = >= <= > <, quotes for phrases, ( ) grouping.

Note on result size

Keep your query reasonably specific. The register does not render result sets of many thousands, so a very broad query (a whole Nice class, or all of Germany) returns nothing usable. For a specific query the Actor collects every match up to maxResults by paging through the hit list, so you can sort the export (for example by registration date) in the Apify dataset view or your own tooling.

Monitoring (watch mode)

Turn the Actor into a watchdog for new German filings, useful for brand protection and competitor tracking:

  1. Set your search criteria (your brand terms plus Nice classes, or a competitor's name).
  2. Enable watchMode and give it a watchId label (e.g. my-brand).
  3. Optionally set notifyWebhookUrl (Slack, Make, Zapier, n8n) and/or notifyEmail.
  4. Schedule it under Apify Schedules (e.g. daily or weekly).

The first run establishes a baseline: it records what already exists and exports nothing. Every run afterwards exports and alerts on only the marks that are new since the last run (isNew: true). Seen marks are remembered across runs in a named key-value store, so the state survives between scheduled runs. Set alertOnFirstRun: true to also report all current matches on the first run.

How it works

The DPMAregister search is JavaScript-driven, so the Actor drives it with a headless browser (Playwright) to run your query and read the hit list. Detail pages and mark images are then fetched over plain HTTP, which keeps runs fast. Data comes straight from register.dpma.de; no account and no API contract are required.

How you are billed (pay-per-event)

This Actor uses Apify pay-per-event pricing:

EventFires when
actor-startA run starts
mark-scrapedA trademark record is exported

Figurative mark images (Bildmarken) are included at no extra charge. In Demo mode no charges are made, so you can try it for free first.

  • DPMA register data is public. This Actor reads publicly accessible pages of register.dpma.de. Automated access is not covered by the site's robots.txt; use it responsibly and at your own discretion. If you need a contractually sanctioned feed, the DPMA offers the official DPMAconnectPlus interface.
  • Records include personal data (applicant names and addresses). If you process or resell this data, you are responsible for complying with the GDPR and the DPMA terms of use for your use case.

Development and deployment

npm install
npm test # run the smoke tests
npm start # local demo run (uses storage/key_value_stores/default/INPUT.json)
# deploy to Apify
npm i -g apify-cli
apify login
apify push

Structure:

.actor/ actor.json, input_schema.json, dataset_schema.json, output_schema.json
src/main.js orchestration (search, detail, images, dataset)
src/search.js Playwright expert-search (returns the hit list)
src/detail.js HTTP detail page + image fetch
src/parse.js DPMAregister HTML to clean JSON
src/query.js structured input to expert-search query
src/watch.js monitoring state and notifications
src/mock.js offline demo data and image generator
test/ smoke tests

Not affiliated with or endorsed by the DPMA.