Peppol Directory Lookup — company records and document types
Pricing
Pay per event
Peppol Directory Lookup — company records and document types
Find company records in the official Peppol Directory by VAT/enterprise number or name. Returns declared document types and explicit found/not-found/invalid-format/error states. Does not establish network reachability.
Pricing
Pay per event
Rating
0.0
(0)
Developer
fetchlab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Peppol Directory Lookup — company records and declared document types
Find a company in the official Peppol Directory by VAT number, enterprise number or name, and read the document types declared on its business card. The Directory is voluntary and incomplete: not found does not mean unreachable on Peppol. This Actor does not query SML/SMP or verify delivery. Official Directory specification.
Data comes live from the official Peppol Directory operated by OpenPeppol (directory.peppol.eu). No scraping, no cached copies.
Why you need this
Belgian B2B e-invoicing requirements and the French reform create demand for structured invoice workflows, but national delivery requirements differ. This Actor verifies only the scope described below; it is not a legal or tax eligibility check. See the Belgian official guidance and French official guidance.
Typical uses:
- Accounting & ERP teams — bulk-check a customer list before switching invoices from PDF to Peppol.
- SaaS builders — call it from your onboarding flow to retrieve the customer’s Directory business card and declared document types.
- AI agents — a single-purpose tool that returns a structured answer to "what does Directory publish about this company?".
- Sales & compliance — find out which companies in a country or sector are listed in Directory.
Input
| Field | Description |
|---|---|
identifiers | List of VAT numbers or enterprise numbers, one per line. Accepted formats: BE0202239951, 0202.239.951, 0202239951, NL857982012B01, FR12345678901, DE123456789, or a full Peppol ID such as 0208:0202239951. Spaces, dots and dashes are ignored. |
names | Optional list of company names to search (partial match). |
country | Optional ISO country code (BE, NL, FR…) to narrow name searches. |
defaultCountry | Country assumed for numbers typed without a prefix. Default BE. |
maxResultsPerName | Max participants returned per name search (1–100, default 10). |
groupNameResults | Name searches return one row per company, with every Peppol ID it is registered under in participantIds (default on). |
tryAllSchemes | Countries have several Peppol identifier schemes (Belgium: 0208 enterprise number and 9925 VAT number). When on, all are tried until a match is found. |
Example:
{"identifiers": ["BE0202239951", "0834.096.436", "NL857982012B01"],"names": ["proximus"],"country": "BE"}
Output
One record per identifier checked, and one per grouped company for name searches (unless grouping is disabled). maxResultsPerName limits participants before grouping; totalMatches is the raw participant count:
{"type": "identifier","input": "BE0202239951","registered": true,"directoryStatus": "found","networkReachability": "not-checked","participantId": "0208:0202239951","participantSchemeLabel": "BE:EN (enterprise number)","entityName": "Proximus S.A.","entityCountry": "BE","registrationDate": "2025-06-02","capabilities": {"acceptsInvoice": true,"acceptsCreditNote": true,"acceptsOrder": false,"acceptsDespatchAdvice": false,"acceptsBisBilling3": true},"documentTypes": [{ "summary": "Invoice — Peppol BIS Billing 3.0", "document": "Invoice", "profile": "Peppol BIS Billing 3.0", "version": "2.1", "id": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1" },{ "summary": "Credit note — Peppol BIS Billing 3.0", "document": "CreditNote", "profile": "Peppol BIS Billing 3.0", "version": "2.1", "id": "…" }],"schemesTried": ["0208:0202239951"],"directoryUrl": "https://directory.peppol.eu/public/locale-en_US/menuitem-search?q=0208%3A0202239951","checkedAt": "2026-09-13T17:40:00.000Z","error": null}
directoryStatus distinguishes found, not-found, invalid-format and error. The legacy registered flag is true only for a Directory match; never use false as a routing decision. networkReachability is always not-checked. Capabilities are declarations from Directory, not an independently verified SMP response.
Supported countries and identifier schemes
Belgium (0208 enterprise number, 9925 VAT), Netherlands (0106 KvK, 9944 VAT, 0190 OIN), France (0009 SIRET, 0002 SIRENE, 9957 VAT), Germany (9930 VAT, 0204 Leitweg-ID), Italy (0211 Partita IVA, 0210 Codice Fiscale), Luxembourg, Austria, Denmark, Sweden, Norway, Finland, Spain, Portugal, Ireland, Poland, and every other EU/EEA country with a Peppol VAT scheme, plus Australia, New Zealand, Singapore, Japan and Malaysia. You can always pass a full scheme:value Peppol ID for anything else.
Pricing
Pay per event: USD 0.005 per identifier lookup and USD 0.01 per name search. A name search is charged once regardless of returned rows. Prices are unchanged. Network latency and retries affect runtime.
When both identifiers and names are omitted, three demo identifiers are used. Supplying either field disables the demo; explicitly empty sources are rejected. For a name-only request, {"names":["proximus"],"country":"BE"} queries only that name.
Using it from your code
// Apify JS clientconst run = await client.actor('fetchlab/peppol-lookup').call({identifiers: ['BE0202239951', 'NL857982012B01'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();
# Apify Python clientrun = client.actor("fetchlab/peppol-lookup").call(run_input={"identifiers": ["BE0202239951"]})items = client.dataset(run["defaultDatasetId"]).list_items().items
Works with the Apify API, the Apify MCP server (so AI agents can call it as a tool), Make, n8n, Zapier and scheduled runs.
Notes and limits
- The Peppol Directory only lists participants whose Access Point publishes a "business card". A company can technically be reachable on Peppol without appearing in the Directory.
- The Directory enforces a limit of 2 requests per second; this Actor respects it and retries automatically on temporary errors.
- Data is returned as published by the Access Points; names and addresses are not normalised.
Related
Looking for VAT validation (VIES), Belgian company data (BCE/KBO) or an e-invoice (UBL / Peppol BIS) validator? See the other Actors by fetchlab.