Belgisch Staatsblad Scraper - Moniteur Belge & KBO Filings avatar

Belgisch Staatsblad Scraper - Moniteur Belge & KBO Filings

Pricing

$4.50 / 1,000 per publication returneds

Go to Apify Store
Belgisch Staatsblad Scraper - Moniteur Belge & KBO Filings

Belgisch Staatsblad Scraper - Moniteur Belge & KBO Filings

Scrape the Belgian Official Gazette: every company act in the Annexes by KBO/BCE number, name or date — incorporation, statutes, director changes, office moves, dissolutions — with company number (mod-97 checked), legal form, address, act types, publication number and PDF.

Pricing

$4.50 / 1,000 per publication returneds

Rating

0.0

(0)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Share

What does Belgisch Staatsblad Scraper do?

Belgisch Staatsblad Scraper reads the Belgian Official Gazette (Belgisch Staatsblad / Moniteur belge / Belgisches Staatsblatt) on ejustice.just.fgov.be and returns one row per company publication from the Annexes (Bijlagen bij het Belgisch Staatsblad / Annexes du Moniteur belge): every incorporation, statute change, director appointment or resignation, registered-office move, capital change, merger and dissolution a Belgian company publishes. Search by KBO/BCE enterprise number (a whole list at once), company name or publication date, filter by act type, legal form, postal code or municipality — or switch to the gazette itself and read its daily table of contents (laws, royal decrees, ministerial orders, notices).

