# France Multi-Signal Buying-Signal Scraper (Jobs & Funding) (`aperture/france-buying-signal-scraper`) Actor

Combine French B2B hiring signals (France Travail) with startup funding rounds (Maddyness + MaddyMoney). Features copy-paste searchUrls, CDI/CDD & recency filters, cross-run Delta Mode deduplication, Mentions Légales contact email/phone/salary extraction, and strict named-contact PPE billing.

- **URL**: https://apify.com/aperture/france-buying-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 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

<p align="center">
  <a href="https://apify.com/aperture/france-buying-signal-scraper">
    <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/france-signals.png" width="64" height="64" alt="France B2B Buying-Signal Scraper" />
  </a>
</p>

## France B2B Buying-Signal Scraper: Jobs & Funding (No Cookies)

**France B2B Buying-Signal Scraper** ([`aperture/france-buying-signal-scraper`](https://apify.com/aperture/france-buying-signal-scraper)) is a multi-signal, **No Cookies / No Login Required** French B2B intent engine by **[Aperture — Data Aggregation Solutions](https://apify.com/aperture)** that combines two of the highest-converting outbound triggers in France (`FR`) in a single run:

1. **B2B Commercial Hiring Signals (`signal_type: "jobs"`)** from [France Travail (`candidat.francetravail.fr`)](https://candidat.francetravail.fr) — including aggregated partner listings from Cadremploi, Hellowork, and DirectEmploi (*Account Executive*, *Business Developer*, *SDR*, *Ingénieur Commercial*, *RevOps*).
2. **French Tech Startup Funding Signals (`signal_type: "funding"`)** from [Maddyness (`maddyness.com`)](https://www.maddyness.com) — capturing individual Seed / Série A–D rounds and weekly *MaddyMoney* French Tech funding roundups with parsed euro/dollar amounts and round stages.

In **`enriched_with_email`** mode, it resolves each French company's corporate root domain (`.fr`, `.com`, `.io`, `.ai`), crawls statutory French **`/mentions-legales`** (*LCEN Art. 6-III*), `/equipe`, `/politique-de-confidentialite`, and `/contact` pages, and enforces our **Strict Named-Contact Enriched Guarantee**: you only pay the $0.008 enriched tier when a **verified named individual contact** (`j.dupont@acme.fr`, `email_verification_status: "ok"`) is delivered, while generic role addresses (`contact@`, `bonjour@`, `recrutement@`, `hello@`) are kept in `contact_email` as a free `role_fallback` bonus at the basic $0.002 rate!

- **100% No Cookies & Zero Headless Browser Overhead**: Runs over pure HTTP/2 HTML & unauthenticated JSON BFF endpoints (`CheerioCrawler`) within strict **256 MB – 1,024 MB** RAM bounds (`512 MB` default).
- **100% Congruent Portfolio Schema**: Shares the exact `BuyingSignalRecord` dataset schema across the **Aperture Global B2B Buying-Signal Suite** ([Stepstone DACH/Benelux](https://apify.com/aperture/stepstone-dach-buying-signal-scraper), [Seek ANZ](https://apify.com/aperture/seek-anz-buying-signal-scraper), and [Zero-Proxy ICP Aggregator](https://apify.com/aperture/b2b-buying-signal-icp-aggregator)).
- **Limited Permissions (`LIMITED_PERMISSIONS`) Certified**: Immediately eligible for **Apify AI**, **Model Context Protocol (MCP)** agents, and **Skyfire** agentic payments.

***

### 5-Actor Global B2B Buying-Signal Suite (`aperture`) (MCP-Ready)

> **Strict Named-Contact Enriched Guarantee:** Across the entire Aperture suite, the enriched PPE tier ($0.008 / $0.009) is billed **strictly when a verified named individual contact** (`firstname.lastname@`, `email_verification_status: "ok"`) is extracted. Generic or departmental role inboxes (`contact@`, `bonjour@`, `info@`, `hello@`, `recrutement@`, `jobs@`) are **never discarded** — they remain populated in `contact_email` for free with `email_verification_status: "role_fallback"` and automatically downgrade billing to the basic tier ($0.002 / $0.003).

Published by **[Aperture](https://apify.com/aperture)** — combine our regional zero-cookie signal scrapers with our zero-proxy ICP scoring engine to run a unified **8-country** multi-market outbound pipeline across **3 buying-signal dimensions (`jobs`, `funding`, `contract_award` -> `multi_signal`)** in **Europe (`DE`, `AT`, `BE`, `NL`, `FR`, `UK`)** and **APAC (`AU`, `NZ`)**:

| Actor | Markets (`geo`) | Signal Types | Primary Sources | PPE Pricing (Basic / Enriched) |
| :--- | :---: | :--- | :--- | :--- |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/stepstone-dach.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/stepstone-dach-buying-signal-scraper`](https://apify.com/aperture/stepstone-dach-buying-signal-scraper)** | `DE`, `AT`, `BE`, `NL` | `jobs` | Stepstone Germany, Austria, Belgium & the Netherlands + statutory `/impressum` & `/over-ons` emails | $2.00 / $8.00 per 1k |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/seek-anz.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/seek-anz-buying-signal-scraper`](https://apify.com/aperture/seek-anz-buying-signal-scraper)** | `AU`, `NZ` | `jobs` | Seek Australia & New Zealand JSON/GraphQL + ANZ corporate `/contact` & `/privacy` emails | $2.00 / $8.00 per 1k |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/france-signals.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/france-buying-signal-scraper`](https://apify.com/aperture/france-buying-signal-scraper)** *(This Actor)* | `FR` | `jobs`, `funding` | France Travail B2B Hiring + Maddyness Startup Funding Rounds + `/mentions-legales` emails | $2.00 / $8.00 per 1k |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/eu-uk-procurement.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/eu-uk-procurement-award-signal-scraper`](https://apify.com/aperture/eu-uk-procurement-award-signal-scraper)** | `UK`, `FR`, `DE`, `NL`, `BE`, `AT` | `contract_award` | UK Contracts Finder & Find a Tender OCDS + France BOAMP Open Data v2.1 + EU TED Search v3 | $2.00 / $8.00 per 1k |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/b2b-icp-aggregator.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/b2b-buying-signal-icp-aggregator`](https://apify.com/aperture/b2b-buying-signal-icp-aggregator)** | `DE`, `AT`, `BE`, `NL`, `FR`, `UK`, `AU`, `NZ` | `jobs`, `funding`, `contract_award`, `multi_signal` | Zero-proxy cross-dataset deduplicator, multi-signal ICP scorer (`0–100`), 28-tool tech-stack extractor, and cold outreach hook engine | $3.00 / $9.00 per 1k |

***

### Why French & EMEA GTM Teams Switch to Aperture

| Dimension                    | Single-Source French Job Scrapers                 | Aperture France Multi-Signal Scraper                                                                                                                                                                                                                |
| :--------------------------- | :------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Multi-Signal Coverage**    | Job listings only                                 | **France Travail B2B Hiring (`jobs`) + Maddyness / MaddyMoney Startup Fundraising (`funding`)** in one unified schema.                                                                                                                              |
| **Pricing Fairness**         | Charges full price for `contact@` / empty emails  | **Strict Named-Contact PPE Guarantee** (`$0.008` strictly for verified named individuals like `marie.laurent@kameleoon.com`; generic `contact@`, `recrutement@`, `bonjour@` inboxes included **free** as `"role_fallback"` at basic `$0.002` rate). |
| **Scheduled Monitoring**     | Re-scrapes & re-bills identical offers every week | **Cross-Run Delta Mode (`onlyNewSignals: true`)** (persists seen keys in `buying-signal-dedup-store` KVS and skips previously emitted jobs/funding rounds **before** enrichment or `Actor.charge()` fires — `$0.00` for duplicates).                |
| **Search Flexibility**       | Basic keywords only                               | **Copy-Paste France Travail `searchUrls` + `postedWithinDays` (`emission`) + `contractTypeFilter` (`CDI`, `CDD`, `Alternance`)**.                                                                                                                   |
| **Zero-Cost Bonus Metadata** | Basic title/location only                         | **`contact_phone`, `salary_band`, and `contract_type`** extracted directly from France Travail's JSON BFF at `$0.00` extra compute cost.                                                                                                            |

***

### Why combine France Travail hiring + Maddyness funding + Mentions Légales?

- **Multi-Signal Intersection Ready**: When a French SaaS scaleup raises a *Série A* on Maddyness **and** posts a *Business Developer / Account Executive (H/F)* role on France Travail, piping this Actor's output into **[`aperture/b2b-buying-signal-icp-aggregator`](https://apify.com/aperture/b2b-buying-signal-icp-aggregator)** automatically merges both events under the company's root domain (`signal_type: "multi_signal"`, +25 ICP score boost!).
- **The French `Mentions Légales` Advantage (*LCEN Art. 6-III-1*)**: Under French law (*Loi pour la Confiance dans l'Économie Numérique*), commercial websites operating in France are required to publish legal publisher identification and direct electronic contact details on `/mentions-legales` or `/mentions-legales-et-cgu`.
- **Direct BFF & Startup Anchor Domain Resolution**: Extracts direct employer URLs from France Travail's unauthenticated BFF (`etablissement.urlEntreprise`) and fuzzy-matched startup links on Maddyness articles (cleanly ignoring VC fund and customer links), stripping job-board hosts (`francetravail.fr`, `hellowork.com`, `cadremploi.fr`, `welcometothejungle.com`, `apec.fr`).
- **Pre-Charge Blacklist Filtering (`$0.00` for Excluded Domains)**: Companies or domains in `blacklistDomains` are dropped *before* `Actor.charge()` fires.

***

### How much does it cost to scrape France B2B buying signals? (Pay-Per-Event Pricing)

| Scraper Mode (`scraperMode`) | PPE Event Name           | Target Price                                              | What Is Included                                                                                                                                                                                                                                                                       | Strict Named-Contact Billing Guarantee                                                                                                                                                                                                                                                                                           |
| :--------------------------- | :----------------------- | :-------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`basic`**                  | `job-signal-scraped`     | **$2.00 / 1,000 signals** ($0.002 / item)                 | Normalized France `jobs` & `funding` signals (`company`, corporate `domain`, `role_title`, `seniority_band`, `location`, `geo: "FR"`, `signal_date`, `evidence_url`, `signal_detail`, `contact_phone`, `salary_band`, `contract_type`) + pre-charge `blacklistDomains` filtering.      | Billed for standard signals **and** `enriched_with_email` items where only a generic role inbox (`role_fallback`, included free in `contact_email`) or no verified named contact was found.                                                                                                                                      |
| **`enriched_with_email`**    | `buying-signal-enriched` | **$8.00 / 1,000 verified named contacts** ($0.008 / item) | Everything in Basic **plus** French `/mentions-legales`, `/equipe`, `/politique-de-confidentialite`, & `/contact` crawling, named-person prioritization, DNS/DoH MX fingerprinting (`Google Workspace`, `Microsoft 365`, `OVHcloud`, `Gandi`, `Scaleway`), and SMTP/BYOK verification. | **You ONLY pay $0.008 when a verified NAMED individual contact (`firstname.lastname@`, `email_verification_status === "ok"`) is delivered!** Generic role emails (`contact@`, `bonjour@`, `recrutement@`, `hello@`) stay in `contact_email` as `role_fallback` and **automatically downgrade to `job-signal-scraped` ($0.002)**. |

- **Strict `ACTOR_MAX_TOTAL_CHARGE_USD` Protection**: Immediately aborts the crawler pool when your maximum run budget is reached.
- **25-Item Free-Tier Run Limit**: Free-Tier Apify users can test up to **25 signals per run**, exiting gracefully with `"Free tier limit reached. Upgrade to a paid Apify plan for unlimited runs."`

***

### Ready-to-copy integration recipes

#### 1. Scheduled Monday Delta Monitoring (`onlyNewSignals: true` + `postedWithinDays: 7` + `contractTypeFilter: ["CDI"]`)

Set up a recurring Monday `06:00 UTC` schedule to pull fresh high-intent French B2B leads. `onlyNewSignals: true` ensures you never pay twice for the same job or funding round across runs:

```json
{
    "signalSources": ["france_travail_jobs", "maddyness_funding"],
    "keywords": ["Account Executive", "Business Developer", "Head of Sales", "SDR"],
    "location": "75D",
    "postedWithinDays": 7,
    "contractTypeFilter": ["CDI"],
    "maxDaysSinceAnnouncement": 7,
    "onlyNewSignals": true,
    "monitorScopeName": "weekly_sales_leads_fr",
    "scraperMode": "enriched_with_email",
    "maxItems": 100,
    "blacklistDomains": ["client-existant.fr"]
}
```

#### 2. Clay HTTP API Integration (`POST /v2/acts/aperture~france-buying-signal-scraper/run-sync-get-dataset-items`)

Import real-time French buying signals directly into your Clay workbook with synchronous dataset item retrieval:

```bash
curl -X POST "https://api.apify.com/v2/acts/aperture~france-buying-signal-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN&maxTotalChargeUsd=5.00" \
  -H "Content-Type: application/json" \
  -d '{
    "signalSources": ["france_travail_jobs", "maddyness_funding"],
    "keywords": ["Account Executive", "Business Developer"],
    "searchUrls": [
      "https://candidat.francetravail.fr/offres/recherche?motsCles=Account+Executive&lieux=75D"
    ],
    "postedWithinDays": 14,
    "contractTypeFilter": ["CDI"],
    "maxDaysSinceAnnouncement": 30,
    "scraperMode": "enriched_with_email",
    "maxItems": 50
  }'
```

**Clay HTTP Action Node Setup:**

- **Method:** `POST`
- **URL:** `https://api.apify.com/v2/acts/aperture~france-buying-signal-scraper/run-sync-get-dataset-items`
- **Query Parameters:** `token` = `YOUR_APIFY_TOKEN`, `maxTotalChargeUsd` = `5.00`
- **Headers:** `Content-Type: application/json`

#### 3. Claude Desktop & Cursor MCP Server Configuration (`@apify/actors-mcp-server`)

Connect France B2B Buying-Signal Scraper directly to your AI agents in Claude Desktop or Cursor for automated intent research and personalized outreach drafting:

##### Claude Desktop (`claude_desktop_config.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/eu-uk-procurement-award-signal-scraper,aperture/b2b-buying-signal-icp-aggregator"
            ],
            "env": {
                "APIFY_TOKEN": "YOUR_APIFY_TOKEN"
            }
        }
    }
}
```

##### Cursor (`.cursor/mcp.json` or Cursor Settings > MCP)

```json
{
    "mcpServers": {
        "apify-buying-signals": {
            "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/eu-uk-procurement-award-signal-scraper,aperture/b2b-buying-signal-icp-aggregator"
            ],
            "env": {
                "APIFY_TOKEN": "YOUR_APIFY_TOKEN"
            }
        }
    }
}
```

***

### Sample output

```json
[
    {
        "detected_at": "2026-10-31T20:51:10Z",
        "company": "Kameleoon SAS",
        "domain": "kameleoon.com",
        "role_title": "Account Executive Enterprise (H/F)",
        "seniority_band": "mid",
        "location": "75 - Paris",
        "geo": "FR",
        "posted_date": "2026-10-25T00:00:00.000Z",
        "signal_type": "jobs",
        "signal_detail": "Job: Account Executive Enterprise (H/F) — 75 - Paris [CDI - Contrat travail]",
        "signal_source_actor": "france-buying-signal-scraper",
        "signal_date": "2026-10-25",
        "evidence_url": "https://candidat.francetravail.fr/offres/recherche/detail/214VGZB",
        "contact_email": "marie.laurent@kameleoon.com",
        "contact_phone": "+33 1 42 68 55 00",
        "salary_band": "Annuel de 55000.0 Euros à 70000.0 Euros sur 12.0 mois",
        "contract_type": "CDI",
        "email_verification_status": "ok",
        "mx_provider": "Google Workspace",
        "ppe_event_charged": "buying-signal-enriched",
        "notes": "source=mentions-legales+contact; verify=smtp_250_ok; mx=Google Workspace",
        "error": null
    },
    {
        "detected_at": "2026-10-31T20:52:32Z",
        "company": "QUARKSUP",
        "domain": "quarksup.com",
        "role_title": "ACCOUNT EXECUTIVE (H/F)",
        "seniority_band": "mid",
        "location": "75 - Paris 1er Arrondissement",
        "geo": "FR",
        "posted_date": "2026-10-23T00:00:00.000Z",
        "signal_type": "jobs",
        "signal_detail": "Job: ACCOUNT EXECUTIVE (H/F) — 75 - Paris 1er Arrondissement [CDI - Contrat travail]",
        "signal_source_actor": "france-buying-signal-scraper",
        "signal_date": "2026-10-23",
        "evidence_url": "https://candidat.francetravail.fr/offres/recherche/detail/8218308",
        "contact_email": "recrutement@quarksup.com",
        "contact_phone": "01 53 45 80 00",
        "salary_band": "Annuel de 45000.0 Euros à 60000.0 Euros",
        "contract_type": "CDI",
        "email_verification_status": "role_fallback",
        "mx_provider": "Google Workspace",
        "ppe_event_charged": "job-signal-scraped",
        "notes": "source=mentions-legales; verify=smtp_250_ok; mx=Google Workspace",
        "error": null
    },
    {
        "detected_at": "2026-10-31T20:20:00Z",
        "company": "CarbonFarm",
        "domain": "carbonfarm.tech",
        "role_title": "",
        "seniority_band": "",
        "location": "France",
        "geo": "FR",
        "posted_date": "2026-10-13T16:20:27.000Z",
        "signal_type": "funding",
        "signal_detail": "Funding: CarbonFarm — 7M€ (Série A)",
        "signal_source_actor": "france-buying-signal-scraper",
        "signal_date": "2026-10-13",
        "evidence_url": "https://www.maddyness.com/2026/10/13/carbonfarm-leve-7-millions-deuros-pour-reduire-les-emissions-de-methane-dans-les-rizieres/",
        "contact_email": "contact@carbonfarm.tech",
        "contact_phone": "",
        "salary_band": "",
        "contract_type": "",
        "email_verification_status": "role_fallback",
        "mx_provider": "Google Workspace",
        "ppe_event_charged": "job-signal-scraped",
        "notes": "source=mentions-legales; verify=mx_fingerprinted_impressum_match; mx=Google Workspace",
        "error": null
    }
]
```

***

### Legal, CNIL & GDPR Compliance Disclaimer

> Our Actors are ethical and do not extract any private user data from authenticated or non-public profiles. They only extract publicly published commercial job postings on France Travail, public startup funding press articles on Maddyness, and statutory corporate legal disclosures (*Mentions Légales* under LCEN Art. 6-III). Named corporate contact addresses may constitute personal data under GDPR / CNIL guidelines in France and the EU; only process personal data when you have a legitimate B2B business interest and compliant opt-out mechanism.

Built and maintained by **[Aperture — Data Aggregation Solutions](https://apify.com/aperture)**. Explore the complete suite at **[apify.com/aperture](https://apify.com/aperture)**.

***

### Global B2B Buying-Signal & Enrichment Suite (MCP-Ready)

Scale your outbound intent pipeline across **France**, **DACH/Benelux**, and **Australia/New Zealand** — then deduplicate, score (`0–100`), and generate evidence-cited icebreakers with `$0` proxy overhead:

| Actor                                                                                                                                                                                                                                                                                                 |             Markets (`geo`)              | Signal Types                      | Primary Sources                                                                                       | PPE Pricing (Basic / Enriched) |
| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------: | :-------------------------------- | :---------------------------------------------------------------------------------------------------- | :----------------------------- |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/stepstone-dach.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/stepstone-dach-buying-signal-scraper`](https://apify.com/aperture/stepstone-dach-buying-signal-scraper)** |          `DE`, `AT`, `BE`, `NL`          | `jobs`                            | Stepstone Germany, Austria & Belgium + statutory `/impressum` emails                                  | $2.00 / $8.00 per 1k           |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/seek-anz.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/seek-anz-buying-signal-scraper`](https://apify.com/aperture/seek-anz-buying-signal-scraper)**                   |                `AU`, `NZ`                | `jobs`                            | Seek Australia & New Zealand JSON/GraphQL + ANZ corporate `/contact` & `/privacy` emails              | $2.00 / $8.00 per 1k           |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/france-signals.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/france-buying-signal-scraper`](https://apify.com/aperture/france-buying-signal-scraper)** *(This Actor)*  |                   `FR`                   | `jobs`, `funding`                 | France Travail B2B Hiring + Maddyness Startup Funding Rounds + `/mentions-legales` emails             | $2.00 / $8.00 per 1k           |
| <img src="https://api.apify.com/v2/key-value-stores/j5l13XT1d0O0NQmTI/records/b2b-icp-aggregator.png" width="22" height="22" style="vertical-align: middle; margin-right: 4px;" /> **[`aperture/b2b-buying-signal-icp-aggregator`](https://apify.com/aperture/b2b-buying-signal-icp-aggregator)**     | `DE`, `AT`, `BE`, `NL`, `FR`, `AU`, `NZ` | `jobs`, `funding`, `multi_signal` | Zero-proxy cross-dataset deduplicator, multi-signal ICP scorer (`0–100`), and AI outreach hook engine | $3.00 / $9.00 per 1k           |

# Actor input Schema

## `signalSources` (type: `array`):

Select one or both French B2B intent feeds: 'france_travail_jobs' (France Travail public job board) and 'maddyness_funding' (Maddyness French startup fundraising announcements).

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

Concrete French/English B2B job titles queried on France Travail when 'france_travail_jobs' is enabled (e.g., Account Executive, Business Developer, Commercial B2B, SDR, Head of Sales).

## `location` (type: `string`):

Optional department code or city filter for France Travail job listings (e.g., 75, Paris, Lyon, 69). Leave empty to search nationwide across France.

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

Optional list of direct France Travail search URLs (candidat.francetravail.fr/offres/recherche?...) copied from your browser. Crawled alongside keyword searches.

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

Optional recency filter to restrict France Travail search results to job offers published within the last 1, 3, 7, 14, or 30 days (\&emission=N).

## `contractTypeFilter` (type: `array`):

Optional filter to restrict France Travail offers to specific French contract types (e.g., CDI, CDD, MIS, LIB, Alternance).

## `maxDaysSinceAnnouncement` (type: `integer`):

Maximum age in days for Maddyness startup fundraising articles when 'maddyness_funding' is enabled (default: 90 days).

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

Maximum total number of normalized French buying-signal records to output across enabled sources. Free-tier Apify runs are capped at 25 items per run; paid Apify plans support unlimited runs.

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

Choose 'basic' ($2.00 / 1,000 signals via job-signal-scraped) for normalized B2B hiring & funding signals, or 'enriched_with_email' ($8.00 / 1,000 verified named-contact signals via buying-signal-enriched) to extract and verify named individual contacts (e.g., j.dupont@acme.fr) from French /mentions-legales, /equipe, and /contact pages. Generic role addresses (contact@, bonjour@, recrutement@, info@) are still included in contact_email as a free 'role_fallback' bonus and automatically downgraded to basic pricing ($0.002).

## `seniorityFilter` (type: `array`):

Optional filter to include only specific normalized seniority_band values on job signals (entry, mid, senior, manager, director, vp, cxo). Funding signals are always retained.

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

Optional list of company root domains (e.g., client-existant.fr, competitor.com) to exclude. Matching companies are filtered out before charging so blacklisted domains cost $0.

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

When enabled, persists seen job/funding keys in a named Apify Key-Value Store (monitorScopeName) across scheduled runs and skips previously emitted signals BEFORE enrichment or PPE charging ($0 cost for already-seen jobs/funding rounds).

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

Name of the persistent Apify Key-Value Store used to track seen signal keys when onlyNewSignals is enabled (default: 'buying-signal-dedup-store').

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

Optional Apify Proxy or custom proxy URLs. Lightweight HTTP requests run with zero cookies or login; enable Apify Proxy for high-volume scheduled runs.

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

Optional Bring-Your-Own-Key (BYOK) token for third-party HTTPS SMTP verification during 'enriched_with_email' mode. Supports MillionVerifier ('mv:\<API_KEY>' or raw key), ZeroBounce ('zb:\<API_KEY>'), or Reacher ('reacher:\<ENDPOINT_URL>|\<HEADER_SECRET>'). Leave empty to use the built-in zero-cost DNS/DoH MX provider fingerprinting + SMTP verifier.

## Actor input object example

```json
{
  "signalSources": [
    "france_travail_jobs",
    "maddyness_funding"
  ],
  "keywords": [
    "Business Developer",
    "Account Executive"
  ],
  "location": "",
  "searchUrls": [],
  "contractTypeFilter": [],
  "maxDaysSinceAnnouncement": 90,
  "maxItems": 10,
  "scraperMode": "basic",
  "seniorityFilter": [],
  "blacklistDomains": [],
  "onlyNewSignals": false,
  "monitorScopeName": "buying-signal-dedup-store",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Dataset containing normalized France Travail hiring + Maddyness funding records and optional verified Mentions Legales 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 = {
    "signalSources": [
        "france_travail_jobs",
        "maddyness_funding"
    ],
    "keywords": [
        "Business Developer",
        "Account Executive"
    ],
    "maxDaysSinceAnnouncement": 90,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("aperture/france-buying-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 = {
    "signalSources": [
        "france_travail_jobs",
        "maddyness_funding",
    ],
    "keywords": [
        "Business Developer",
        "Account Executive",
    ],
    "maxDaysSinceAnnouncement": 90,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("aperture/france-buying-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 '{
  "signalSources": [
    "france_travail_jobs",
    "maddyness_funding"
  ],
  "keywords": [
    "Business Developer",
    "Account Executive"
  ],
  "maxDaysSinceAnnouncement": 90,
  "maxItems": 10
}' |
apify call aperture/france-buying-signal-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aperture/france-buying-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/dRMQFHrMpiuGjB8fm/builds/ivMEZ53kZhJPhJgHH/openapi.json
