Germany LUCID Packaging Register Check (EPR) avatar

Germany LUCID Packaging Register Check (EPR)

Pricing

from $2.80 / 1,000 registration checkeds

Go to Apify Store
Germany LUCID Packaging Register Check (EPR)

Germany LUCID Packaging Register Check (EPR)

Pricing

from $2.80 / 1,000 registration checkeds

Rating

0.0

(0)

Developer

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

LUCID Register Check is a German packaging EPR (Extended Producer Responsibility, VerpackG) check. It looks up your own list of companies, VAT IDs or brands in Germany's public packaging register LUCID (ZSVR) and returns one clean row per registration: registration number, company, legal form, VAT ID, brands, packaging types, status and exit date. A weekly monitor mode tells you only what changed. It is a LUCID packaging register check for your own supplier, seller and brand lists.

⚠️ Not a replacement for the official register extract

LUCID Register Check is a convenience check of the public registers. It does not replace the official Registerauszug / ZSVR Registerabruf that online marketplaces, fulfilment providers and other distributors must obtain to prove compliance. For legally binding checks, use the official channel of the register operator. Results can be incomplete or out of date: LUCID is updated once a day and the Actor reports the register's own "last updated" time in every row.

What is LUCID Register Check?

Selling packaged goods in Germany requires the producer to be registered in the packaging register LUCID (VerpackDG). Marketplaces and retailers ask suppliers for proof, and compliance teams want to know quickly whether a supplier, brand or VAT number is listed.

LUCID Register Check automates the manual search on the public LUCID register, one list item at a time, politely (at most 1 request per second, a single session, no concurrency). It is built for list checks, not for downloading the registers: there is no "give me everything" mode and every run is limited in size.

What you get

🔎 CheckLook up VAT IDs, company names and brands. Exact and partial matches are labelled. Items with no match return a not_found row (VAT IDs, and names that include a legal form).
🔔 Monitor (delta)Re-check a saved list on a schedule (weekly is plenty). First run = baseline (everything in your list); later runs return only new, changed and removed registrations, and finish in seconds when LUCID has not been updated.
🧭 DiscoverSearch one brand or company term, with a hard limit of 1,000 legal entities per run.
🏢 Companies onlySole traders and private individuals are always excluded (see below).

Check vs monitor: what each mode returns and charges

ModeKindWhat you getWhat is charged
ChecksnapshotEvery match for your list, every runregistration-check per row (including not_found rows)
DiscoversnapshotMatches for one search term (up to 1,000)registration-check per row
Monitordelta1st run: the whole list as baseline. Later runs: only new / changed / removed registrations1st run: registration-check per row. Later runs: registration-change per changed row only. Unchanged registrations are never charged; a run on an unchanged register costs only the start fee

Use cases: LUCID packaging register check

1. Verify marketplace sellers before onboarding - marketplace, platform and fulfilment compliance teams. Before you list a seller, check whether it is registered in LUCID. Run check with the seller's vatIds (and companyNames with the legal form). Read status (registered, deregistered, not_found), registration_number, registration_date and market_exit_date. You get a yes / no / expired answer per seller for your onboarding file. This is a quick pre-check; for proof use the official Registerauszug (see the notice above).

2. EPR agencies and compliance consultancies - EPR service providers and advisors. Check a client's or prospect's whole list by VAT ID in one run. not_found rows show companies with no LUCID registration (a conversation to start); deregistered rows with market_exit_date show lapsed ones. You get a status sheet per client or a prospecting list with vat_id, company_name and status.

3. Brand protection - brand owners and legal teams. Find out who registered your brand name. Put it in brands and read company_name, brands, registration_number and match_type (exact or partial). You see whether a distributor, licensee or an unknown party registers goods under your brand in Germany.

4. Cross-border supplier due diligence - procurement and supply-chain teams. Check EU suppliers that ship to German customers: vatIds with a foreign prefix return country_code, vat_id, registration_date and status; the flag no_eu_vat_id marks registrations without an EU VAT ID. You get evidence for supplier files and a list of those that are not registered.

5. Weekly monitor of your own list - compliance and risk teams. Switch to monitor and schedule it weekly. The first run is the baseline; later runs return only new, changed and removed registrations (change_type, changed_fields, previous_values), and a supplier that disappears from the register shows as removed_from_register. You get an alert instead of a manual re-check.

Recipe 1: check suppliers by VAT ID and name

