# French Healthcare Facilities Finder (FINESS) (`vigilant_jasmine/french-healthcare-facilities-finder-finess`) Actor

Find French healthcare & medico-social facilities from the official FINESS registry: EHPAD nursing homes, hospitals, clinics, pharmacies, SSIAD. Filter by category & department. GPS, SIRET, phone included. Free.

- **URL**: https://apify.com/vigilant\_jasmine/french-healthcare-facilities-finder-finess.md
- **Developed by:** [DEV DEV](https://apify.com/vigilant_jasmine) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## French Healthcare Facilities Finder (FINESS)

**Find every healthcare and medico-social facility in France** — EHPAD nursing homes, hospitals (centre hospitalier, CHU), clinics, pharmacies, SSIAD home-nursing services, disability care centers and more — straight from **FINESS**, the official French national registry of health establishments (*Fichier National des Établissements Sanitaires et Sociaux*). Filter by department and facility category, and get clean, structured records with address, postal code, phone number, **SIRET**, legal status and **GPS coordinates**. Perfect for *annuaire des établissements de santé*, *liste des EHPAD*, *établissements médico-sociaux* and French healthcare B2B prospecting.

**This actor is free.** You only pay your own Apify platform usage (typically a few cents per run).

### Why FINESS?

FINESS is the authoritative government registry maintained by the French Ministry of Health — every hospital, EHPAD, pharmacy and medico-social structure in France has a FINESS number. This actor reads the official open data extraction published on **data.gouv.fr** (Licence Ouverte / Open Licence), so the data is exhaustive, reliable and legally reusable, including commercially.

### Input

| Field | Type | Description |
|---|---|---|
| `categoryCodes` | array | Official FINESS category codes. Common ones: `500` EHPAD, `355` Centre Hospitalier, `101` CHR/CHU, `620` Pharmacie d'officine, `354` SSIAD. Empty = all categories. |
| `departments` | array | French department codes (`59`, `75`, `2A`, `971`…). Empty = all of France. |
| `categoryKeyword` | string | Alternative to codes: match on the category label, e.g. `"personnes agees"`, `"pharmacie"`. Accent-insensitive. |
| `searchKeyword` | string | Match on facility name or city. Accent-insensitive. |
| `maxResults` | integer | Cap on returned facilities. `0` = unlimited (~100k facilities in the full registry). |
| `includeGeolocation` | boolean | Add WGS84 `latitude`/`longitude` converted from the official Lambert-93 coordinates (metropolitan France). |

#### Example input

```json
{
    "categoryCodes": ["500"],
    "departments": ["59", "62"],
    "maxResults": 500,
    "includeGeolocation": true
}
````

### Output

One dataset item per facility, with an explicit `status` field (`found` / `not_found` / `error`):

```json
{
    "status": "found",
    "finessEt": "590000000",
    "finessEj": "590781234",
    "name": "EHPAD LES ACACIAS",
    "categoryCode": "500",
    "categoryLabel": "Etablissement d'hébergement pour personnes âgées dépendantes",
    "address": "12 RUE DES LILAS",
    "postalCode": "59000",
    "city": "LILLE",
    "departmentCode": "59",
    "departmentLabel": "NORD",
    "phone": "0320123456",
    "siret": "12345678900012",
    "legalStatusLabel": "Etab.Public.Départ.Hosp.",
    "openingDate": "1985-01-01",
    "latitude": 50.6412,
    "longitude": 3.0573
}
```

### Use cases

- **B2B prospecting in the healthcare sector** — build call/mail lists of EHPAD, clinics or pharmacies by department (wellness services, medical equipment, catering, staffing…).
- **Market mapping & territory analysis** — plot every facility of a category on a map using the included GPS coordinates.
- **Data enrichment** — join on `siret` with company registries to get financials and legal data.
- **Compliance & referential syncing** — keep an internal database of French health establishments aligned with the official registry.

### Works well with

Pipe the `siret` field into **[French Company Data Enricher (SIREN)](https://apify.com/fit_melon/french-company-data-enricher-siren)** to enrich each facility with official company data, or monitor operator solvency with **[French Insolvency Checker (BODACC)](https://apify.com/fit_melon/french-insolvency-checker-bodacc)**.

### Limitations & fair use

- Data source: FINESS open data extraction on data.gouv.fr, refreshed roughly every 2 months by the Agence du Numérique en Santé. A new FINESS feed is being rolled out in 2026; this actor resolves the latest published resource dynamically.
- GPS conversion covers metropolitan France (Lambert-93). Overseas territories keep their raw projected coordinates in `rawCoordX`/`rawCoordY`.
- Please keep run frequency reasonable — the underlying file is a full registry download; daily monitoring is more than enough.
- Data is published under the French **Licence Ouverte / Open Licence** (attribution: FINESS / Ministère des Solidarités et de la Santé).

# Actor input Schema

## `categoryCodes` (type: `array`):

Filter by official FINESS establishment category codes. Common examples: 500 = EHPAD (nursing home), 355 = Centre Hospitalier (hospital), 101 = CHR/CHU (university hospital), 620 = Pharmacie d'officine (pharmacy), 354 = SSIAD (home nursing service). Leave empty to keep all categories.

## `departments` (type: `array`):

Filter by French department codes, e.g. 59, 75, 2A, 971. Leave empty for all of France.

## `categoryKeyword` (type: `string`):

Alternative to category codes: keep facilities whose category label contains this keyword (accent-insensitive), e.g. "personnes agees", "pharmacie", "hospitalier".

## `searchKeyword` (type: `string`):

Keep facilities whose name or city contains this keyword (accent-insensitive).

## `maxResults` (type: `integer`):

Maximum number of facilities to return. Set 0 for unlimited (the full registry has ~100,000 facilities).

## `includeGeolocation` (type: `boolean`):

Enrich each facility with WGS84 latitude/longitude converted from the official Lambert-93 geolocation (metropolitan France).

## Actor input object example

```json
{
  "categoryCodes": [
    "500"
  ],
  "departments": [
    "59"
  ],
  "maxResults": 25,
  "includeGeolocation": true
}
```

# 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 = {
    "categoryCodes": [
        "500"
    ],
    "departments": [
        "59"
    ],
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("vigilant_jasmine/french-healthcare-facilities-finder-finess").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 = {
    "categoryCodes": ["500"],
    "departments": ["59"],
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("vigilant_jasmine/french-healthcare-facilities-finder-finess").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 '{
  "categoryCodes": [
    "500"
  ],
  "departments": [
    "59"
  ],
  "maxResults": 25
}' |
apify call vigilant_jasmine/french-healthcare-facilities-finder-finess --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=vigilant_jasmine/french-healthcare-facilities-finder-finess",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "French Healthcare Facilities Finder (FINESS)",
        "description": "Find French healthcare & medico-social facilities from the official FINESS registry: EHPAD nursing homes, hospitals, clinics, pharmacies, SSIAD. Filter by category & department. GPS, SIRET, phone included. Free.",
        "version": "0.0",
        "x-build-id": "Y54rpUhvzFo4iXQ53"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/vigilant_jasmine~french-healthcare-facilities-finder-finess/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-vigilant_jasmine-french-healthcare-facilities-finder-finess",
                "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/vigilant_jasmine~french-healthcare-facilities-finder-finess/runs": {
            "post": {
                "operationId": "runs-sync-vigilant_jasmine-french-healthcare-facilities-finder-finess",
                "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/vigilant_jasmine~french-healthcare-facilities-finder-finess/run-sync": {
            "post": {
                "operationId": "run-sync-vigilant_jasmine-french-healthcare-facilities-finder-finess",
                "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",
                "properties": {
                    "categoryCodes": {
                        "title": "FINESS category codes",
                        "type": "array",
                        "description": "Filter by official FINESS establishment category codes. Common examples: 500 = EHPAD (nursing home), 355 = Centre Hospitalier (hospital), 101 = CHR/CHU (university hospital), 620 = Pharmacie d'officine (pharmacy), 354 = SSIAD (home nursing service). Leave empty to keep all categories.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "departments": {
                        "title": "Department codes",
                        "type": "array",
                        "description": "Filter by French department codes, e.g. 59, 75, 2A, 971. Leave empty for all of France.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categoryKeyword": {
                        "title": "Category keyword",
                        "type": "string",
                        "description": "Alternative to category codes: keep facilities whose category label contains this keyword (accent-insensitive), e.g. \"personnes agees\", \"pharmacie\", \"hospitalier\"."
                    },
                    "searchKeyword": {
                        "title": "Name / city keyword",
                        "type": "string",
                        "description": "Keep facilities whose name or city contains this keyword (accent-insensitive)."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of facilities to return. Set 0 for unlimited (the full registry has ~100,000 facilities).",
                        "default": 100
                    },
                    "includeGeolocation": {
                        "title": "Include GPS coordinates",
                        "type": "boolean",
                        "description": "Enrich each facility with WGS84 latitude/longitude converted from the official Lambert-93 geolocation (metropolitan France).",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
