# EU Company Search — Spain, France & UK Official Registries (`agoradelmediterraneo/eu-company-search`) Actor

Search companies across Spain, France (INSEE SIRENE) and UK (Companies House) simultaneously. Returns unified profiles with name, registration number, status, address, directors and VAT. Optional VIES EU VAT validation. Official government data, no scraping.

- **URL**: https://apify.com/agoradelmediterraneo/eu-company-search.md
- **Developed by:** [Agora](https://apify.com/agoradelmediterraneo) (community)
- **Categories:** Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## EU Company Search — Spain, France & UK Official Registries

Search **companies across Spain, France and the United Kingdom simultaneously** from a single query. Powered by official government registries with no scraping and no rate limits. Returns a unified company profile with name, registration number, status, address, directors, VAT number, and optional VIES EU VAT validation.

**Data sources:**
- 🇫🇷 **France** — INSEE SIRENE via Recherche-Entreprises API (api.gouv.fr) — 25M companies — CC0
- 🇬🇧 **United Kingdom** — Companies House API — 5M companies — OGL
- 🇪🇸 **Spain** — OpenCorporates (Registro Mercantil data) — 3.5M companies

---

### Why This Actor?

Cross-border company research normally requires three separate tools and manual data merging. This actor searches all three registries in parallel and returns a **unified schema** in a single run — ideal for:

- Researching a multinational group's European entities in one query
- Finding subsidiaries of a known parent company across jurisdictions
- Cross-border KYB / due diligence workflows
- Identifying a company's EU VAT registration status

---

### Use Cases

#### 1. Multi-Jurisdiction Due Diligence
Search a company name across three countries at once. Instantly see all registered entities — a holding company in France, an operating subsidiary in Spain, a UK branch.

````

query: "Accor" → Accor SA (FR, founded 1960) + Accor Hotels Ltd (GB) + entities in ES

````

#### 2. EU VAT Verification
Enable `validateVat: true` to check all returned VAT numbers against the official **VIES system** (EU Commission). Get `vat_valid: true/false` for compliance workflows.

#### 3. CRM Enrichment
Feed a company name and get back registration number, address, incorporation date, and directors across all countries — ready for CRM import or contract KYB.

#### 4. Competitor Intelligence
Map a competitor's European footprint: which countries, what legal entities, founding dates, registration numbers.

#### 5. Automated n8n / Make Pipelines
Use as a step in an enrichment workflow: company name → EU profile → VIES check → CRM update.

---

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `query` | string | **required** | Company name to search (e.g. "Airbus", "Santander", "Rolls Royce") |
| `countries` | string | `"ES,FR,GB"` | Comma-separated country codes to search |
| `maxPerCountry` | integer | `5` | Max results per country (1–20) |
| `validateVat` | boolean | `false` | Validate VAT numbers via VIES. Adds ~1s per company. |

#### Example: Search "Airbus" across all three countries
```json
{
  "query": "Airbus",
  "countries": "ES,FR,GB",
  "maxPerCountry": 5,
  "validateVat": true
}
````

#### Example: Find UK entities of a French group

```json
{
  "query": "BNP Paribas",
  "countries": "FR,GB",
  "maxPerCountry": 10
}
```

#### Example: Spain and France only, 3 results per country

```json
{
  "query": "Inditex",
  "countries": "ES,FR",
  "maxPerCountry": 3
}
```

***

### Output Format

Each result contains a unified schema regardless of source country:

| Field | Description |
|-------|-------------|
| `country` | ISO country code: `ES`, `FR`, `GB` |
| `registry` | Source registry name |
| `company_number` | Registration number in that country |
| `name` | Official registered company name |
| `status` | `active`, `dissolved`, `inactive`, etc. |
| `type` | Legal form (SAS, Ltd, SA, S.L., etc.) |
| `date_creation` | Incorporation date (YYYY-MM-DD) |
| `address` | Registered address |
| `postal_code` | Postal / ZIP code |
| `city` | City |
| `region` | Region / county |
| `naf_code` | Activity code (FR: NAF, ES/GB: SIC where available) |
| `employees` | Employee range (FR only) |
| `vat_number` | VAT number if available in registry |
| `vat_valid` | `true/false/null` — VIES validation result (only if `validateVat: true`) |
| `directors` | Array of director names and roles (FR and ES) |
| `source_url` | Direct link to company page on official registry |

#### Sample Output

```json
[
  {
    "country": "FR",
    "registry": "INSEE SIRENE (api.gouv.fr)",
    "company_number": "383474814",
    "name": "AIRBUS",
    "status": "active",
    "type": "5710",
    "date_creation": "1991-10-18",
    "address": "2 ROND-POINT EMILE DEWOITINE 31700 BLAGNAC",
    "postal_code": "31700",
    "city": "BLAGNAC",
    "region": "31",
    "naf_code": "30.30Z",
    "employees": "53",
    "vat_number": "FR27383474814",
    "vat_valid": true,
    "directors": [
      "GUILLAUME FAURY (Président Directeur Général)",
      "CHRISTIAN SCHERER (Chief Commercial Officer)"
    ],
    "source_url": "https://annuaire-entreprises.data.gouv.fr/entreprise/383474814"
  },
  {
    "country": "GB",
    "registry": "Companies House (UK)",
    "company_number": "03468788",
    "name": "AIRBUS GROUP LIMITED",
    "status": "active",
    "type": "ltd",
    "date_creation": "1997-11-24",
    "address": "Pegasus House, Gatwick Road, Crawley, RH10 9AH",
    "postal_code": "RH10 9AH",
    "city": "Crawley",
    "vat_number": "",
    "vat_valid": null,
    "directors": [],
    "source_url": "https://find-and-update.company-information.service.gov.uk/company/03468788"
  }
]
```

***

### Coverage

| Country | Registry | Total companies | Active | Directors | Financials |
|---------|----------|----------------|--------|-----------|------------|
| 🇫🇷 France | INSEE SIRENE | 25M | ~4.5M | ✅ | ✅ (~1M) |
| 🇬🇧 UK | Companies House | 5M | ~3.9M | Via CH API | ❌ |
| 🇪🇸 Spain | OpenCorporates / Registro Mercantil | 3.5M | ~2M | Partial | ❌ |

***

### VIES VAT Validation

When `validateVat: true`, the actor validates each company's VAT number against the **official VIES system** (European Commission). VIES covers all EU member states.

- FR VAT numbers: validated for French companies via VIES
- ES VAT numbers: validated for Spanish companies via VIES
- GB VAT numbers: not covered by VIES (UK left EU in 2020)

VIES validation adds approximately **1 second per company** with a valid VAT number. Rate limited by the EU Commission server — the actor handles retries automatically.

***

### Pricing

**Pay Per Result:** $0.002 per company profile returned + $0.00005/run base cost.

Searching 3 countries × 5 results = up to 15 results = **$0.03 per run**.

***

### Related Actors

For deeper extraction from each country:

- [France Company Search — INSEE SIRENE](https://apify.com/agoradelmediterraneo/france-company-search) — full France registry with 1,000 result capacity and ATECO/NAF filters
- [Spain New Companies BORME](https://apify.com/agoradelmediterraneo/spain-new-companies-borme) — Spain new incorporations with province and sector filters

***

### FAQ

**Is the data legal to use for commercial purposes?**
Yes. France (CC0), UK (OGL v3.0) and Spain (CC BY) all publish company registry data as open data licensed for reuse.

**How fresh is the data?**
France: daily updates. UK: near real-time (Companies House updates continuously). Spain: depends on the underlying source.

**Can I search only one country?**
Yes — set `countries: "FR"` or `countries: "GB"` to restrict the search.

**Is the query an exact match?**
No — it's a fuzzy text search across company names. All three registries support partial name matching.

**Why are there no directors for UK results?**
Companies House requires a separate API call per company to retrieve officers. To keep costs low the search results don't include officers — use the `source_url` to access the full profile.

# Actor input Schema

## `query` (type: `string`):

Company name to search across EU registries (e.g. 'Airbus', 'Santander', 'Rolls Royce').

## `countries` (type: `string`):

Comma-separated country codes: ES (Spain), FR (France), GB (United Kingdom). Default: all three.

## `maxPerCountry` (type: `integer`):

Maximum number of results to return per country (1–20).

## `validateVat` (type: `boolean`):

If true, validates EU VAT numbers via the official VIES system. Adds vat\_valid field to results. Adds ~1s per company.

## Actor input object example

```json
{
  "countries": "ES,FR,GB",
  "maxPerCountry": 5,
  "validateVat": false
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("agoradelmediterraneo/eu-company-search").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("agoradelmediterraneo/eu-company-search").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call agoradelmediterraneo/eu-company-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=agoradelmediterraneo/eu-company-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EU Company Search — Spain, France & UK Official Registries",
        "description": "Search companies across Spain, France (INSEE SIRENE) and UK (Companies House) simultaneously. Returns unified profiles with name, registration number, status, address, directors and VAT. Optional VIES EU VAT validation. Official government data, no scraping.",
        "version": "0.1",
        "x-build-id": "N9lTgDENkpWkhpa25"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/agoradelmediterraneo~eu-company-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-agoradelmediterraneo-eu-company-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/agoradelmediterraneo~eu-company-search/runs": {
            "post": {
                "operationId": "runs-sync-agoradelmediterraneo-eu-company-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/agoradelmediterraneo~eu-company-search/run-sync": {
            "post": {
                "operationId": "run-sync-agoradelmediterraneo-eu-company-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "query"
                ],
                "properties": {
                    "query": {
                        "title": "Company name or keyword",
                        "type": "string",
                        "description": "Company name to search across EU registries (e.g. 'Airbus', 'Santander', 'Rolls Royce')."
                    },
                    "countries": {
                        "title": "Countries to search",
                        "type": "string",
                        "description": "Comma-separated country codes: ES (Spain), FR (France), GB (United Kingdom). Default: all three.",
                        "default": "ES,FR,GB"
                    },
                    "maxPerCountry": {
                        "title": "Max results per country",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of results to return per country (1–20).",
                        "default": 5
                    },
                    "validateVat": {
                        "title": "Validate VAT numbers via VIES",
                        "type": "boolean",
                        "description": "If true, validates EU VAT numbers via the official VIES system. Adds vat_valid field to results. Adds ~1s per company.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