{
"mode": "check",
"vatIds": ["DE815499929", "FR12345678901"],
"companyNames": ["HARIBO GmbH & Co. KG"],
"includeDetails": true,
"maxMatchesPerQuery": 5
}

Recipe 2: weekly monitor of a supplier and brand list

Run once to create the baseline, then schedule it weekly.

{
"mode": "monitor",
"vatIds": ["DE815499929"],
"companyNames": ["Nestlé Deutschland AG"],
"brands": ["MAOAM"],
"stateKey": "supplier-watchlist"
}

Reminder: LUCID Register Check covers companies only (private individuals and sole traders are never returned) and does not replace the official Registerauszug / ZSVR Registerabruf.

Coverage

RegisterOperatorWhat is searchedNotes
LUCID (packaging, VerpackDG)Zentrale Stelle Verpackungsregister (ZSVR)VAT ID, company name, brandRegistration number, VAT ID, address city/postcode/country, brands, declared packaging types, registration and exit dates. Updated daily by the register.
WEEE / ElektroG directory (stiftung ear)stiftung ear-Not covered in this version.
Battery register (BattDG)stiftung ear-Not covered in this version.

Companies only - no private individuals

The public registers also list individual entrepreneurs, with personal names and home addresses. LUCID Register Check never returns them: a registration is only emitted when the registered name ends with a recognised legal form (GmbH, AG, UG (haftungsbeschränkt), KG, OHG, SE, GmbH & Co. KG, KGaA, eG, e.V., Ltd, LLC, Inc, S.L., S.A., S.A.S., B.V., N.V., S.r.l., S.p.A., Sp. z o.o., s.r.o., A/S, AB, Oy, AS and others). e.K. (registered sole merchant), Inh., GbR, PartG and names without a legal form are treated as natural persons and dropped. Excluded rows are not output, not stored in the monitor state and not written to logs - the run summary only shows a counter. This filter has no off switch. Phone numbers and street addresses are never output.

If a company is excluded because its registered name has no recognisable legal form, you will not see it. That is intentional: the Actor prefers to miss a company than to publish a person.

How to use LUCID Register Check

  1. Open the Actor and keep Mode = Check (the pre-filled example looks up two well-known companies; Max results is pre-set to 5, which caps the first test at a few cents).
  2. Paste VAT IDs, company names and/or brands (up to 200 items).
  3. Click Start. Each item takes a few seconds (1 request per second; two more requests per match when brand and packaging details are on).
  4. Open the Output tab or download the dataset (JSON, CSV, Excel).
  5. To track changes, switch to Monitor, run once to create the baseline and add a weekly schedule.

Tips

  • Use the official spelling: the LUCID search is accent-sensitive (Nestlé, not Nestle).
  • Add the legal form to a company name (HARIBO GmbH & Co. KG) to get an exact match and a not_found row when nothing matches.
  • Turn off Include brands and packaging types for the fastest yes/no check.

What data you get

FieldDescription
registration_number, company_name, legal_formLUCID registration number, registered name and detected legal form
vat_id, country, country_code, city, postal_codeVAT ID and registered address (city and postcode only, never the street)
brands, brands_countBrands registered by the producer
packaging_typesDeclared packaging types with system_participation (dual-system participation)
authorised_representativeWhen LUCID lists one
registration_date, market_exit_date, statusregistered, deregistered, not_found or removed_from_register
query_input, query_type, match_typeWhich list item produced the row, and whether the match is exact or contains
source_url, source_updated_at, checked_atSource page, the register's own last-update time and the time of your run
first_seen_at, last_seen_at, change_type, changed_fields, previous_valuesMonitor mode: what changed since your last run
quality_flagspartial_match, not_found, no_eu_vat_id, deregistered, brands_truncated, details_unavailable, no_packaging_info
region, equipment_typesReserved, always null in this version

Input

FieldTypeDescription
modeenumcheck (default), monitor, discover
vatIdsarrayEU VAT IDs (LUCID only)
companyNamesarrayCompany names, partial names allowed
brandsarrayBrand names registered in LUCID
searchTermstringDiscover mode: one term of at least 3 characters
includeDetailsbooleanBrands and packaging types (LUCID). Default on
maxMatchesPerQueryintegerBest N matches per list item, exact first. Default 10, max 50
maxItemsintegerRow limit and spending cap (pre-filled 5; 0 = no limit; discover: default 100, max 1,000)
stateKeystringOptional name for a monitor stream

Output example

Real row from a check run (long texts shortened here):