Also known as: Moniteur belge scraper, Staatsblad API, Belgian company filings, KBO publications, BCE publications, Bijlage Rechtspersonen.

  • 🏢 Company acts by enterprise number — paste one number or a whole portfolio; each is searched over the whole archive (1983 → today) or your date window.
  • 🗓 Every new company of the day — act type "Incorporation" + a date gives the gazette's new-company feed (measured: 11 result pages — over 1,000 incorporations — published 2026-10-09 → 2026-10-15).
  • 🧮 The enterprise number checked — normalised to 0417.497.106, mod-97 verified, with the BE VAT number and a link to KBO Public Search.
  • 🏷 Act types you can filter on — the printed act line split into the gazette's own codes (c01-c16) and English labels; one publication often carries two to five acts.
  • 🗣 The filing's own language — filingLanguage tells you whether the act was filed in Dutch, French or German, whatever interface language you search in.
  • 🔎 Text inside the act — optionally keep only publications whose PDF text contains a phrase (a person's name, "vereffening", "faillissement"), with a snippet.
  • 🔁 Monitoring — "Only new publications" remembers what earlier runs delivered: schedule it daily and get only the new acts of your companies.
  • 🔓 No login, no API key, no browser.

What data can you get from the Belgian Official Gazette?

🗓 Publication date publicationDate🔢 Publication number publicationNumber🆔 Enterprise number enterpriseNumber
✅ Mod-97 check enterpriseNumberValid💶 VAT number vatNumber🏢 Company name companyName
✂️ Abbreviation abbreviation⚖️ Legal form legalForm📍 Registered address address
🛣 Street street📮 Postal code postalCode🏙 City city
📝 Act types as printed category🏷 Act type codes actTypeCodes🇬🇧 Act types in English actTypes
🗣 Filing language filingLanguage📄 Official PDF pdfUrl🔗 Detail page detailUrl
🔗 KBO Public Search kboUrl📰 Annex or gazette publishedIn🔎 Full-text snippet fullTextMatch

Gazette mode adds: 🔢 numacId · 📜 title · ⚖️ documentType · 🗓 actDate · 🏛 agency · 📚 gazetteSection · 🗺 gazetteSubsection · 📰 edition · 📄 gazettePage · 🔗 articleUrl.

How to scrape the Belgian Official Gazette with Belgisch Staatsblad Scraper

  1. Create a free Apify account — it comes with free monthly credit.
  2. Open Belgisch Staatsblad Scraper and keep What to scrape on Company publications.
  3. Paste one or more enterprise numbers, or type a company name, or leave both empty and pick dates and an act type.
  4. Set Max results and click Start.
  5. Download the rows as JSON, CSV or Excel, or read them from the API.

⬇️ Input

ParameterTypeDescription
🔍 What to scrape
sectionselectcompany (default) = the Annexes; gazette = the daily table of contents of the gazette.
enterpriseNumberslistKBO/BCE numbers in any spelling (0417.497.106, BE0417497106, 417497106). One search each.
companyNametextThe gazette's own name search, e.g. colruyt.
🎯 Filters (the gazette's own search)
dateFrom / dateTodatePublication window. Empty: the whole archive for a number or name; otherwise the last 7 days.
actTypesmulti-selectc01 incorporation · c02 termination · c03 name · c04 registered office · c05 other addresses · c06 purpose · c07 capital · c08 resignations / appointments · c09 general meeting · c10 financial year · c11 articles of association · c12 legal form · c13 restructuring · c14 annual accounts · c15 miscellaneous · c16 ex-officio deletion.
legalFormselectBV/SRL, NV/SA, CV/SC, CommV/SComm, VZW/ASBL, older forms (BVBA/SPRL, CVBA/SCRL …), foundations, SE.
postalCodetextRegistered-office postal code, e.g. 1000.
municipalitytextRegistered-office municipality, e.g. hasselt.
searchQuerytextGazette mode: title or authority contains this text.
documentTypetextGazette mode: Koninklijk besluit, Arrêté royal, Decreet, Wet …
✂️ Refine results
onlyIndexedbooleanSkip publications the gazette lists without address, legal form and act type. Default false.
fullTextQuerytextKeep only publications whose own text contains this phrase; adds fullTextMatch.
🔁 Monitoring
onlyNewbooleanDeliver only publications earlier runs (same monitor name) did not. Default false.
stateKeytextThe monitor name, default default.
📦 Output
maxResultsintegerStop after this many rows. Default 50, 0 = no limit.
languageselectnl (default), fr or de edition of the site.
⚙️ Advanced
proxyConfigurationproxyDefault: Apify RESIDENTIAL, country BE.

Input JSON

{
"section": "company",
"enterpriseNumbers": ["0417.497.106", "0403.170.701"],
"actTypes": ["c08", "c04"],
"dateFrom": "2025-01-01",
"onlyNew": true,
"stateKey": "my-portfolio",
"maxResults": 500
}

Search by number for a company's history, by date for the market

A number or a name with no dates searches the whole archive, newest first (AB InBev's number returns 667 publications from 2026 back to 1991). A search with neither number nor name is a market query: it needs a date window and defaults to the last 7 days. The gazette refuses any search over 10,000 results ("Verfijn uw opzoeking"); the Actor then splits the date window in halves, newest half first, until every part fits — reaching the newest week of September 2026 took three searches.

Pick several act types instead of reading everything

The gazette's form takes one act type per search; the Actor runs one search per type you pick and removes duplicates (a statutes change that is also a capital change is delivered once). Measured on 2026-10-15: of the day's 777 publications, 437 are listed without address, legal form or act type — an act-type filter or onlyIndexed leaves them out.

Use the full-text phrase for people and events

fullTextQuery downloads each candidate act's PDF and keeps it only when the phrase is inside (accents and case ignored). Measured: "bestuurder" over 2026-10-15's resignation/appointment acts matched 20 of 32 PDFs in 60 s. Scanned acts without a text layer (the PDF is an image) never match. Narrow the search with dates and act types first: every PDF is a request.

⬆️ Output

A real row (AB InBev, 2026-10-15):

{
"recordType": "company_publication",
"publicationId": "2026-10-15/0374286",
"publicationDate": "2026-10-15",
"publicationNumber": "0374286",
"enterpriseNumber": "0417.497.106",
"enterpriseNumberValid": true,
"vatNumber": "BE0417497106",
"companyName": "ANHEUSER-BUSCH INBEV, AFGEKORT : AB INBEV",
"abbreviation": "AB INBEV",
"legalForm": "NV",
"address": "GROTE MARKT 1 1000 BRUSSEL",
"postalCode": "1000",
"city": "BRUSSEL",
"category": "STATUTEN (VERTALING, COÖRDINATIE, OVERIGE WIJZIGINGEN, …) - KAPITAAL - AANDELEN",
"actTypeCodes": ["c11", "c07"],
"actTypes": ["articles of association (translation, coordination, other amendments)", "capital, shares"],
"filingLanguage": "nl",
"publishedIn": "annex",
"pdfUrl": "https://www.ejustice.just.fgov.be/tsv_pdf/2026/10/15/26374286.pdf",
"kboUrl": "https://kbopub.economie.fgov.be/kbopub/zoeknummerform.html?nummer=0417497106&actionLu=Zoek",
"matchedSearch": "enterprise 0417497106"
}

A gazette row (section: "gazette"):

{
"recordType": "gazette_publication",
"numacId": "2026007217",
"publicationDate": "2026-10-15",
"title": "27 september 2026. - Koninklijk besluit tot wijziging van het koninklijk besluit van 23 mei 2018 betreffende de Hoge Raad van Financiën",
"documentType": "Koninklijk besluit",
"actDate": "2026-09-27",
"agency": "Federale Overheidsdienst Financiën",
"gazetteSection": "Wetten, decreten, ordonnanties en verordeningen",
"edition": 1,
"gazettePage": 55269,
"pdfUrl": "https://www.ejustice.just.fgov.be/mopdf/2026/10/15_1.pdf"
}

Fields and how often they are filled

Measured on real runs: 1,000 incorporations (2026-10-09 → 15), 150 publications of all types (2026-09-30), 100 resignation/appointment acts (2026-10-13 → 15), and 262 gazette entries (2026-10-10 → 16).

FieldFillNote
publicationDate, publicationNumber, publicationId, enterpriseNumber, vatNumber, companyName, pdfUrl, detailUrl, kboUrl100%
enterpriseNumberValid100% trueevery one of the 2,000+ numbers read passed mod-97
legalForm, address, postalCode, city, street, category, actTypeCodes, actTypes, filingLanguage100% on act-type searchesthe all-types day list holds rows without them (437 of 777 on 2026-10-15)
abbreviation5.6-12%only when the company publishes a short name
filingLanguagenl 61% · fr 39%incorporations, one week
gazette numacId, title, agency, gazetteSection, edition, gazettePage, pdfUrl100%
gazette actDate / documentType42% / 39%only dated acts carry them; notices (appointments, selections) do not
gazette gazetteSubsection22%community / region headings

Older history differs: before about 1997 the gazette printed only the municipality (city, no street) and no PDF; pre-2005 annual-accounts notices carry a year only (publicationYear, publicationDate null).

How can I use Belgian Official Gazette data?

  • 🏦 KYC / AML teams — monitor a client portfolio for director changes, office moves and dissolutions.
  • 💼 B2B sales — a daily list of newly incorporated companies, by postal code or legal form.
  • ⚖️ Lawyers and notaries — the full publication history of a counterparty, with the official PDF of every act.
  • 📊 Credit and risk — termination, liquidation and judicial-reorganisation acts as early warnings.
  • 🏛 Public-affairs teams — every royal decree or regional order of the day, filtered by authority or type.
  • 🤖 Data pipelines — enrich a KBO register extract with the acts behind each change.

How much does it cost to scrape the Belgian Official Gazette?

$0.0045 per publication row ($4.50 per 1,000). No start fee. Searches with no result, duplicates, rows already delivered to your monitor, rows your filters removed and acts without your full-text phrase are not charged.

RowsCost
10$0.045
100$0.45
1,000$4.50

Set a maximum charge per run in the run options; the Actor stops cleanly at it.

Integrations, API, scheduling & MCP

Schedule the Actor daily with "Only new publications" for a monitoring feed; send the rows to Google Sheets, Slack, Make, Zapier or n8n, or a webhook. Call it from code with the Python or JavaScript client, or let an AI agent use it through the Apify MCP server.

More Benelux and company-register scrapers

More on our profile.

Limits & empty runs

  • The gazette answers about one request per second; the Actor reads serially at that pace (100 rows per page: 1,000 rows in about a minute).
  • One search tops out at 10,000 results on the gazette side; date windows are split automatically, a single day is never split further.
  • The site only answers European residential connections; keep the default proxy (RESIDENTIAL, a European country).
  • If the gazette ever answers with its image CAPTCHA, the Actor stops reading and keeps what it delivered; the run message says so.
  • An empty run means the gazette has no publication for that search (for a number: no act published under it).

❓ FAQ

How much does Belgisch Staatsblad Scraper cost?

$0.0045 per publication row, no start fee. Rows that are filtered out, duplicated or already delivered to your monitor are not charged.

How many publications can Belgisch Staatsblad Scraper get?

Everything the gazette's search returns: a company's whole history (hundreds of acts for a large company), or a market query of up to 10,000 results per search window, which the Actor splits for you. About 800-1,100 company publications appear per working day (777 on 2026-10-15; about 5,500 in the week 2026-10-11 → 17).

Can Belgisch Staatsblad Scraper monitor companies?

Yes. Put the enterprise numbers in, turn on "Only new publications" and schedule the Actor daily; each run delivers only the acts earlier runs did not.

Does Belgisch Staatsblad Scraper get new company incorporations?

Yes: act type "Incorporation (c01)" plus a date window returns every new company with its legal form, address and number.

Can Belgisch Staatsblad Scraper read the gazette's laws and decrees?

Yes: set What to scrape to Gazette publications; each entry of the daily table of contents is one row with its NUMAC, document type, act date, authority and page.

Does Belgisch Staatsblad Scraper read the text of the acts?

It links every act's official PDF. With "Text inside the act" it also reads the PDF text and keeps only the acts that contain your phrase, with a snippet.

Do I need a login or an API key for Belgisch Staatsblad Scraper?

No. The gazette is public; the Actor needs no account, cookie or key.

Can I use Belgisch Staatsblad Scraper with the Apify API?

Yes — see the API tab for Python, JavaScript and HTTP examples.

Can AI agents use Belgisch Staatsblad Scraper through MCP?

Yes, through the Apify MCP server.

Why did Belgisch Staatsblad Scraper return no results?

The search matched nothing (a number with no published act, a name spelled differently), or your monitor had delivered everything before. The run summary (RUN_SUMMARY in the key-value store) lists what was searched and why rows were not delivered.

Your feedback

Found a bug or need a field? Open an issue on the Issues tab — we read every one.