# Executive Appointment & B2B Incorporation Scraper (UK & EU) (`aperture/eu-uk-executive-incorporation-signal-scraper`) Actor

Find newly incorporated B2B companies and newly appointed Managing Directors / Founders across France (BODACC & Recherche d'Entreprises), the UK (Companies House & GLEIF), Germany (HRB), and Austria (FN). Resolves company domains and verifies executive emails. Pay $0.008 only for verified firstname.

- **URL**: https://apify.com/aperture/eu-uk-executive-incorporation-signal-scraper.md
- **Developed by:** [Aperture](https://apify.com/aperture) (community)
- **Categories:** Lead generation, Jobs, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 executive / incorporation buying signal scraped (basic mode + free role email fallback)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![Aperture — Global B2B Buying-Signal & Statutory Enrichment Suite](https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/aperture-suite-banner.png)

![Strict Named-Contact $0.008](https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/badge-strict-named-contact.svg) ![Zero-Proxy HTTP/2 <5s](https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/badge-zero-proxy-http2.svg) ![LIMITED_PERMISSIONS • MCP Ready](https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/badge-mcp-skyfire-ready.svg)

<p align="center">
  <a href="https://apify.com/aperture/eu-uk-executive-incorporation-signal-scraper">
    <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/eu-uk-executive.png" width="64" height="64" alt="EU & UK Executive Appointment & Incorporation Signal Scraper" />
  </a>
</p>

### Find Newly Incorporated B2B Companies & Newly Appointed Directors in France, the UK, Germany & Austria — With Verified Executive Emails

Extract freshly incorporated B2B companies and newly appointed executive leaders across France (**BODACC** & **Recherche d'Entreprises**), the United Kingdom (**Companies House** & **GLEIF**), and Germany / Austria (**GLEIF**, Handelsregister, and Firmenbuch). Newly appointed Managing Directors, Présidents, and Founders review software, agencies, and cloud infrastructure within their first 90 days. This tool resolves the company's real website domain and extracts verified executive emails and direct phone numbers for **Clay** tables and outbound CRM sequences. Runs in the cloud without requiring your LinkedIn cookies or browser login.

#### Fair Pricing Guarantee: Only Pay for Named People

- **`$0.002` per signal (`$2.00 / 1,000`) — `job-signal-scraped`:** Includes the statutory filing details, company name, resolved website domain, registered share capital (`salary_band`), executive title, corporate phone number, and generic `info@` / `contact@` inboxes.
- **`$0.008` per named contact (`$8.00 / 1,000`) — `buying-signal-enriched`:** Charged strictly when a verified named executive contact (`firstname.lastname@company.com`, `email_verification_status: "ok"`) is delivered.
- **Generic `info@` & `contact@` Inboxes Are Free:** If we discover a generic corporate role inbox (`contact@`, `info@`, `office@`), it is included in `contact_email` **at no extra charge** (`email_verification_status: "role_fallback"`) and automatically billed at the basic **`$0.002`** rate (`job-signal-scraped`).

#### Built for Clay, n8n & Weekly Outbound Schedules

- **1-Click Preview:** Default mode is `enriched_with_email` with `maxItems: 5` so you can click **Start** to inspect live executive leads in under 30 seconds.
- **Skip Previously Seen Signals Free (`onlyNewSignals`):** Enable Delta Mode to track seen statutory notice keys and skip previously exported executive filings across weekly schedules at `$0.00` cost.
- **Skip Existing Customers & Agencies Free:** Paste your `blacklistDomains` list and set `$0.00` Pre-Fetch Exclusion Filters (`excludeCompanyKeywords` and `excludeLocations`) to filter out competitors, staffing agencies, or current clients at `$0.00` cost.

#### Sample Output (What Lands in Your Clay Table)

*Illustrative output shape — run the Actor for live records*

| Company | Domain | Signal / Role | Contact Email | Verification Status | PPE Event Triggered | Price Billed |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| **Example Holdings SAS** | `example.fr` | `New Appointment: Président — Jean Dupont (Capital: €10,000 EUR)` | `jean.dupont@example.fr` | `ok` *(Named Person)* | `buying-signal-enriched` | **$0.008** |
| **Example FinTech Ltd** | `example.co.uk` | `New Director Appointment — Companies House Filing` | `info@example.co.uk` | `role_fallback` *(Free Bonus)* | `job-signal-scraped` | **$0.002** |

### How much will it cost to scrape UK Companies House, France BODACC & GLEIF?

Aperture uses transparent **Pay-Per-Event (PPE)** pricing with a strict **Named-Contact Guarantee (`role_fallback`)**. $0.008 (scrapers) / $0.009 (aggregator) only when a literal named contact is extracted from the live Impressum/contact page and its domain passes DNS MX verification; generic info@ fallbacks are billed at the $0.002 / $0.003 base rate ($0.000 extra):

| Billing Component | Event Key / Metric | Unit Price (USD) | Cost per 1,000 Results | When It Fires |
| :--- | :--- | :---: | :---: | :--- |
| **Actor Start (One-Time)** | `apify-actor-start` | `$0.00005` | `$0.05` (per 1k runs) | Charged once when the container initializes. |
| **Base Signal Tier** | `job-signal-scraped` | **`$0.002`** | **`$2.00 / 1,000`** | Every normalized signal, **including free `role_fallback` inboxes (`info@`, `contact@`)**. |
| **Verified Named Contact Tier** | `buying-signal-enriched` | **`$0.008`** | **`$8.00 / 1,000`** | Strictly when `email_verification_status === "ok"` **AND** a named person (`firstname.lastname@`) is verified. |
| **Unbilled Pre-Fetch Shield** | `shouldExcludePreFetch` | **`$0.000`** | **`$0.00 / 1,000`** | Rows matching `excludeCompanyKeywords`, `excludeLocations`, or `blacklistDomains` are dropped before enrichment. |
| **Platform Compute (Pure HTTP/2)** | Apify Compute Units (CU) | `~$0.00018` | `~$0.18 / 1,000` | Lightweight `256MB–512MB` HTTP/2 execution with zero headless browser overhead. |

**Typical Run Cost Formula:**

- **100 leads (50% verified named decision-makers `ok`, 50% `role_fallback`):** `50 × $0.002 + 50 × $0.008 + $0.00005 start ≈ $0.53 total`.
- **Free-Tier Apify Plan Protection:** Apify free-plan runs are automatically capped at **25 leads per run** so you can test live quality for pennies without surprise charges.
- **Bytewells Multi-Client Agency License (`$99/mo`):** Outbound agencies running 10–20+ client workspaces with zero per-row metering can license this statutory corporate registry feed on **[Bytewells](https://bytewells.com)** for **`$99/mo`** (or transit-capped passes: `$3` 1h Flash / `$12` 24h Burst / `$29` 7d Sprint) with `$0.00` per-event fees. Or license the complete 10-Actor portfolio via the **`$249/mo` Founding Agency License** (~`$12.45`/client/mo across 20 clients).

### Known Limitations & Compliance

- **Statutory Gazette Latency:** Reflects official publication timestamps in France BODACC / Recherche d’Entreprises, UK Companies House, and GLEIF Level-1 registries (typically 24–72 hours after legal filing).
- **Newly Incorporated Domain Availability:** Freshly incorporated entities (`new_incorporation`) may not have registered an active corporate website or MX record on day 1; when only a registry record or generic `info@` address exists, the record is billed strictly at the `$0.002` base rate.
- **Holding & Real-Estate Vehicle Filtering:** Use `excludeCompanyKeywords` (e.g., `["SCI", "Holding", "Vermögensverwaltung"]`) to drop non-operating holding vehicles at `$0.00` pre-fetch.

### Complete Aperture B2B Buying Signal Suite

Combine regional signal scrapers with our cross-dataset 5D ICP scoring engine and Bytewells unlimited passes to run a unified outbound pipeline across Europe, the UK, North America, and APAC:

![Aperture Multi-Region Buying-Signal & ICP Aggregation Architecture](https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/aperture-architecture.png)

| # | Actor | Markets (`geo`) | Signal Types | Primary Sources | Apify PPE (Basic / Enriched) | Bytewells Agency License |
| :-: | :--- | :---: | :--- | :--- | :--- | :--- |
| **1** | **[Stepstone DACH & Benelux Scraper](https://apify.com/aperture/stepstone-dach-buying-signal-scraper)** (`stepstone-dach-buying-signal-scraper`) | `DE`, `AT`, `BE`, `NL` | `jobs` | Stepstone (`.de`, `.at`, `.be`, `.nl`) + `/impressum` emails | `$0.002` / `$0.008` | `$99/mo` Unlimited |
| **2** | **[Seek Australia & NZ Scraper](https://apify.com/aperture/seek-anz-buying-signal-scraper)** (`seek-anz-buying-signal-scraper`) | `AU`, `NZ` | `jobs` | Seek (`seek.com.au`, `seek.co.nz`) + corporate `/contact` emails | `$0.002` / `$0.008` | `$99/mo` Unlimited |
| **3** | **[France Travail & Maddyness Scraper](https://apify.com/aperture/france-buying-signal-scraper)** (`france-buying-signal-scraper`) | `FR` | `jobs`, `funding` | France Travail jobs + Maddyness funding + `/mentions-legales` | `$0.002` / `$0.008` | `$99/mo` Unlimited |
| **4** | **[5D B2B Buying-Signal ICP Aggregator](https://apify.com/aperture/b2b-buying-signal-icp-aggregator)** (`b2b-buying-signal-icp-aggregator`) | `All 9 Geos` | `5D Multi-Signal` | Cross-dataset deduplicator, `0–100` ICP scorer, 28 tech tags & hooks | `$0.003` / `$0.009` | `$129/mo` Unlimited |
| **5** | **[EU & UK Public Procurement Scraper](https://apify.com/aperture/eu-uk-procurement-award-signal-scraper)** (`eu-uk-procurement-award-signal-scraper`) | `UK`, `FR`, `DE`, `NL`, `BE`, `AT` | `contract_award` | UK Find a Tender (OCDS) + France BOAMP + EU TED v3 awards | `$0.002` / `$0.008` | `$99/mo` Unlimited |
| **6** | **[EU & UK Executive & Incorporation Scraper](https://apify.com/aperture/eu-uk-executive-incorporation-signal-scraper)** (`eu-uk-executive-incorporation-signal-scraper`) | `FR`, `UK`, `DE`, `AT` | `executive_change` | France BODACC + UK Companies House + GLEIF new directors | `$0.002` / `$0.008` | `$99/mo` Unlimited |
| **7** | **[Biotech Clinical Trial & Grant Scraper](https://apify.com/aperture/biotech-clinical-trial-buying-signal-scraper)** (`biotech-clinical-trial-buying-signal-scraper`) | `US`, `UK`, `DE`, `FR`, `NL`, `BE`, `AT` | `clinical_trial`, `research_grant` | US ClinicalTrials.gov v2 + EU EMA CTIS + CORDIS + NIH SBIR | `$0.002` / `$0.008` | `$149/mo` Unlimited |
| **8** | **[LinkedIn & Direct ATS Buying-Signal Scraper](https://apify.com/aperture/linkedin-ats-b2b-buying-signal-scraper)** (`linkedin-ats-b2b-buying-signal-scraper`) | `All 9 Geos` | `jobs` | Zero-Cookie LinkedIn Guest Jobs + Greenhouse, Lever & Personio | `$0.002` / `$0.008` | `$99/mo` Unlimited |
| **9** | **[European Impressum Bulk Enricher](https://apify.com/aperture/european-impressum-contact-bulk-enricher)** (`european-impressum-contact-bulk-enricher`) | `DE`, `AT`, `CH`, `FR`, `UK`, `NL`, `BE` | `impressum_enrichment` | Bulk domain -> `/impressum` & `/mentions-legales` named contacts, VAT & HRB | `$0.001` / `$0.006` | `$39/mo` Unlimited |
| **10** | **[Global 5D B2B Signal Suite Unlimited](https://apify.com/aperture/global-b2b-signal-suite-unlimited)** (`global-b2b-signal-suite-unlimited`) | `All 10 Geos` | `All 5D Signals` | All-in-one whale orchestrator (Jobs, Tenders, Directors, Trials & Grants) | `$0.003` / `$0.009` | `$249/mo` Founding Agency License |

#### Two-Door Store Positioning: Apify Store (Self-Serve PPE) vs. Bytewells Multi-Client Agency License

| Execution Tier | Best For | Pricing Model | Agency Economics & Metering | Autonomous Agent / MCP Support |
| :--- | :--- | :--- | :--- | :--- |
| **Apify Store (Pay-Per-Event)** | Single-team tests, POCs & variable weekly on-demand runs | `$0.002` basic / `$0.008` verified named buyer | Pay only for what you extract (~`$0.0032`/row blended at 20% department buyer hit rate; free `role_fallback` inboxes at base rate) | Native `@apify/actors-mcp-server` |
| **Bytewells (`bytewells.com`)** | Outbound agencies running 10–20+ client workspaces & autonomous AI agents | **`$39–$149/mo` Single-Engine** or **`$249/mo` All-In-One 5D Global Suite** (Passes: `$3–$9` Flash, `$9–$29` Burst, `$19–$69` Sprint) | Zero per-row metering (~`$12.45`/client/mo across 20 clients; daily refresh on 3 core regions + weekly on 5 remaining regions) | Native **HTTP 402 Agentic Auto-Buy** (`x402` / Bytewells MCP) |

***

<details>
<summary><strong>Technical, API, Clay HTTP Column & Claude MCP Specifications (Click to Expand)</strong></summary>

#### Output Dataset Schema (22-Field Specification)

| Field Name | Type | Description |
| :--- | :--- | :--- |
| `detected_at` | `string` | ISO 8601 UTC timestamp when the registry signal was extracted. |
| `company` | `string` | Normalized legal entity name. |
| `domain` | `string` | Verified corporate root domain (statutory registry hosts are excluded). |
| `role_title` | `string` | Statutory appointment headline or incorporation title with executive name. |
| `seniority_band` | `string` | Normalized decision-maker seniority band (`cxo`, `director`). |
| `location` | `string` | Registered office city, department, or administrative region. |
| `geo` | `string` | ISO country code: `FR`, `UK`, `DE`, or `AT`. |
| `posted_date` | `string` | ISO 8601 publication timestamp of the official gazette notice or incorporation. |
| `signal_type` | `string` | Canonical signal type (`executive_change`). |
| `signal_detail` | `string` | Ready-to-use CRM summary with registry notice, statutory role, and share capital. |
| `signal_source_actor`| `string` | Source Actor identifier (`eu-uk-executive-incorporation-signal-scraper`). |
| `signal_date` | `string` | ISO publication date (`YYYY-MM-DD`). |
| `evidence_url` | `string` | Canonical live URL to the official government gazette or registry notice. |
| `contact_email` | `string` | Verified named executive email or free corporate role fallback. |
| `contact_phone` | `string` | Corporate phone number discovered via legal page crawl. |
| `salary_band` | `string` | Formatted registered share capital (e.g. `€10,000 EUR`). |
| `contract_type` | `string` | Standardized trigger classification (`Executive Appointment` or `New B2B Incorporation`). |
| `email_verification_status` | `string` | Deliverability status: `ok`, `role_fallback`, `mx_only`, `invalid`, `unverified`, or `not_requested`. |
| `mx_provider` | `string` | Fingerprinted mail infrastructure provider (e.g. Google Workspace, Microsoft 365). |
| `ppe_event_charged` | `string` | Pay-Per-Event tier billed (`job-signal-scraped` or `buying-signal-enriched`). |
| `notes` | `string` | Registry provenance, statutory notice ID, and verification diagnostics. |
| `error` | `string \| null` | Error description if extraction failed, or `null`. |

#### Executive Email Synthesis & Statutory Legal Disclosure Architecture

When operating in `enriched_with_email` mode:

1. **Domain Resolution**: Resolves the company root domain via web and registry records, discarding registry hosts (`bodacc.fr`, `service.gov.uk`, `gleif.org`).
2. **Executive Email Synthesis**: Normalizes executive names by stripping diacritics and accents (e.g., `Élodie Mößbauer` -> `elodie.moessbauer@`), synthesizing patterns (`firstname.lastname@`, `f.lastname@`).
3. **Legal Disclosure Crawling**: Crawls statutory `/impressum` (§ 5 DDG), `/mentions-legales` (LCEN Art. 6-III), and `/contact` pages for verified contacts and phone numbers.
4. **MX Fingerprinting & Verification**: Validates mail server records via DNS MX lookups, with optional Bring-Your-Own-Key SMTP validation (MillionVerifier, ZeroBounce, Reacher).

#### Clay HTTP API Integration

In Clay, add an **HTTP API** enrichment column to trigger synchronous statutory executive discovery:

- **Method**: `POST`
- **URL**: `https://api.apify.com/v2/acts/aperture~eu-uk-executive-incorporation-signal-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN`
- **Headers**: `Content-Type: application/json`
- **Body**:
  ```json
  {
    "countries": ["FR", "UK", "DE"],
    "signalCategories": ["executive_appointment"],
    "postedWithinDays": 14,
    "scraperMode": "enriched_with_email",
    "maxItems": 10
  }
  ```

#### Claude Desktop & Cursor MCP Configuration

Configure `@apify/actors-mcp-server` in `claude_desktop_config.json` or `mcp.json`:

```json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server",
        "--actors",
        "aperture/stepstone-dach-buying-signal-scraper,aperture/seek-anz-buying-signal-scraper,aperture/france-buying-signal-scraper,aperture/b2b-buying-signal-icp-aggregator,aperture/eu-uk-procurement-award-signal-scraper,aperture/eu-uk-executive-incorporation-signal-scraper,aperture/biotech-clinical-trial-buying-signal-scraper,aperture/linkedin-ats-b2b-buying-signal-scraper,aperture/european-impressum-contact-bulk-enricher,aperture/global-b2b-signal-suite-unlimited"
      ],
      "env": {
        "APIFY_TOKEN": "YOUR_APIFY_TOKEN"
      }
    }
  }
}
```

#### Full JSON Sample Output

*Illustrative output shape — run the Actor for live records*

```json
[
  {
    "detected_at": "2026-11-01T08:30:00Z",
    "company": "Example Holdings SAS",
    "domain": "example.fr",
    "role_title": "New Appointment: Président — Jean Dupont (Capital: €10,000 EUR)",
    "seniority_band": "cxo",
    "location": "Paris",
    "geo": "FR",
    "posted_date": "2026-10-31T00:00:00Z",
    "signal_type": "executive_change",
    "signal_detail": "Executive Appointment: Président — Jean Dupont | Registered: Paris | Capital: €10,000 EUR",
    "signal_source_actor": "eu-uk-executive-incorporation-signal-scraper",
    "signal_date": "2026-10-31",
    "evidence_url": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:A2026021082",
    "contact_email": "jean.dupont@example.fr",
    "contact_phone": "+33 1 42 68 00 00",
    "salary_band": "€10,000 EUR",
    "contract_type": "Executive Appointment",
    "email_verification_status": "ok",
    "mx_provider": "Google Workspace",
    "ppe_event_charged": "buying-signal-enriched",
    "notes": "source=FR_BODACC; notice_id=A2026021082; verify=smtp_250_ok; mx=Google Workspace",
    "error": null
  },
  {
    "detected_at": "2026-11-01T08:31:12Z",
    "company": "Example FinTech Ltd",
    "domain": "example.co.uk",
    "role_title": "New Director Appointment — Companies House Filing",
    "seniority_band": "director",
    "location": "London",
    "geo": "UK",
    "posted_date": "2026-10-29T00:00:00Z",
    "signal_type": "executive_change",
    "signal_detail": "New Director Appointment — Companies House Filing | Registered: London | Company: 17550746",
    "signal_source_actor": "eu-uk-executive-incorporation-signal-scraper",
    "signal_date": "2026-10-29",
    "evidence_url": "https://find-and-update.company-information.service.gov.uk/company/17550746/officers",
    "contact_email": "info@example.co.uk",
    "contact_phone": "+44 20 7946 0000",
    "salary_band": "£50,000 GBP",
    "contract_type": "Executive Appointment",
    "email_verification_status": "role_fallback",
    "mx_provider": "Microsoft 365",
    "ppe_event_charged": "job-signal-scraped",
    "notes": "source=UK_COMPANIES_HOUSE; company_number=17550746; verify=mx_fingerprinted_contact_page; mx=Microsoft 365",
    "error": null
  }
]
```

</details>

# Actor input Schema

## `keywords` (type: `array`):

Optional B2B keywords to filter company names and activities (e.g. \['Software', 'Cloud', 'Consulting', 'Cyber']). Leave empty to stream the latest leadership appointments and commercial registrations.

## `countries` (type: `array`):

Select target jurisdictions: FR (France BODACC & Recherche d'Entreprises), UK (Companies House & GLEIF), DE (Germany Handelsregister & GLEIF), AT (Austria Firmenbuch & GLEIF).

## `signalCategories` (type: `array`):

Filter by trigger type: 'executive_appointment' (newly appointed Président, Geschäftsführer, Managing Director, C-Level) and/or 'new_incorporation' (freshly registered commercial entities).

## `postedWithinDays` (type: `integer`):

Filter statutory notices and incorporations published within the last N days (default: 30 days).

## `maxItems` (type: `integer`):

Maximum number of normalized buying-signal records to output (default: 20). Free-tier Apify runs are capped at 25 items per run; paid Apify plans support unlimited runs.

## `searchUrls` (type: `array`):

Optional direct search URLs from BODACC, Recherche d'Entreprises, UK Companies House, or GLEIF to scrape directly.

## `scraperMode` (type: `string`):

Choose 'enriched_with_email' ($0.008 strictly when a verified named executive email is delivered; generic role inboxes like info@/contact@ are included free at the $0.002 basic rate) or 'basic' ($0.002 per signal without email enrichment).

## `strictBuyerMatchOnly` (type: `boolean`):

When enabled (true), emits ONLY signals where a non-HR department/role decision-maker (role_matched or department_matched) with a verified named email (ok), non-empty verbatim title, and live corporate contact_source_url was discovered on the company's own website. Filters out recruiter contacts, statutory Impressum legal officers, generic info@ inboxes, and unmatched rows.

## `icpScoringPreset` (type: `string`):

Select the target client industry preset to automatically calibrate 0–100 account ICP scoring without hand-writing JSON. Pure account & signal fit (0% contact provenance penalty) so contact_confidence and $0.008/$0.002 PPE billing remain strictly orthogonal.

## `icpTargetSeniority` (type: `string`):

Choose which hiring or signal role seniority tier receives the maximum +25 pt seniority weight for this client workspace.

## `icpBoostKeywords` (type: `array`):

Type any industry, product, or niche keywords that matter to this client workspace (e.g. 'cybersecurity', 'chemicals', 'industrial insurance'). Matching accounts automatically receive an +18 pt ICP boost.

## `icpRecencyPriority` (type: `string`):

Control how strongly fresh signals (posted <=3 days ago) are prioritized over older signals in the 0–100 account ICP score.

## `icpWeights` (type: `object`):

Optional configurable 0–100 account ICP scoring weights (signalTypes, roleSeniority, geos, industryKeywords regex-to-points map, and recency brackets). Pure account & signal fit (0% contact provenance penalty) so you can customize account scoring per client workspace without affecting contact_confidence or $0.008/$0.002 PPE billing.

## `blacklistDomains` (type: `array`):

Paste company root domains or legal names (existing clients, competitors) to exclude at $0.00 cost before scoring or billing.

## `excludeCompanyKeywords` (type: `array`):

Case-insensitive keywords matched against corporate / entity company names BEFORE domain resolution, website crawling, or PPE charging. Matching signals are dropped at $0.00.

## `excludeLocations` (type: `array`):

Case-insensitive city, department, or administrative region substrings dropped BEFORE domain resolution, website crawling, or PPE charging ($0.00 cost).

## `onlyNewSignals` (type: `boolean`):

When enabled, tracks seen statutory notice keys in an Apify Key-Value Store and skips previously exported leads at $0.00 cost before enrichment or billing.

## `monitorScopeName` (type: `string`):

Named Apify Key-Value Store used to track seen notice keys across scheduled runs.

## `customEmailVerifierApiKey` (type: `string`):

Optional MillionVerifier, ZeroBounce, or Reacher API key for real-time SMTP mailbox verification during enriched runs.

## `proxyConfiguration` (type: `object`):

Official government and commercial registries run with zero proxies by default. Optional proxy settings are only used if crawling rate-limited corporate websites for email discovery.

## Actor input object example

```json
{
  "keywords": [
    "Software",
    "SaaS",
    "Consulting"
  ],
  "countries": [
    "FR",
    "UK",
    "DE"
  ],
  "signalCategories": [
    "executive_appointment",
    "new_incorporation"
  ],
  "postedWithinDays": 30,
  "maxItems": 20,
  "searchUrls": [],
  "scraperMode": "enriched_with_email",
  "strictBuyerMatchOnly": false,
  "icpScoringPreset": "b2b_saas_cyber_tech",
  "icpTargetSeniority": "director_vp_first",
  "icpBoostKeywords": [
    "cybersecurity",
    "cloud",
    "enterprise"
  ],
  "icpRecencyPriority": "fresh_first",
  "icpWeights": {
    "signalTypes": {
      "multi_signal": 45,
      "contract_award": 35,
      "clinical_trial": 35,
      "funding": 35,
      "jobs": 30,
      "executive_change": 25
    },
    "roleSeniority": {
      "director_vp_global": 25,
      "manager_kam_territory": 18,
      "specialist_ic": 10
    },
    "geos": {
      "DE": 15,
      "AT": 12,
      "CH": 15,
      "UK": 15,
      "FR": 15,
      "NL": 14,
      "BE": 14,
      "AU": 14,
      "NZ": 12,
      "US": 15
    },
    "industryKeywords": {
      "cybersecurity|security|software|cloud|it|saas": 18,
      "chemicals|industrial|automation|manufacturing|entry systems": 12,
      "insurance|versicherung|finanz|logistics": 8,
      "testing|instruments|actuators|sensors": 6
    },
    "recency": {
      "days_0_3": 15,
      "days_4_7": 11,
      "days_8_14": 6,
      "days_15_plus": 0
    }
  },
  "blacklistDomains": [
    "existing-client.co.uk"
  ],
  "excludeCompanyKeywords": [
    "Holding",
    "SCI",
    "Immobilier",
    "Dormant"
  ],
  "excludeLocations": [
    "Offshore"
  ],
  "onlyNewSignals": false,
  "monitorScopeName": "buying-signal-dedup-store",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing normalized UK OCDS, France BOAMP, and EU TED contract award buying signals with resolved supplier domains and optional verified emails.

## `state` (type: `string`):

Key-value store record persisting crawl progress and graceful shutdown checkpoints.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "Software",
        "SaaS",
        "Consulting"
    ],
    "countries": [
        "FR",
        "UK",
        "DE"
    ],
    "signalCategories": [
        "executive_appointment",
        "new_incorporation"
    ],
    "postedWithinDays": 30,
    "maxItems": 20,
    "scraperMode": "enriched_with_email",
    "icpScoringPreset": "b2b_saas_cyber_tech",
    "icpBoostKeywords": [
        "cybersecurity",
        "cloud",
        "enterprise"
    ],
    "blacklistDomains": [
        "existing-client.co.uk"
    ],
    "excludeCompanyKeywords": [
        "Holding",
        "SCI",
        "Immobilier",
        "Dormant"
    ],
    "excludeLocations": [
        "Offshore"
    ],
    "monitorScopeName": "buying-signal-dedup-store"
};

// Run the Actor and wait for it to finish
const run = await client.actor("aperture/eu-uk-executive-incorporation-signal-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": [
        "Software",
        "SaaS",
        "Consulting",
    ],
    "countries": [
        "FR",
        "UK",
        "DE",
    ],
    "signalCategories": [
        "executive_appointment",
        "new_incorporation",
    ],
    "postedWithinDays": 30,
    "maxItems": 20,
    "scraperMode": "enriched_with_email",
    "icpScoringPreset": "b2b_saas_cyber_tech",
    "icpBoostKeywords": [
        "cybersecurity",
        "cloud",
        "enterprise",
    ],
    "blacklistDomains": ["existing-client.co.uk"],
    "excludeCompanyKeywords": [
        "Holding",
        "SCI",
        "Immobilier",
        "Dormant",
    ],
    "excludeLocations": ["Offshore"],
    "monitorScopeName": "buying-signal-dedup-store",
}

# Run the Actor and wait for it to finish
run = client.actor("aperture/eu-uk-executive-incorporation-signal-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "Software",
    "SaaS",
    "Consulting"
  ],
  "countries": [
    "FR",
    "UK",
    "DE"
  ],
  "signalCategories": [
    "executive_appointment",
    "new_incorporation"
  ],
  "postedWithinDays": 30,
  "maxItems": 20,
  "scraperMode": "enriched_with_email",
  "icpScoringPreset": "b2b_saas_cyber_tech",
  "icpBoostKeywords": [
    "cybersecurity",
    "cloud",
    "enterprise"
  ],
  "blacklistDomains": [
    "existing-client.co.uk"
  ],
  "excludeCompanyKeywords": [
    "Holding",
    "SCI",
    "Immobilier",
    "Dormant"
  ],
  "excludeLocations": [
    "Offshore"
  ],
  "monitorScopeName": "buying-signal-dedup-store"
}' |
apify call aperture/eu-uk-executive-incorporation-signal-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aperture/eu-uk-executive-incorporation-signal-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5PwBOfpH3vf7MMEV0/builds/0A6vcb3h3CXV3S225/openapi.json