{
"register": "lucid",
"registration_number": "DE2755553072093",
"company_name": "HARIBO GmbH & Co. KG",
"legal_form": "GmbH & Co. KG",
"vat_id": "DE815499929",
"country": "Deutschland",
"country_code": "DE",
"city": "Grafschaft",
"postal_code": "53501",
"region": null,
"brands": [
"HARIBO",
"MAOAM",
"PANULI",
"DUNHILLS",
"RICQLÈS"
],
"brands_count": 5,
"packaging_types": [
{
"system_participation": true,
"description": "Verkaufs- und Umverpackungen, Primärproduktionsverpackungen sowie T..."
},
{
"system_participation": false,
"description": "Transportverpackungen, die NICHT nach § 7 Absatz 1 Satz 1 VerpackDG..."
},
{
"system_participation": false,
"description": "Wiederverwendbare Verpackungen nach Artikel 11 der Verordnung (EU) ..."
}
],
"equipment_types": null,
"authorised_representative": null,
"registration_date": "2019-01-01",
"market_exit_date": null,
"status": "registered",
"query_input": "HARIBO GmbH & Co. KG",
"query_type": "name",
"match_type": "exact",
"source_url": "https://oeffentliche-register.verpackungsregister.org/Producer",
"source_updated_at": "2026-10-24T01:10",
"quality_flags": [],
"checked_at": "2026-10-24T20:17:10Z",
"first_seen_at": "2026-10-24T20:17:10Z",
"last_seen_at": "2026-10-24T20:17:10Z",
"change_type": null,
"changed_fields": [],
"previous_values": null
}

status is registered, deregistered (an exit date exists; LUCID keeps exited producers for three more years), not_found, or removed_from_register (monitor). quality_flags marks things like partial_match, no_eu_vat_id, brands_truncated, deregistered - rows are flagged, never silently dropped.

Pricing

Pay per event. Tier discounts: Silver -15 %, Gold and above -30 % (Free plan +15 %).

EventPrice (Bronze)
registration-check - one result row in check, discover or a monitor baseline (including not_found rows)$4.00 / 1,000
registration-change - one new / changed / removed registration in monitor$6.00 / 1,000
Actor start$0.02 per run

Only result rows are billed (check, discover and the first monitor run: registration-check; later monitor runs: registration-change for changed rows only). Unchanged registrations in monitor mode are free. A monitor run on an unchanged LUCID register finishes after one request and costs only the start fee. The pre-filled example (2 companies) costs about $0.03; checking 100 suppliers costs about $0.42. Max results caps what a run can bill.

Responsible use and limits

  • At most 1 request per second, one session, no concurrency, no proxies, no circumvention. If a register shows a captcha, a block or an error rate above 5 % the run stops and tells you why.
  • Lists are limited to 200 items per run and discover to 1,000 rows. The Actor is designed for checking your own suppliers and brands, not for building a copy of the registers.
  • Register data is published by law. LUCID Register Check is not affiliated with, endorsed by or operated by ZSVR. Source attribution: Zentrale Stelle Verpackungsregister (ZSVR), LUCID public register. Check the register's terms of use for your use case.
  • Not legal advice. Use the official register extract for binding proof.

FAQ

Does LUCID Register Check replace the Registerauszug? No. Marketplaces and fulfilment providers must obtain the official extract/Registerabruf; this Actor is a quick public-register check.

Why is a company I know missing? Its registered name may have no recognisable legal form (it is excluded as a possible individual), be spelled differently (accents), or have left the register more than three years ago.

Can I download the whole register? No. There is deliberately no such mode.

Can I disable the companies-only filter? No.

How often is the data updated? LUCID publishes once a day; each row carries the register's own timestamp in source_updated_at. For monitoring, a weekly schedule is plenty.

Is it legal to use this data? The LUCID register is public by law (VerpackDG). The Actor reads only the public search pages, returns companies only (never private individuals) and does not circumvent any protection. You remain responsible for how you use the data; see Responsible use and limits.

Where is monitor state kept? In a named key-value store (de-epr-state) in your own Apify account; it holds the last result per registration so the next run can compare. You can delete it at any time to start a new baseline.

Do I need proxies or an account? No. The Actor needs no proxy, login or API key.

Why does a monitor run return nothing? Either LUCID has not changed since your last run (the run ends free) or nothing in your list changed. Check RUN_SUMMARY in the run's key-value store for the status and counts.

Built by Rastriq - reliable data from official registers. Questions or feature requests: use the Actor's Issues tab.