getregdata-mcp 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +5 -5
  2. package/actors.js +810 -120
  3. package/index.js +3 -3
  4. package/package.json +2 -2
package/README.md CHANGED
@@ -4,8 +4,8 @@ An [MCP](https://modelcontextprotocol.io) server that gives any MCP-capable agen
4
4
  (Claude Desktop, Claude Code, Cursor, Cline, Windsurf, ...) direct
5
5
  access to **official business-registry actors** for KYC/AML, credit-risk,
6
6
  due-diligence and B2B data across Poland, Germany, Italy, Spain, Austria, France,
7
- Belgium, Czechia, Slovakia, Cyprus, Ireland, Portugal, Nigeria, Colombia, the US
8
- (California) and the UAE - plus a cross-border adverse-media screener.
7
+ Belgium, Czechia, Slovakia, Norway, Denmark, Estonia, Cyprus, Ireland, Portugal,
8
+ Nigeria, Colombia, the US (California, Illinois, county clerks) and the UAE - plus a cross-border adverse-media screener.
9
9
 
10
10
  For a Polish company, **`regdata_poland_kyb_check` answers the whole question in one
11
11
  call** - identity, beneficial owners, and insolvency screened against the company and
@@ -38,7 +38,7 @@ ownership, so anyone holding the ID can read that check's result.
38
38
  ## Setup
39
39
 
40
40
  You need an Apify API token (free, includes $5 credits):
41
- [apify.com](https://apify.com?fpr=getregdata).
41
+ [apify.com](https://getregdata.com/go/signup/mcp-readme/).
42
42
 
43
43
  ### Claude Desktop / Claude Code
44
44
 
@@ -72,7 +72,7 @@ first-class tools there:
72
72
  https://mcp.apify.com/?actors=regdata/crbr-beneficial-owners-scraper,regdata/krz-debtor-scraper,regdata/germany-handelsregister-scraper,regdata/poland-krs-financial-scraper,regdata/adverse-media-screener
73
73
  ```
74
74
 
75
- Swap in any [regdata actor](https://apify.com/regdata?fpr=getregdata), or connect plain
75
+ Swap in any [regdata actor](https://getregdata.com/go/catalog/mcp-readme/), or connect plain
76
76
  `https://mcp.apify.com` and let the agent discover them via `search-actors`
77
77
  ("Poland beneficial owners", "Germany insolvency", ...). OAuth signs you into your
78
78
  own Apify account, so billing and the free credit work exactly like the local server.
@@ -94,7 +94,7 @@ If the agent is unsure of a registry's exact input fields, it calls
94
94
 
95
95
  Pay-per-result on Apify, no subscription - from ~$0.003/result depending on actor
96
96
  and plan tier. The $5 monthly free credit covers hundreds to ~1,600 lookups. Each
97
- actor's current price is on its Store page at [apify.com/regdata](https://apify.com/regdata?fpr=getregdata).
97
+ actor's current price is on its Store page at [apify.com/regdata](https://getregdata.com/go/catalog/mcp-readme/).
98
98
 
99
99
  ## How it works
100
100
 
package/actors.js CHANGED
@@ -1,6 +1,6 @@
1
- // Auto-generated from the live Apify fleet (deployed builds). 35 regdata actors.
1
+ // Auto-generated from the live Apify fleet (deployed builds). 44 regdata actors.
2
2
  // Regenerate with: APIFY_TOKEN=... node scripts/gen-manifest.mjs
3
- // Generated 2026-07-23. Do not edit inputSchema by hand.
3
+ // Generated 2026-11-01. Do not edit inputSchema by hand.
4
4
  export const ACTORS = [
5
5
  {
6
6
  "slug": "poland-kyb-check",
@@ -15,6 +15,12 @@ export const ACTORS = [
15
15
  "title": "Company identifiers (NIP or KRS)",
16
16
  "description": "The Polish companies to check, by NIP (10 digits) or KRS (10 digits, leading zeros). Each identifier returns one complete KYB check: identity, beneficial owners, and insolvency proceedings against the company and every beneficial owner."
17
17
  },
18
+ "includeManagement": {
19
+ "type": "boolean",
20
+ "title": "Include management board (KRS)",
21
+ "description": "Also read the current KRS extract and return the sitting management board (or representing partners), representation rule, prokurenci (proxies), supervisory board, shareholders/partners and share capital. Companies without a KRS number are reported as not applicable. The board is billed by the board-members actor it runs, on top of the check.",
22
+ "default": false
23
+ },
18
24
  "krzConcurrency": {
19
25
  "type": "integer",
20
26
  "title": "Beneficial-owner screening concurrency",
@@ -86,22 +92,6 @@ export const ACTORS = [
86
92
  "title": "Max hits per entity",
87
93
  "description": "Maximum number of adverse hits to return per entity. 1-50.",
88
94
  "default": 25
89
- },
90
- "model": {
91
- "type": "string",
92
- "title": "Classification model (advanced)",
93
- "description": "OpenRouter model id used for classification. Default is a cheap, accurate model.",
94
- "default": "deepseek/deepseek-chat"
95
- },
96
- "serperApiKey": {
97
- "type": "string",
98
- "title": "Serper API Key (optional override)",
99
- "description": "Optional. Search is included; provide your own Serper key only to bill search to your own account."
100
- },
101
- "openRouterApiKey": {
102
- "type": "string",
103
- "title": "OpenRouter API Key (optional override)",
104
- "description": "Optional. The LLM is included; provide your own OpenRouter key only to bill classification to your own account."
105
95
  }
106
96
  },
107
97
  "additionalProperties": true
@@ -158,12 +148,12 @@ export const ACTORS = [
158
148
  "dateFrom": {
159
149
  "type": "string",
160
150
  "title": "Published Since (Date From)",
161
- "description": "Only return publications from this date onward (YYYY-MM-DD). Default: 30 days ago. | Nur Veroffentlichungen ab diesem Datum (JJJJ-MM-TT)."
151
+ "description": "Only return edicts published on or after this date (YYYY-MM-DD). Setting it is strongly recommended: it is the only filter the register applies server-side, so it is what keeps a browse-style run short, and it removes the need for the GmbH fallback query - without it a run with no searchQuery returns ONLY debtors whose name contains 'GmbH'. | Nur Veroeffentlichungen ab diesem Datum."
162
152
  },
163
153
  "dateTo": {
164
154
  "type": "string",
165
155
  "title": "Published Until (Date To)",
166
- "description": "Only return publications up to this date (YYYY-MM-DD). Default: today. | Nur Veroffentlichungen bis zu diesem Datum (JJJJ-MM-TT)."
156
+ "description": "Only return edicts published up to this date (YYYY-MM-DD). Applied per edict, not by the register, so a narrow window costs one page fetch per candidate. | Nur Veroeffentlichungen bis zu diesem Datum."
167
157
  },
168
158
  "entryType": {
169
159
  "type": "string",
@@ -179,7 +169,7 @@ export const ACTORS = [
179
169
  "maxResults": {
180
170
  "type": "integer",
181
171
  "title": "Max Results",
182
- "description": "Maximum number of results to return. Default: 100. Set to 0 for unlimited. | Maximale Anzahl der Ergebnisse.",
172
+ "description": "Maximum number of matching records to return. Default: 100. Set to 0 for unlimited. This caps matches, not work: dateTo and proceedingType are checked per edict, so reaching the cap can require many more page fetches than the cap itself. | Maximale Anzahl der Ergebnisse.",
183
173
  "default": 100
184
174
  }
185
175
  },
@@ -350,6 +340,17 @@ export const ACTORS = [
350
340
  "inputSchema": {
351
341
  "type": "object",
352
342
  "properties": {
343
+ "mode": {
344
+ "type": "string",
345
+ "title": "What to do",
346
+ "description": "<b>Search</b> looks up the names or entity numbers you list below. <b>New filings</b> delivers every newly approved California entity since the last run - schedule it daily and each run picks up where the previous one stopped. <b>Add addresses</b> takes the results of an earlier run and completes each record with its principal address, mailing address and the registered agent's address.",
347
+ "enum": [
348
+ "search",
349
+ "newFilings",
350
+ "addresses"
351
+ ],
352
+ "default": "search"
353
+ },
353
354
  "searchQueries": {
354
355
  "type": "array",
355
356
  "title": "Search queries",
@@ -360,12 +361,60 @@ export const ACTORS = [
360
361
  "title": "Max results per query",
361
362
  "description": "Maximum number of entities to keep per query (default 50 to avoid surprise charges on broad searches). Set 0 for no limit (all matches, typically up to ~500 per search).",
362
363
  "default": 50
364
+ },
365
+ "startEntityNumber": {
366
+ "type": "string",
367
+ "title": "Start from entity number",
368
+ "description": "New filings only, first run only: the California entity number to start from, e.g. <code>B20260403469</code>. Later runs continue automatically from the saved position."
369
+ },
370
+ "maxNumbersPerRun": {
371
+ "type": "integer",
372
+ "title": "Entity numbers to check per run",
373
+ "description": "Upper bound on how many entity numbers one run checks. California issues roughly 1,500-2,000 per business day; a daily schedule at the default keeps up, and whatever is not reached is picked up next run.",
374
+ "default": 2500
375
+ },
376
+ "includeNameReservations": {
377
+ "type": "boolean",
378
+ "title": "Include name reservations",
379
+ "description": "Name reservations share the number sequence but are not formed businesses. Off by default: they are skipped and not billed.",
380
+ "default": false
381
+ },
382
+ "restartFromStartNumber": {
383
+ "type": "boolean",
384
+ "title": "Restart from the start number",
385
+ "description": "Discard the saved position and start again from \"Start from entity number\". Use it to re-run a range; every record in it is delivered (and billed) again.",
386
+ "default": false
387
+ },
388
+ "stateStoreName": {
389
+ "type": "string",
390
+ "title": "Progress store name",
391
+ "description": "Name of the key-value store in your Apify account that keeps the scan position between runs. Use a different name to run several independent feeds.",
392
+ "default": "california-new-filings"
393
+ },
394
+ "stopAfterConsecutiveMisses": {
395
+ "type": "integer",
396
+ "title": "Stop after consecutive unanswered numbers",
397
+ "description": "How many consecutive entity numbers with no approved filing yet mark the end of what the registry has processed so far. Leave at the default unless a run stops too early.",
398
+ "default": 300
399
+ },
400
+ "reserveForNewNumbers": {
401
+ "type": "integer",
402
+ "title": "Look-ups reserved for new entity numbers",
403
+ "description": "Every run re-checks numbers that had no record yet before it moves on to new ones. This reserves part of the run's budget for new numbers so the scan always moves forward, even when the re-check queue is long. Leave at the default unless a run reports a growing backlog.",
404
+ "default": 1800
405
+ },
406
+ "sourceDatasetId": {
407
+ "type": "string",
408
+ "title": "Results to complete (dataset ID)",
409
+ "description": "The dataset ID of an earlier run of this actor. Every record in it is looked up once and returned with <code>principalAddress</code>, <code>mailingAddress</code>, <code>agentType</code>, <code>agentName</code> and <code>agentAddress</code> added. Commercial registered agents have no address of their own on the entity's record, so <code>agentAddress</code> is empty for those."
410
+ },
411
+ "sourceRunId": {
412
+ "type": "string",
413
+ "title": "...or the run ID",
414
+ "description": "Alternative to the dataset ID: the ID of the earlier run whose results should be completed."
363
415
  }
364
416
  },
365
- "additionalProperties": true,
366
- "required": [
367
- "searchQueries"
368
- ]
417
+ "additionalProperties": true
369
418
  }
370
419
  },
371
420
  {
@@ -410,6 +459,139 @@ export const ACTORS = [
410
459
  ]
411
460
  }
412
461
  },
462
+ {
463
+ "slug": "illinois-sos-business-search",
464
+ "tool": "regdata_illinois_sos_business",
465
+ "title": "Illinois Secretary of State - Business Search and New Filings",
466
+ "description": "Search the Illinois Secretary of State business register by company name or 8-digit file number, or (mode=newFilings) list LLCs and corporations newly organized in Illinois between two dates within the last 13 months. Returns entity name, file number, type, status, formation and other dates, registered agent, and managers or officers. Name search matches entities whose name contains all the words; onlyActive keeps entities in good standing. For a daily new-business feed, schedule newFilings with onlyNewSinceLastRun so late-indexed filings arrive exactly once. No API key.",
467
+ "inputSchema": {
468
+ "type": "object",
469
+ "properties": {
470
+ "mode": {
471
+ "type": "string",
472
+ "title": "What to do",
473
+ "description": "<b>Search</b> looks up the company names or Illinois file numbers you list. <b>New filings</b> lists the LLCs and corporations organized in Illinois between two dates (the last 13 months) - schedule it daily with \"Only entities not delivered before\" for a feed.",
474
+ "enum": [
475
+ "search",
476
+ "newFilings"
477
+ ],
478
+ "default": "search"
479
+ },
480
+ "searchQueries": {
481
+ "type": "array",
482
+ "title": "Search queries",
483
+ "description": "Company names or 8-digit Illinois file numbers, one per line. A name matches every entity whose name contains all its words (\"LLC\", \"Inc\" and similar endings are ignored, except that an exact full name is listed first)."
484
+ },
485
+ "maxResultsPerQuery": {
486
+ "type": "integer",
487
+ "title": "Max results per query",
488
+ "description": "Most entities kept per query (default 50, so a broad word does not bring thousands of records). 0 = up to 1,000.",
489
+ "default": 50
490
+ },
491
+ "entityFamilies": {
492
+ "type": "array",
493
+ "title": "Entity types",
494
+ "description": "Leave empty for both.",
495
+ "items": {
496
+ "type": "string"
497
+ }
498
+ },
499
+ "onlyActive": {
500
+ "type": "boolean",
501
+ "title": "Only active entities",
502
+ "description": "Keep only entities in good standing or reinstated.",
503
+ "default": false
504
+ },
505
+ "dateFrom": {
506
+ "type": "string",
507
+ "title": "Organized from",
508
+ "description": "New filings only. YYYY-MM-DD. Default: 7 days ago. The last 13 months are available."
509
+ },
510
+ "dateTo": {
511
+ "type": "string",
512
+ "title": "Organized to",
513
+ "description": "New filings only. YYYY-MM-DD, inclusive. Default: today."
514
+ },
515
+ "onlyNewSinceLastRun": {
516
+ "type": "boolean",
517
+ "title": "Only entities not delivered before",
518
+ "description": "New filings only. Skips entities this feed already delivered, so a daily schedule with a 7-day window catches late-registered filings exactly once.",
519
+ "default": false
520
+ },
521
+ "stateStoreName": {
522
+ "type": "string",
523
+ "title": "Feed memory store name",
524
+ "description": "New filings only. Key-value store in your Apify account that remembers what was delivered. Use a different name for each independent feed.",
525
+ "default": "illinois-sos-search-state"
526
+ }
527
+ },
528
+ "additionalProperties": true
529
+ }
530
+ },
531
+ {
532
+ "slug": "us-county-recorded-documents",
533
+ "tool": "regdata_us_county_recorded_documents",
534
+ "title": "US County Clerk Records - lis pendens, liens and deeds (Texas, Ohio, Michigan and more)",
535
+ "description": "Daily index of documents recorded with US county clerks in selected counties across Texas, Ohio, Michigan, Pennsylvania, Colorado and other states (counties enum in the input): lis pendens, liens, deeds, deeds of trust, releases, affidavits of heirship and sheriff's deeds, with recorded date, document category and grantor and grantee names. Use for pre-foreclosure and probate lead lists, lien monitoring on a named party, and title research. Pick counties and a recorded-date window (at most 31 days per run; the newest day can still be incomplete while the county finishes indexing), optionally document categories or a party name (counties index people as LAST FIRST). onlyNewSinceLastRun makes a scheduled run deliver each document once. No API key.",
536
+ "inputSchema": {
537
+ "type": "object",
538
+ "properties": {
539
+ "counties": {
540
+ "type": "array",
541
+ "title": "Counties",
542
+ "description": "The counties to read, from the county clerk's official public records search. Counties are read one after another.",
543
+ "items": {
544
+ "type": "string"
545
+ }
546
+ },
547
+ "dateFrom": {
548
+ "type": "string",
549
+ "title": "Recorded from",
550
+ "description": "First recorded date, YYYY-MM-DD. Default: yesterday. At most 31 days per run."
551
+ },
552
+ "dateTo": {
553
+ "type": "string",
554
+ "title": "Recorded to",
555
+ "description": "Last recorded date, YYYY-MM-DD, inclusive. Default: yesterday. Counties publish each day once their indexing is done, so the most recent day can still be incomplete."
556
+ },
557
+ "documentCategories": {
558
+ "type": "array",
559
+ "title": "Document categories",
560
+ "description": "Keep only these kinds of documents. Leave empty for every document recorded in the window. Each document gets one category, matched on the county's document type wording.",
561
+ "items": {
562
+ "type": "string"
563
+ }
564
+ },
565
+ "partyName": {
566
+ "type": "string",
567
+ "title": "Party name (optional)",
568
+ "description": "Only documents where this name appears as a grantor or grantee, e.g. \"SMITH JOHN\" or a company name. Counties index people as LAST FIRST. Leave empty for every document in the window."
569
+ },
570
+ "maxResults": {
571
+ "type": "integer",
572
+ "title": "Max results",
573
+ "description": "Most documents delivered in this run, across all counties. 0 = no limit.",
574
+ "default": 1000
575
+ },
576
+ "onlyNewSinceLastRun": {
577
+ "type": "boolean",
578
+ "title": "Only documents not delivered before",
579
+ "description": "For a scheduled daily feed: skips documents this feed already delivered (remembered for 60 days), so a window that overlaps the previous run still delivers each document once.",
580
+ "default": false
581
+ },
582
+ "stateStoreName": {
583
+ "type": "string",
584
+ "title": "Feed memory store name",
585
+ "description": "Key-value store in your Apify account that remembers delivered documents. Use a different name for each independent feed.",
586
+ "default": "county-records-feed-state"
587
+ }
588
+ },
589
+ "additionalProperties": true,
590
+ "required": [
591
+ "counties"
592
+ ]
593
+ }
594
+ },
413
595
  {
414
596
  "slug": "crbr-beneficial-owners-scraper",
415
597
  "tool": "regdata_crbr_beneficial_owners",
@@ -501,6 +683,226 @@ export const ACTORS = [
501
683
  "additionalProperties": true
502
684
  }
503
685
  },
686
+ {
687
+ "slug": "czech-drazby-auction-scraper",
688
+ "tool": "regdata_czech_auctions",
689
+ "title": "Czech Public Auctions - Portál dražeb (judicial executors)",
690
+ "description": "List auctions run by Czech judicial executors from the official Portál dražeb: foreclosed flats, houses, land, vehicles, machinery and whole companies, with appraised value, reserve price and the discount between them, the deposit, auction dates, property address with coordinates and the published appraisal PDF. Filter by list (upcoming, ongoing, finished, pre-emption), start-date window, category, real vs movable property, region and price range; optional detail mode adds bid history, result and objections. mode=auctioneers instead exports the directory of executor offices. An empty 'ongoing' list is normal (auctions run in short windows), not an error. No API key.",
691
+ "inputSchema": {
692
+ "type": "object",
693
+ "properties": {
694
+ "mode": {
695
+ "type": "string",
696
+ "title": "What to export",
697
+ "description": "'Auctions' enumerates auction listings. 'Executor offices' instead exports the directory of all Czech judicial executor offices with their addresses and contact details, and ignores every filter below.",
698
+ "enum": [
699
+ "auctions",
700
+ "auctioneers"
701
+ ],
702
+ "default": "auctions"
703
+ },
704
+ "listings": {
705
+ "type": "array",
706
+ "title": "Auction lists",
707
+ "description": "Which of the register's lists to read. 'Upcoming' is the main one. 'Ongoing' is empty most of the time because auctions run in short windows - that is a normal result, not an error. 'Finished' and 'Pre-emption' are small rolling windows: the register does NOT keep a historical archive, so they cannot be used to research past sale prices.",
708
+ "default": [
709
+ "upcoming"
710
+ ],
711
+ "items": {
712
+ "type": "string"
713
+ }
714
+ },
715
+ "startFrom": {
716
+ "type": "string",
717
+ "title": "Auction date from",
718
+ "description": "Earliest auction start date, YYYY-MM-DD. Defaults to today for forward-looking lists. This also drives how the run splits its queries, so a narrower window costs fewer calls."
719
+ },
720
+ "startTo": {
721
+ "type": "string",
722
+ "title": "Auction date to",
723
+ "description": "Latest auction start date, YYYY-MM-DD. Defaults to one year ahead. The register typically holds about four months of scheduled auctions."
724
+ },
725
+ "categories": {
726
+ "type": "array",
727
+ "title": "Categories",
728
+ "description": "Restrict to these property categories. The register's own category filter is hierarchical and over-broad - asking for 'Byt' also returns its parent 'Nemovitosti' and its sibling 'Nebytový prostor' - so results are filtered again locally to exactly what you picked. Turn off 'Exact category match' below if you want the register's broader interpretation.",
729
+ "items": {
730
+ "type": "string"
731
+ }
732
+ },
733
+ "itemType": {
734
+ "type": "string",
735
+ "title": "Property type",
736
+ "description": "Keep only real estate, only movable property, or both. Movable lots (vehicles, machinery, goods) usually have no address, so they cannot be placed on a map.",
737
+ "enum": [
738
+ "any",
739
+ "real",
740
+ "movable"
741
+ ],
742
+ "default": "any"
743
+ },
744
+ "counties": {
745
+ "type": "array",
746
+ "title": "Regions (kraje)",
747
+ "description": "Keep only auctions whose property lies in these regions, matched on the region name as the register spells it, e.g. 'Praha', 'Jihočeský kraj', 'Moravskoslezský kraj'. Partial matches count. Lots with no published location are excluded when this is set.",
748
+ "items": {
749
+ "type": "string"
750
+ }
751
+ },
752
+ "minPrice": {
753
+ "type": "integer",
754
+ "title": "Minimum reserve price (CZK)",
755
+ "description": "Lowest reserve (starting) price to include, in CZK. Applied by the register itself."
756
+ },
757
+ "maxPrice": {
758
+ "type": "integer",
759
+ "title": "Maximum reserve price (CZK)",
760
+ "description": "Highest reserve (starting) price to include, in CZK. Applied by the register itself."
761
+ },
762
+ "maxResults": {
763
+ "type": "integer",
764
+ "title": "Max results",
765
+ "description": "Maximum auction records to export. A lot appearing in more than one selected list is exported once, so you are never charged twice for the same auction.",
766
+ "default": 1000
767
+ },
768
+ "includeDetails": {
769
+ "type": "boolean",
770
+ "title": "Include bid history and outcome",
771
+ "description": "Fetch each auction's detail record to add bid history, result and objections. Costs one extra request per auction, so it roughly doubles a run's duration. Upcoming auctions have no bids yet, so leave this off unless you are reading finished lots.",
772
+ "default": false
773
+ },
774
+ "exactCategories": {
775
+ "type": "boolean",
776
+ "title": "Exact category match",
777
+ "description": "On by default. Keeps only the categories you selected, discarding the parent and sibling categories the register adds on its own. Turn off to receive the register's broader match.",
778
+ "default": true
779
+ }
780
+ },
781
+ "additionalProperties": true
782
+ }
783
+ },
784
+ {
785
+ "slug": "czech-annual-accounts",
786
+ "tool": "regdata_czech_annual_accounts",
787
+ "title": "Czech Annual Accounts - IČO Financial Statements",
788
+ "description": "Get the filed annual accounts (účetní závěrka) of Czech companies by IČO from the Sbírka listin of the public register: revenue, operating profit, profit before tax, net profit, total/fixed/current assets, cash, equity, share capital, long- and short-term liabilities, with the prior year from the same filing. One row per company, fiscal year and statement type (up to 5 years; group accounts on request). Figures are in whole currency units (CZK, some large companies EUR). _parseQuality: verified = balance sheet adds up; partial = adds up but revenue/profit not filed (common for small companies, which may file the balance sheet only). A row with success:false is NOT a clean bill of health: \"scan - figures not read\" and \"figures not read from this filing\" mean the filing exists but its figures were not read (sourceUrl links the document); not_found = no such company; no_filings = no annual accounts filed. Those rows are not charged. The latest year appears only once the company has filed it, often a year or two late. TIMING: about 5-10 s per company; scanned filings take longer (up to a few minutes). If the run is not finished in time, the tool returns {status, runId, note} - call regdata_run_result with that runId instead of re-running (re-running bills twice). No API key.",
789
+ "inputSchema": {
790
+ "type": "object",
791
+ "properties": {
792
+ "companyIds": {
793
+ "type": "array",
794
+ "title": "IČO numbers",
795
+ "description": "Czech company identification numbers (IČO, 8 digits), up to 1,000 per run. Example: 06401643. Each company takes a few seconds; very large lists are best split into runs of up to 300 companies."
796
+ },
797
+ "years": {
798
+ "type": "integer",
799
+ "title": "Fiscal years per company",
800
+ "description": "How many of the most recent fiscal years to return for each company (1 to 5). Each year read is one row and one charge.",
801
+ "default": 1
802
+ },
803
+ "includeConsolidated": {
804
+ "type": "boolean",
805
+ "title": "Include group (consolidated) accounts",
806
+ "description": "Also look for the consolidated group accounts next to the company's own accounts. Each group statement read is an extra row and an extra charge. Companies that file group accounts only get them either way. Off by default.",
807
+ "default": false
808
+ }
809
+ },
810
+ "additionalProperties": true,
811
+ "required": [
812
+ "companyIds"
813
+ ]
814
+ }
815
+ },
816
+ {
817
+ "slug": "norway-annual-accounts",
818
+ "tool": "regdata_norway_annual_accounts",
819
+ "title": "Norway Annual Accounts - Brønnøysund Financial Statements",
820
+ "description": "Get the filed annual accounts (årsregnskap) of Norwegian companies by organisation number (organisasjonsnummer, 9 digits) from the Brønnøysund Register of Company Accounts: revenue, operating profit, net profit, total assets, equity and liabilities, checked against the balance sheet. One row per company, fiscal year and statement type (up to 3 years; consolidated group accounts optional, each an extra row and charge). Use it after a free Brreg (Enhetsregisteret) lookup when you need the numbers, not just the identity. If the run is not finished in time, the tool returns {status, runId, note} - call regdata_run_result with that runId instead of re-running (re-running bills twice). No API key.",
821
+ "inputSchema": {
822
+ "type": "object",
823
+ "properties": {
824
+ "companyIds": {
825
+ "type": "array",
826
+ "title": "Organisation numbers",
827
+ "description": "Norwegian organisation numbers (organisasjonsnummer), 9 digits, up to 1,000 per run. Example: 923609016."
828
+ },
829
+ "years": {
830
+ "type": "integer",
831
+ "title": "Fiscal years per company",
832
+ "description": "How many of the most recent fiscal years to return for each company (1 to 3). Each year is one row and one charge.",
833
+ "default": 1
834
+ },
835
+ "includeConsolidated": {
836
+ "type": "boolean",
837
+ "title": "Include group (consolidated) accounts",
838
+ "description": "Also return the consolidated group accounts when the company files them. Each group statement is an extra row and an extra charge. Off by default.",
839
+ "default": false
840
+ }
841
+ },
842
+ "additionalProperties": true,
843
+ "required": [
844
+ "companyIds"
845
+ ]
846
+ }
847
+ },
848
+ {
849
+ "slug": "denmark-annual-accounts",
850
+ "tool": "regdata_denmark_annual_accounts",
851
+ "title": "Denmark Annual Accounts - CVR Financial Statements (Årsrapport)",
852
+ "description": "Get the filed annual reports (årsrapport) of Danish companies by CVR number (8 digits): revenue, gross profit, net profit, total assets, equity, liabilities and employees, with the prior year included, balance-checked. One row per company, fiscal year and statement type (up to 5 years; group accounts optional - companies that file group accounts only, such as listed IFRS groups, return those). Use it after a free CVR identity lookup when you need the financials. If the run is not finished in time, the tool returns {status, runId, note} - call regdata_run_result with that runId instead of re-running (re-running bills twice). No API key.",
853
+ "inputSchema": {
854
+ "type": "object",
855
+ "properties": {
856
+ "companyIds": {
857
+ "type": "array",
858
+ "title": "CVR numbers",
859
+ "description": "Danish CVR numbers, 8 digits, up to 1,000 per run. Example: 21766909."
860
+ },
861
+ "years": {
862
+ "type": "integer",
863
+ "title": "Fiscal years per company",
864
+ "description": "How many of the most recent fiscal years to return for each company (1 to 5). Each year is one row and one charge.",
865
+ "default": 1
866
+ },
867
+ "includeConsolidated": {
868
+ "type": "boolean",
869
+ "title": "Include group (consolidated) accounts",
870
+ "description": "Also return the consolidated group accounts next to the company's own accounts. Each group statement is an extra row and an extra charge. Companies that file group accounts only (for example listed IFRS companies) get them either way. Off by default.",
871
+ "default": false
872
+ }
873
+ },
874
+ "additionalProperties": true,
875
+ "required": [
876
+ "companyIds"
877
+ ]
878
+ }
879
+ },
880
+ {
881
+ "slug": "estonia-annual-accounts",
882
+ "tool": "regdata_estonia_annual_accounts",
883
+ "title": "Estonia Annual Accounts - e-Business Register Financials",
884
+ "description": "Get the filed annual accounts (majandusaasta aruanne) of Estonian companies by registry code (registrikood, 8 digits) from the e-Business Register: revenue, operating profit, net profit, total assets, equity and liabilities, checked against the balance sheet. One row per company and fiscal year (up to 3 years). Use it for Estonian KYB, credit checks and supplier vetting when you need the numbers. If the run is not finished in time, the tool returns {status, runId, note} - call regdata_run_result with that runId instead of re-running (re-running bills twice). No API key.",
885
+ "inputSchema": {
886
+ "type": "object",
887
+ "properties": {
888
+ "companyIds": {
889
+ "type": "array",
890
+ "title": "Registry codes",
891
+ "description": "Estonian company registry codes (registrikood), 8 digits, up to 1,000 per run. Example: 10000018."
892
+ },
893
+ "years": {
894
+ "type": "integer",
895
+ "title": "Fiscal years per company",
896
+ "description": "How many of the most recent fiscal years to return for each company (1 to 3). Each year is one row and one charge.",
897
+ "default": 1
898
+ }
899
+ },
900
+ "additionalProperties": true,
901
+ "required": [
902
+ "companyIds"
903
+ ]
904
+ }
905
+ },
504
906
  {
505
907
  "slug": "ekw-ksiegi-wieczyste-scraper",
506
908
  "tool": "regdata_ekw_ksiegi_wieczyste",
@@ -512,7 +914,7 @@ export const ACTORS = [
512
914
  "kwNumbers": {
513
915
  "type": "array",
514
916
  "title": "KW Numbers",
515
- "description": "List of KW numbers to look up. Format: 'CODE/NUMBER/DIGIT' (e.g., 'WR1K/00094598/3'). The check digit (last part) is optional - it will be auto-calculated if omitted. You can also provide just 'CODE/NUMBER'. Note: users on the Apify Free plan get a preview allowance of 25 KW numbers per 30 days; upgrade to any paid Apify plan to run unlimited batches."
917
+ "description": "List of KW numbers to look up. Format: 'CODE/NUMBER/DIGIT' (e.g., 'WA4M/00160286/2'). The check digit (last part) is optional - it will be auto-calculated if omitted. You can also provide just 'CODE/NUMBER'. Note: users on the Apify Free plan get a preview allowance of 25 KW numbers per 30 days; upgrade to any paid Apify plan to run unlimited batches."
516
918
  },
517
919
  "viewType": {
518
920
  "type": "string",
@@ -546,8 +948,8 @@ export const ACTORS = [
546
948
  "maxConcurrency": {
547
949
  "type": "integer",
548
950
  "title": "Max parallel lookups",
549
- "description": "How many KW numbers to process in parallel (1-5). Higher = faster batches. Default 5.",
550
- "default": 5
951
+ "description": "How many KW numbers to process in parallel. Default 4; values above 4 are accepted but run at 4, so one access slot always stays free for other runs.",
952
+ "default": 4
551
953
  }
552
954
  },
553
955
  "additionalProperties": true,
@@ -556,6 +958,169 @@ export const ACTORS = [
556
958
  ]
557
959
  }
558
960
  },
961
+ {
962
+ "slug": "poland-elicytacje-auction-scraper",
963
+ "tool": "regdata_poland_tax_auctions",
964
+ "title": "Poland Tax Office Auctions - eLicytacje KAS",
965
+ "description": "List sales published by Polish tax offices (KAS) on eLicytacje: cars, flats, houses, land, machinery and company shares, with starting price (cena wywołania), valuation (wartość szacunkowa) and the discount between them, deposit (wadium), location, tax office, and for vehicles make, model, year and VIN; real estate carries the land-registry (księga wieczysta) number, which chains into regdata_ekw_ksiegi_wieczyste. Filter by section, category, title keywords, city or voivodeship, status (upcoming, live, sold - sold rows carry the final price), sale kind and price or valuation range. onlyNewOrChanged=true turns a scheduled run into a monitoring feed of new or changed sales. No API key.",
966
+ "inputSchema": {
967
+ "type": "object",
968
+ "properties": {
969
+ "sections": {
970
+ "type": "array",
971
+ "title": "Sections",
972
+ "description": "Movables (vehicles, machinery, goods), real estate, or property rights (company shares, receivables, securities). Leave empty for all three.",
973
+ "items": {
974
+ "type": "string"
975
+ }
976
+ },
977
+ "categories": {
978
+ "type": "array",
979
+ "title": "Categories",
980
+ "description": "Narrow to these categories. Each category belongs to one section, so there is no need to pick the section as well. Leave empty for everything in the chosen sections.",
981
+ "items": {
982
+ "type": "string"
983
+ }
984
+ },
985
+ "keywords": {
986
+ "type": "string",
987
+ "title": "Keywords",
988
+ "description": "Search the announcement titles, e.g. 'Toyota', 'ciągnik', 'działka budowlana'. At least 3 letters or digits; other characters are treated as spaces."
989
+ },
990
+ "locations": {
991
+ "type": "array",
992
+ "title": "Locations",
993
+ "description": "City or voivodeship as the portal writes it, e.g. 'Warszawa', 'Kraków', 'mazowieckie', 'lubelskie'. Each entry is searched separately and the results merged. Leave empty for the whole country.",
994
+ "items": {
995
+ "type": "string"
996
+ }
997
+ },
998
+ "statuses": {
999
+ "type": "array",
1000
+ "title": "Sale status",
1001
+ "description": "Which sales to include. 'Upcoming' and 'Live' are the ones you can still bid on. 'Sold' carries the final price, which makes it the realised-price history the portal has kept since it opened on 1 July 2026.",
1002
+ "default": [
1003
+ "upcoming",
1004
+ "live"
1005
+ ],
1006
+ "items": {
1007
+ "type": "string"
1008
+ }
1009
+ },
1010
+ "saleKinds": {
1011
+ "type": "array",
1012
+ "title": "Sale type",
1013
+ "description": "Auctions, free-hand sales at a fixed price, tenders, or real-estate valuation notices - the notice a tax office publishes before a property auction, so the earliest signal that one is coming. Leave empty for all.",
1014
+ "items": {
1015
+ "type": "string"
1016
+ }
1017
+ },
1018
+ "minStartingPrice": {
1019
+ "type": "integer",
1020
+ "title": "Minimum starting price (PLN)",
1021
+ "description": "Lowest starting price (cena wywołania) to include. Applied by the portal itself."
1022
+ },
1023
+ "maxStartingPrice": {
1024
+ "type": "integer",
1025
+ "title": "Maximum starting price (PLN)",
1026
+ "description": "Highest starting price to include. Applied by the portal itself."
1027
+ },
1028
+ "maxResults": {
1029
+ "type": "integer",
1030
+ "title": "Max results",
1031
+ "description": "Maximum announcements to export. An announcement matched by more than one location or category is exported once, so you are never charged twice for it.",
1032
+ "default": 1000
1033
+ },
1034
+ "includeDetails": {
1035
+ "type": "boolean",
1036
+ "title": "Include full details",
1037
+ "description": "Adds the valuation and the discount to it, the deposit and its bank account, the item's address, the category, the tax office and its contact, the item description, vehicle data (make, model, year, VIN, registration, mileage), the land-registry (KW) number and plot data for real estate, photos and the notice PDFs. Two extra requests per announcement, so a run takes longer; the price per record is the same.",
1038
+ "default": false
1039
+ },
1040
+ "onlyNewOrChanged": {
1041
+ "type": "boolean",
1042
+ "title": "Only new or changed since the last run",
1043
+ "description": "Monitoring mode. Exports only announcements that are new, or whose status changed (for example upcoming to sold), since the last run with the same filter. The first run exports everything and sets the baseline. Schedule it daily for an alert feed.",
1044
+ "default": false
1045
+ },
1046
+ "monitorId": {
1047
+ "type": "string",
1048
+ "title": "Monitor name",
1049
+ "description": "Optional. Runs with the same filter share one memory automatically; give a name to keep several independent feeds for the same filter. Letters, digits, '-' and '_'."
1050
+ },
1051
+ "minEstimatedValue": {
1052
+ "type": "integer",
1053
+ "title": "Minimum estimated value (PLN)",
1054
+ "description": "Lowest valuation (wartość szacunkowa) to include. Applied by the portal itself."
1055
+ },
1056
+ "maxEstimatedValue": {
1057
+ "type": "integer",
1058
+ "title": "Maximum estimated value (PLN)",
1059
+ "description": "Highest valuation to include. Applied by the portal itself."
1060
+ },
1061
+ "onlyWithDeposit": {
1062
+ "type": "boolean",
1063
+ "title": "Only sales that require a deposit",
1064
+ "description": "Keep only sales that require a deposit (wadium) before bidding - mostly real estate and higher-value lots.",
1065
+ "default": false
1066
+ },
1067
+ "publishedFrom": {
1068
+ "type": "string",
1069
+ "title": "Published from",
1070
+ "description": "Keep only announcements published on or after this date, YYYY-MM-DD."
1071
+ }
1072
+ },
1073
+ "additionalProperties": true
1074
+ }
1075
+ },
1076
+ {
1077
+ "slug": "france-insolvency-scraper",
1078
+ "tool": "regdata_france_insolvency",
1079
+ "title": "France Insolvency Check (BODACC Procédures collectives)",
1080
+ "description": "Check French companies and sole traders for collective proceedings (liquidation judiciaire, redressement judiciaire, sauvegarde) in BODACC, the official bulletin where French courts publish every insolvency judgment, by SIREN, SIRET or name. One row per judgment, newest first: eventType (bankruptcy_opened = liquidation opened or converted, restructuring_opened = redressement/sauvegarde, plan_confirmed, proceeding_closed, other), the French judgment name, judgment and publication dates, court, SIREN, legal form, seat and the link to the official notice. Coverage from January 2008. Zero rows for a SIREN means BODACC holds no insolvency judgment for it in the searched window - read the run status message: a query BODACC did not answer is reported as NOT checked (unknown, not clear) and is not charged. Name search matches words, so prefer the SIREN; a name query returns the 20 newest judgments by default. No API key.",
1081
+ "inputSchema": {
1082
+ "type": "object",
1083
+ "properties": {
1084
+ "siren": {
1085
+ "type": "array",
1086
+ "title": "SIREN or SIRET numbers",
1087
+ "description": "French company identifiers to check: SIREN (9 digits) or SIRET (14 digits, reduced to its SIREN). Spaces are fine. The most precise check - use it whenever you have the number."
1088
+ },
1089
+ "name": {
1090
+ "type": "string",
1091
+ "title": "Company or trader name",
1092
+ "description": "A company name or a sole trader's name, matched as a word search on the debtor name in BODACC. Ignored when a watchlist is set."
1093
+ },
1094
+ "watchlist": {
1095
+ "type": "array",
1096
+ "title": "Watchlist (bulk / monitoring)",
1097
+ "description": "Up to 100 entries to check in one run - names, SIRENs and SIRETs can be mixed (a 9- or 14-digit entry is treated as an identifier). Overrides the single name field. Schedule it to re-check your counterparties."
1098
+ },
1099
+ "exactMatch": {
1100
+ "type": "boolean",
1101
+ "title": "Exact name match",
1102
+ "description": "Off (default): every debtor whose name contains the words. On: only debtors whose name equals the query, ignoring case, accents and punctuation. No effect on SIREN checks.",
1103
+ "default": false
1104
+ },
1105
+ "dateFrom": {
1106
+ "type": "string",
1107
+ "title": "Published from",
1108
+ "description": "Optional start of the publication-date window (YYYY-MM-DD). Leave empty to search the full BODACC history (online from 2008)."
1109
+ },
1110
+ "dateTo": {
1111
+ "type": "string",
1112
+ "title": "Published to",
1113
+ "description": "Optional end of the publication-date window (YYYY-MM-DD)."
1114
+ },
1115
+ "maxResults": {
1116
+ "type": "integer",
1117
+ "title": "Max judgments per SIREN or name",
1118
+ "description": "The most judgments returned for one SIREN or name, newest first. Leave empty for the defaults: 100 per SIREN, 20 per name (a broad name such as \"Martin\" matches thousands of unrelated debtors)."
1119
+ }
1120
+ },
1121
+ "additionalProperties": true
1122
+ }
1123
+ },
559
1124
  {
560
1125
  "slug": "germany-handelsregister-scraper",
561
1126
  "tool": "regdata_germany_handelsregister",
@@ -567,7 +1132,7 @@ export const ACTORS = [
567
1132
  "searchQuery": {
568
1133
  "type": "string",
569
1134
  "title": "Company name / keyword",
570
- "description": "Company name or keyword(s) to search for (Schlagwörter). E.g. \"Zalando SE\" or \"BioNTech\"."
1135
+ "description": "Company name or keyword(s) to search for (Schlagwörter). E.g. \"Zalando SE\" or \"BioNTech\". The register accepts at most 5 keywords - send the company name only, not a website title or description. Legal forms (GmbH, AG, KG, e.V., ...), \"und\", \"mit\" and repeated words do not count; \"der\", \"für\", \"von\" do. Single letters and legal forms alone are ignored: \"K&F\" searches for nothing - add a word from the name (\"K & F Kältetechnik\") or write the letters together (\"KF\")."
571
1136
  },
572
1137
  "exactMatch": {
573
1138
  "type": "boolean",
@@ -578,13 +1143,24 @@ export const ACTORS = [
578
1143
  "registerNumber": {
579
1144
  "type": "string",
580
1145
  "title": "Register number (optional)",
581
- "description": "Optional commercial register number to narrow the search, e.g. \"215511\" (HRB). Must be combined with a company name/keyword - the portal does not allow number-only searches."
1146
+ "description": "Optional register number to narrow the search. The number on its own (\"215511\") or with its register type (\"HRB 6684\", \"HRB 215511 B\") - both work, and the type is selected for you. Must be combined with a company name/keyword: the portal does not allow number-only searches."
582
1147
  },
583
1148
  "maxResults": {
584
1149
  "type": "integer",
585
1150
  "title": "Max results",
586
1151
  "description": "Maximum number of matching companies to return structured data for (from the first results page). 1-30.",
587
1152
  "default": 10
1153
+ },
1154
+ "onlyNew": {
1155
+ "type": "boolean",
1156
+ "title": "Monitor mode - only new or changed companies",
1157
+ "description": "For scheduled checks of the same company or search. The first run returns every company found and remembers it; every later run of the SAME search returns only companies that are new to it, or whose status, name, seat, share capital or officers changed - each with changeType, changedFields and previousValues. When the register cannot serve a company's structured document on a run, its capital and officers are not compared that time (they are never reported as changed on missing data). A run with nothing new succeeds with an empty dataset and a status message, and is billed like any run. The memory is kept in your own Apify account (a key-value store named regdata-handelsregister-monitor); delete it to start again.",
1158
+ "default": false
1159
+ },
1160
+ "monitorKey": {
1161
+ "type": "string",
1162
+ "title": "Monitor name (optional)",
1163
+ "description": "Just a label for your watchlist history, not a password or API key - it is shown masked. Optional name for this monitor's memory, e.g. 'supplier-acme'. Leave empty and the search itself is the name."
588
1164
  }
589
1165
  },
590
1166
  "additionalProperties": true
@@ -606,7 +1182,7 @@ export const ACTORS = [
606
1182
  "watchlist": {
607
1183
  "type": "array",
608
1184
  "title": "Watchlist (bulk / monitoring)",
609
- "description": "A list of company names or surnames to check in one run. Ideal for scheduled monitoring - run this Actor daily against your counterparties and get any new insolvency publications. Overrides the single \"name\" field when set."
1185
+ "description": "A list of company names or surnames to check in one run (up to 100). Ideal for scheduled monitoring - run this Actor daily against your counterparties and get any new insolvency publications. Overrides the single \"name\" field when set. For more than 100 names, split them across several runs or scheduled tasks."
610
1186
  },
611
1187
  "firstName": {
612
1188
  "type": "string",
@@ -680,7 +1256,7 @@ export const ACTORS = [
680
1256
  "maxResults": {
681
1257
  "type": "integer",
682
1258
  "title": "Max results",
683
- "description": "Maximum publications to export across all queries in this run.",
1259
+ "description": "Maximum publications to export across all queries in this run. Each publication returned is billed, so this also caps the per-publication cost.",
684
1260
  "default": 200
685
1261
  }
686
1262
  },
@@ -805,7 +1381,7 @@ export const ACTORS = [
805
1381
  "extractType": {
806
1382
  "type": "string",
807
1383
  "title": "Extract Type",
808
- "description": "Type of KRS extract to download. 'aktualny' = current state only (faster, smaller). 'pelny' = full history including former board members.",
1384
+ "description": "Type of KRS record to return. 'aktualny' = current state only (faster, smaller). 'pelny' = full history including former board members.",
809
1385
  "enum": [
810
1386
  "aktualny",
811
1387
  "pelny"
@@ -872,12 +1448,28 @@ export const ACTORS = [
872
1448
  "dateFrom": {
873
1449
  "type": "string",
874
1450
  "title": "Date From",
875
- "description": "Start date for announcement search (YYYY-MM-DD). Only used in announcements mode."
1451
+ "description": "Start date for announcement search (YYYY-MM-DD). Only used in announcements mode. A date range of up to 366 days is returned in full, even when it holds more than 1000 announcements; the run says so if a single day exceeds what the register will return."
876
1452
  },
877
1453
  "dateTo": {
878
1454
  "type": "string",
879
1455
  "title": "Date To",
880
- "description": "End date for announcement search (YYYY-MM-DD). Only used in announcements mode."
1456
+ "description": "End date for announcement search (YYYY-MM-DD), inclusive. Only used in announcements mode. A malformed date, or a dateFrom after dateTo, stops the run before any search and nothing is charged."
1457
+ },
1458
+ "proceedingType": {
1459
+ "type": "array",
1460
+ "title": "Proceeding type filter (announcements)",
1461
+ "description": "Optional, announcements mode only. Keep only announcements of these proceeding types; leave empty for all. 'appeal' = second-instance rulings on a bankruptcy or restructuring case (e.g. on an arrangement or a repayment plan) - choosing 'restructuring' alone does NOT include appeal rulings on restructuring cases, so add 'appeal' too if you need them. Left-out rows are not exported and not charged.",
1462
+ "items": {
1463
+ "type": "string"
1464
+ }
1465
+ },
1466
+ "proceedingKinds": {
1467
+ "type": "array",
1468
+ "title": "Proceeding kind filter (entity search)",
1469
+ "description": "Optional, entity mode only. A company search returns one row per proceeding the register holds for it. Keep only these kinds; leave empty for all. Left-out rows are not exported and not charged.",
1470
+ "items": {
1471
+ "type": "string"
1472
+ }
881
1473
  },
882
1474
  "maxResults": {
883
1475
  "type": "integer",
@@ -885,6 +1477,17 @@ export const ACTORS = [
885
1477
  "description": "Maximum number of results to return. Default: 100. Set to 0 for unlimited.",
886
1478
  "default": 100
887
1479
  },
1480
+ "onlyNew": {
1481
+ "type": "boolean",
1482
+ "title": "Monitor mode - only new or changed",
1483
+ "description": "For scheduled checks of the same company or search. The first run returns everything and remembers it; every later run of the SAME search returns only proceedings that are new to it. Case-signature searches, where the register returns status and type, also report a status or type change (changeType, changedFields, previousValues); company-name searches carry no status, so they report new proceedings only. A run with nothing new succeeds with an empty dataset and a status message, and is billed like any search - 'nothing new' is the answer. The memory is kept in your own Apify account (a key-value store named regdata-krz-monitor); delete it to start again. Not available for proceedingDetails. Dates are not part of the memory, so a rolling announcements window keeps one history.",
1484
+ "default": false
1485
+ },
1486
+ "monitorKey": {
1487
+ "type": "string",
1488
+ "title": "Monitor name (optional)",
1489
+ "description": "Just a label for your watchlist history, not a password or API key - it is shown masked. Optional name for this monitor's memory, e.g. 'client-acme'. Leave empty and the search itself is the name. Use it to keep two separate histories of the same search."
1490
+ },
888
1491
  "disableSessionCache": {
889
1492
  "type": "boolean",
890
1493
  "title": "Disable session cache (advanced)",
@@ -931,12 +1534,12 @@ export const ACTORS = [
931
1534
  "textInBody": {
932
1535
  "type": "string",
933
1536
  "title": "Text in Body",
934
- "description": "Full-text search in announcement content (max 1000 chars). Use for finding specific terms like 'upadłość', 'likwidacja', etc."
1537
+ "description": "Full-text search inside the announcement body (max 1000 chars). MATCHES LITERALLY, SO POLISH DIACRITICS ARE REQUIRED: \"upadłości\" returns hundreds of notices a month, \"upadlosci\" returns none. Case does not matter and phrases work. Try: upadłości, likwidacji, wierzycieli, syndyk, restrukturyzacji."
935
1538
  },
936
1539
  "textInPosition": {
937
1540
  "type": "string",
938
1541
  "title": "Text in Position",
939
- "description": "Search in announcement header/position text (max 1000 chars)"
1542
+ "description": "Search the announcement header line - the \"Poz. NNNNN. NAME. KRS ... COURT ...\" summary (max 1000 chars). Same literal matching as Text in Body, so Polish diacritics are required. Try: LIKWIDACJI, REJONOWY, GOSPODARCZY."
940
1543
  },
941
1544
  "signatureOfCase": {
942
1545
  "type": "string",
@@ -945,13 +1548,13 @@ export const ACTORS = [
945
1548
  },
946
1549
  "dateFrom": {
947
1550
  "type": "string",
948
- "title": "Date From",
949
- "description": "Publication date range start (YYYY-MM-DD). Required."
1551
+ "title": "Published from",
1552
+ "description": "Start of the publication date range. Required by the gazette - a search without both dates is rejected. Pick a date, or type a relative one such as \"3 months\"."
950
1553
  },
951
1554
  "dateTo": {
952
1555
  "type": "string",
953
- "title": "Date To",
954
- "description": "Publication date range end (YYYY-MM-DD). Required."
1556
+ "title": "Published to",
1557
+ "description": "End of the publication date range. Required by the gazette - a search without both dates is rejected. Pick a date, or type a relative one such as \"1 week\"."
955
1558
  },
956
1559
  "fetchDetails": {
957
1560
  "type": "boolean",
@@ -962,8 +1565,19 @@ export const ACTORS = [
962
1565
  "maxResults": {
963
1566
  "type": "integer",
964
1567
  "title": "Max Results",
965
- "description": "Maximum number of results to return. Default: 100. Set to 0 for unlimited.",
966
- "default": 100
1568
+ "description": "Maximum number of announcements to return. Set to 0 for every match. Starts at 10 so a first run is cheap to try - raise it once the search looks right.",
1569
+ "default": 10
1570
+ },
1571
+ "onlyNew": {
1572
+ "type": "boolean",
1573
+ "title": "Monitor mode - only new notices",
1574
+ "description": "For scheduled checks of the same company or search. The first run returns every matching notice and remembers it; every later run of the SAME search returns only notices published since, each with changeType 'new'. Gazette notices never change once published, so nothing is reported as changed. A run with nothing new succeeds with an empty dataset and a status message. Use a rolling window such as Published from '1 month' and Published to '0 days' - the dates are not part of the memory. Set Max results to 0 so the first run records every match. The memory is kept in your own Apify account (a key-value store named regdata-msig-monitor); delete it to start again.",
1575
+ "default": false
1576
+ },
1577
+ "monitorKey": {
1578
+ "type": "string",
1579
+ "title": "Monitor name (optional)",
1580
+ "description": "Just a label for your watchlist history, not a password or API key - it is shown masked. Optional name for this monitor's memory, e.g. 'client-acme'. Leave empty and the search itself is the name."
967
1581
  }
968
1582
  },
969
1583
  "additionalProperties": true,
@@ -1002,6 +1616,17 @@ export const ACTORS = [
1002
1616
  "title": "Include raw statement file",
1003
1617
  "description": "Include the raw XML/XHTML (iXBRL) statement in the output. Files over 5 MB are linked via the key-value store (rawXmlUrl) instead of inlined.",
1004
1618
  "default": true
1619
+ },
1620
+ "onlyNew": {
1621
+ "type": "boolean",
1622
+ "title": "Monitor mode - only new statements",
1623
+ "description": "For scheduled checks of the same company. The first run returns the latest filed statement and remembers it; every later run returns a row only when a NEWER statement has been filed (changeType 'new'). When nothing new has been filed, nothing is downloaded, the dataset stays empty and the status message says which statement is still the latest - you pay only the run start. The memory is kept in your own Apify account (a key-value store named regdata-krs-financial-monitor); delete it to start again.",
1624
+ "default": false
1625
+ },
1626
+ "monitorKey": {
1627
+ "type": "string",
1628
+ "title": "Monitor name (optional)",
1629
+ "description": "Just a label for your watchlist history, not a password or API key - it is shown masked. Optional name for this monitor's memory. Leave empty and the KRS / NIP number is the name."
1005
1630
  }
1006
1631
  },
1007
1632
  "additionalProperties": true
@@ -1052,7 +1677,7 @@ export const ACTORS = [
1052
1677
  "seedIdentifiers": {
1053
1678
  "type": "array",
1054
1679
  "title": "Seed identifiers (NIP / REGON / KRS)",
1055
- "description": "List of company identifiers to expand. Auto-detected by shape: 9 or 14 digits = REGON, 10 digits = NIP (override with Seed identifier type). The BIR registry has no geographic search, so you seed the companies to examine here (or via Seed dataset)."
1680
+ "description": "List of company identifiers to expand. Auto-detected by shape: 9 or 14 digits = REGON, 10 digits = NIP (override with Seed identifier type). This actor expands companies you already know into their local units (jednostki lokalne) - it does not discover companies by area, so seed them here (or via Seed dataset)."
1056
1681
  },
1057
1682
  "seedDatasetId": {
1058
1683
  "type": "string",
@@ -1248,7 +1873,7 @@ export const ACTORS = [
1248
1873
  "minIntervalMs": {
1249
1874
  "type": "integer",
1250
1875
  "title": "Min interval between requests (ms)",
1251
- "description": "Politeness delay between requests. The site allows ~3/s; keep >= 350ms to avoid the conditional CAPTCHA.",
1876
+ "description": "Delay between requests in milliseconds. Keep the default for reliable runs.",
1252
1877
  "default": 350
1253
1878
  }
1254
1879
  },
@@ -1395,8 +2020,8 @@ export const ACTORS = [
1395
2020
  },
1396
2021
  "province": {
1397
2022
  "type": "string",
1398
- "title": "Province",
1399
- "description": "Filter results by Spanish province. Matching is case- and accent-insensitive and understands the registry's dual-language names (searching 'Alava' matches 'ARABA/ALAVA'). Companies outside the province are discarded before extraction, so you are never charged for them. Example: 'Madrid', 'Barcelona', 'Valencia', 'Sevilla'"
2023
+ "title": "Province or region",
2024
+ "description": "Limit results to one Spanish province or one autonomous community (region). A province: its name in Spanish or the local language, common older spellings, or the INE code (1-52) - 'Madrid', 'Navarra', 'Bizkaia' or 'Vizcaya', 'A Coruña' or 'La Coruña', 'Illes Balears' or 'Baleares', '31'. A region: its Spanish, local or English name - 'Catalonia' or 'Cataluña', 'Andalucía', 'Basque Country' or 'Euskadi', 'Comunitat Valenciana', 'Galicia'. A region runs one search per province in it, one after another, and returns companies from all of them (pricing is unchanged: as listed in Pricing). A one-province region such as 'Comunidad de Madrid' is the same as that province. For A Coruña and Araba/Álava, combine the filter with a specific company name or activity code - on a very broad search the filter cannot be applied to those two provinces."
1400
2025
  },
1401
2026
  "maxResults": {
1402
2027
  "type": "integer",
@@ -1456,7 +2081,7 @@ export const ACTORS = [
1456
2081
  "maxResults": {
1457
2082
  "type": "integer",
1458
2083
  "title": "Max results",
1459
- "description": "Maximum party records to export across all queries. The register serves results in pages, and the Actor pages through until it reaches this limit or runs out of matches. Set to 0 to export every match.",
2084
+ "description": "Maximum party records to export across all queries. The register serves results in pages, and the Actor pages through until it reaches this limit or runs out of matches. Set to 0 to export every match. The register returns debtor entries first, so a search truncated by maxResults can contain no disqualified-person or insolvency-administrator rows even when the full result set does. Raise maxResults (or set 0) for broad name searches.",
1460
2085
  "default": 100
1461
2086
  }
1462
2087
  },
@@ -1501,73 +2126,6 @@ export const ACTORS = [
1501
2126
  ]
1502
2127
  }
1503
2128
  },
1504
- {
1505
- "slug": "uokik-clauses-scraper",
1506
- "tool": "regdata_uokik_clauses",
1507
- "title": "Poland UOKiK Abusive Clauses Registry Scraper",
1508
- "description": "Rejestr klauzul niedozwolonych UOKiK - 7,500+ zakazanych postanowień umownych. Search court-banned contract clauses by defendant, industry, legal category. No API exists. Legal compliance, consumer protection. JSON.",
1509
- "inputSchema": {
1510
- "type": "object",
1511
- "properties": {
1512
- "category": {
1513
- "type": "string",
1514
- "title": "Category (Zagadnienie)",
1515
- "description": "Filter by legal category of the clause violation. Leave empty for all categories.",
1516
- "enum": [
1517
- "",
1518
- "5",
1519
- "4",
1520
- "3",
1521
- "23",
1522
- "22",
1523
- "21",
1524
- "20",
1525
- "19",
1526
- "18",
1527
- "17",
1528
- "16",
1529
- "15",
1530
- "14",
1531
- "13",
1532
- "12",
1533
- "11",
1534
- "10",
1535
- "9",
1536
- "8",
1537
- "7",
1538
- "6",
1539
- "2",
1540
- "1",
1541
- "24"
1542
- ],
1543
- "default": ""
1544
- },
1545
- "defendant": {
1546
- "type": "string",
1547
- "title": "Defendant Name (Pozwany)",
1548
- "description": "Filter by defendant company name (partial match)."
1549
- },
1550
- "plaintiff": {
1551
- "type": "string",
1552
- "title": "Plaintiff Name (Powód)",
1553
- "description": "Filter by plaintiff name (partial match)."
1554
- },
1555
- "exportAll": {
1556
- "type": "boolean",
1557
- "title": "Export All",
1558
- "description": "Export all clauses from the registry (~7,500 entries). Ignores other filters.",
1559
- "default": false
1560
- },
1561
- "maxResults": {
1562
- "type": "integer",
1563
- "title": "Max Results",
1564
- "description": "Maximum number of results. Default: 100. Set to 0 for unlimited.",
1565
- "default": 100
1566
- }
1567
- },
1568
- "additionalProperties": true
1569
- }
1570
- },
1571
2129
  {
1572
2130
  "slug": "wko-business-directory-scraper",
1573
2131
  "tool": "regdata_wko_business_directory",
@@ -1643,7 +2201,7 @@ export const ACTORS = [
1643
2201
  "searchType": {
1644
2202
  "type": "string",
1645
2203
  "title": "Search type",
1646
- "description": "How the company name is matched. 'Starts with' is the register's default and the most reliable. 'Sounds like' uses the register's own phonetic index, which is narrow - it will not behave like a general fuzzy search.",
2204
+ "description": "How the company name is matched. The register matches WHOLE WORDS, not the start of a name: 'INVESTMENT' finds every name containing that word, but 'INVEST' finds only names with the word 'INVEST'. 'All these words' (default) needs every word you type; 'Any of these words' needs one of them; 'Sounds like' uses the register's phonetic index. A very common word on its own (INVESTMENT, HOLDINGS, SHIPPING) is refused by the register as too many matches - add a second distinctive word.",
1647
2205
  "enum": [
1648
2206
  "startsWith",
1649
2207
  "endsWith",
@@ -1683,7 +2241,7 @@ export const ACTORS = [
1683
2241
  "companyNames": {
1684
2242
  "type": "array",
1685
2243
  "title": "Company names",
1686
- "description": "One or more company names to search, each looked up separately (min 2 characters). Partial names work. A broad name can hit the register's 50-result ceiling.",
2244
+ "description": "One or more company names to search, each looked up separately (min 2 characters). Partial names work: every word must appear in the company name, in any order (legal-form words such as 'Ltd' or 'DAC' are optional). Exact and starts-with matches come first, live companies before dissolved ones.",
1687
2245
  "items": {
1688
2246
  "type": "string"
1689
2247
  }
@@ -1691,7 +2249,7 @@ export const ACTORS = [
1691
2249
  "companyNumbers": {
1692
2250
  "type": "array",
1693
2251
  "title": "Company numbers",
1694
- "description": "One or more Irish CRO registration numbers, each looked up separately. Digits only, e.g. '104547'.",
2252
+ "description": "One or more Irish CRO registration numbers, each looked up separately. Each must contain digits, e.g. '104547' (a prefix such as 'IE' is ignored). Company numbers only - limited partnership (LP...), reserved name (RN...), society (...R) and trade union (...T) numbers are skipped and not charged.",
1695
2253
  "items": {
1696
2254
  "type": "string"
1697
2255
  }
@@ -1699,13 +2257,13 @@ export const ACTORS = [
1699
2257
  "maxResultsPerQuery": {
1700
2258
  "type": "integer",
1701
2259
  "title": "Max results per query",
1702
- "description": "Maximum company records to export per query. The register returns at most 50 matches per search, so 50 is the ceiling. Fetching the full record for each match happens in the same run.",
2260
+ "description": "Maximum company records to export per query (up to 50). When a name matches more companies, the run says so - narrow the name or search by number.",
1703
2261
  "default": 50
1704
2262
  },
1705
2263
  "statusFilter": {
1706
2264
  "type": "array",
1707
2265
  "title": "Status filter",
1708
- "description": "Keep only companies whose status contains one of these words, e.g. 'Normal', 'Dissolved', 'Liquidation'. Leave empty to export every match - a Dissolved or Liquidation counterparty is usually the finding you most want to see.",
2266
+ "description": "Keep only companies whose status contains one of these words, e.g. 'Normal', 'Dissolved', 'Strike Off Listed', 'Liquidation'. Leave empty to export every match - a Dissolved or Liquidation counterparty is usually the finding you most want to see.",
1709
2267
  "default": [],
1710
2268
  "items": {
1711
2269
  "type": "string"
@@ -1891,5 +2449,137 @@ export const ACTORS = [
1891
2449
  },
1892
2450
  "additionalProperties": true
1893
2451
  }
2452
+ },
2453
+ {
2454
+ "slug": "uokik-decisions-scraper",
2455
+ "tool": "regdata_uokik_decisions",
2456
+ "title": "Poland UOKiK Decisions - competition and consumer protection",
2457
+ "description": "Search decisions of UOKiK, Poland's competition and consumer protection authority (about 22,000 decisions): merger clearances, abuse of dominant position, collective consumer interests, prohibited clauses, product safety and fuel quality, with decision number, date, named parties and practice type; includeDetails adds case signature, whether a fine was imposed, appeal status, industry (PKD) and region. Filter by party name (literal - Polish diacritics matter), practice type, decision number, case signature, industry, region, fine/appeal flags, date range or full text. The register records THAT a fine was imposed, never the amount - do not report one. Use for counterparty due diligence and regulatory-history checks on Polish companies. No API key.",
2458
+ "inputSchema": {
2459
+ "type": "object",
2460
+ "properties": {
2461
+ "participant": {
2462
+ "type": "string",
2463
+ "title": "Company or person",
2464
+ "description": "Name of a party to the proceedings, e.g. \"Orange\". Matches whole words in the party field, case-insensitive. Polish diacritics matter - the register's search is literal."
2465
+ },
2466
+ "practiceType": {
2467
+ "type": "string",
2468
+ "title": "Type of practice",
2469
+ "description": "The category of proceedings. Roughly: merger control 5,800 decisions, product-safety conformity 4,000, collective consumer interests 4,000, dominant position 1,900.",
2470
+ "enum": [
2471
+ "",
2472
+ "Jakość paliw",
2473
+ "Klauzule niedozwolone",
2474
+ "Kontrola koncentracji",
2475
+ "Nadużywanie pozycji dominującej",
2476
+ "Ochrona zbiorowych interesów konsumentów",
2477
+ "Ogólne bezpieczeństwo produktów",
2478
+ "Porozumienia ograniczające konkurencję",
2479
+ "Pozostałe",
2480
+ "Przewaga kontraktowa",
2481
+ "System oceny zgodności",
2482
+ "Zatory Płatnicze"
2483
+ ],
2484
+ "default": ""
2485
+ },
2486
+ "decisionNumber": {
2487
+ "type": "string",
2488
+ "title": "Decision number",
2489
+ "description": "The decision's own number, e.g. \"DKK-171/2024\"."
2490
+ },
2491
+ "caseSignature": {
2492
+ "type": "string",
2493
+ "title": "Case signature",
2494
+ "description": "The case file signature, e.g. \"DKK-2.430\". Matches a prefix as well as a whole signature."
2495
+ },
2496
+ "industry": {
2497
+ "type": "string",
2498
+ "title": "Industry (PKD)",
2499
+ "description": "Matches the whole PKD path, so \"SEKCJA K\" selects the entire financial sector while \"TELEKOMUNIKACJA\" selects one class. Because the register stores the path but each decision page shows only the leaf class, a match can look unrelated and still be correct - \"BUDOWNICTWO\" returns electrical-installation firms, which sit under Section F."
2500
+ },
2501
+ "region": {
2502
+ "type": "string",
2503
+ "title": "Voivodeship",
2504
+ "description": "Region the decision applies to. A decision can list several.",
2505
+ "enum": [
2506
+ "",
2507
+ "Dolnośląskie",
2508
+ "Kujawsko-Pomorskie",
2509
+ "Łódzkie",
2510
+ "Lubelskie",
2511
+ "Lubuskie",
2512
+ "Małopolskie",
2513
+ "Mazowieckie",
2514
+ "Opolskie",
2515
+ "Podkarpackie",
2516
+ "Podlaskie",
2517
+ "Pomorskie",
2518
+ "Śląskie",
2519
+ "Świętokrzyskie",
2520
+ "Warmińsko-Mazurskie",
2521
+ "Wielkopolskie",
2522
+ "Zachodniopomorskie"
2523
+ ],
2524
+ "default": ""
2525
+ },
2526
+ "fineImposed": {
2527
+ "type": "string",
2528
+ "title": "Fine imposed",
2529
+ "description": "Whether the decision imposed a fine. The register records only THAT a fine was imposed - it never publishes the amount.",
2530
+ "enum": [
2531
+ "",
2532
+ "yes",
2533
+ "no"
2534
+ ],
2535
+ "default": ""
2536
+ },
2537
+ "appealed": {
2538
+ "type": "string",
2539
+ "title": "Appealed",
2540
+ "description": "Whether the decision was appealed.",
2541
+ "enum": [
2542
+ "",
2543
+ "yes",
2544
+ "no"
2545
+ ],
2546
+ "default": ""
2547
+ },
2548
+ "dateFrom": {
2549
+ "type": "string",
2550
+ "title": "Decided on or after",
2551
+ "description": "ISO date, YYYY-MM-DD. Note that six records in the register carry no decision date at all and are excluded by any date filter."
2552
+ },
2553
+ "dateTo": {
2554
+ "type": "string",
2555
+ "title": "Decided on or before",
2556
+ "description": "ISO date, YYYY-MM-DD."
2557
+ },
2558
+ "fullText": {
2559
+ "type": "string",
2560
+ "title": "Full-text term",
2561
+ "description": "Free text searched across the whole document index. Broader than it looks - it matches text the decision page does not display, so use the specific fields above when you can."
2562
+ },
2563
+ "maxItems": {
2564
+ "type": "integer",
2565
+ "title": "Maximum decisions",
2566
+ "description": "Stop after this many. Set 0 for every match - the whole register is about 22,000 decisions.",
2567
+ "default": 100
2568
+ },
2569
+ "includeDetails": {
2570
+ "type": "boolean",
2571
+ "title": "Fetch full decision details",
2572
+ "description": "Open each decision to read its case signature, fine flag, appeal status, industry and region. Off returns only what the result list shows: number, date, party and practice type.",
2573
+ "default": true
2574
+ },
2575
+ "includeIncompleteRecords": {
2576
+ "type": "boolean",
2577
+ "title": "Include records that identify nothing",
2578
+ "description": "The register holds six documents with no number, date or party. They are skipped by default and always counted in the run summary.",
2579
+ "default": false
2580
+ }
2581
+ },
2582
+ "additionalProperties": true
2583
+ }
1894
2584
  }
1895
2585
  ];
package/index.js CHANGED
@@ -22,7 +22,7 @@ const pkg = createRequire(import.meta.url)("./package.json");
22
22
  const APIFY_BASE = "https://api.apify.com/v2";
23
23
  // Jurisdictions covered by the actor fleet. Not derivable from actors.js (no
24
24
  // country field), so it is asserted here and checked by scripts/check-counts.mjs.
25
- const JURISDICTIONS = 16;
25
+ const JURISDICTIONS = 19;
26
26
  const token = () => process.env.APIFY_TOKEN || process.env.APIFY_API_TOKEN || "";
27
27
 
28
28
  function requireToken() {
@@ -30,7 +30,7 @@ function requireToken() {
30
30
  if (!t) {
31
31
  throw new Error(
32
32
  "APIFY_TOKEN is not set. Get a free token (with $5 credits) at " +
33
- "https://apify.com?fpr=getregdata and set APIFY_TOKEN in your MCP client config."
33
+ "https://getregdata.com/go/signup/mcp/ and set APIFY_TOKEN in your MCP client config."
34
34
  );
35
35
  }
36
36
  return t;
@@ -131,7 +131,7 @@ async function describeActor(slug) {
131
131
  const schema =
132
132
  data?.defaultRunOptions?.inputSchema ||
133
133
  data?.exampleRunInput ||
134
- "See https://apify.com/regdata/" + slug + " for the input schema.";
134
+ "See https://getregdata.com/go/" + slug + "/mcp/ for the input schema.";
135
135
  return { slug, title: data?.title, description: data?.description, schema };
136
136
  }
137
137
 
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "getregdata-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "mcpName": "io.github.Nolpak14/getregdata",
5
- "description": "MCP server for official business-registry data - KYC/AML, beneficial owners, credit-risk, adverse media. One-call Poland KYB verdict, plus per-registry tools for Germany, Italy, Spain, Austria, France, Belgium, Czechia, Slovakia, Cyprus, Ireland, Portugal, Nigeria, Colombia, the US (California) and the UAE.",
5
+ "description": "MCP server for official business-registry data - KYC/AML, beneficial owners, financial statements, insolvency, adverse media. One-call Poland KYB verdict, plus per-registry tools for Germany, Italy, Spain, Austria, France, Belgium, Czechia, Slovakia, Norway, Denmark, Estonia, Cyprus, Ireland, Portugal, Nigeria, Colombia, the US (California, Illinois, county clerks) and the UAE.",
6
6
  "type": "module",
7
7
  "bin": {
8
8
  "getregdata-mcp": "index.js"