# Italian Pharmacies & Parapharmacies Directory – Official Data (`reckoning89/italian-pharmacies-directory`) Actor

Official Ministry of Health open data: 20,700+ pharmacies and 7,100+ parapharmacies in Italy with VAT, address, coordinates and chains. Updated daily.

- **URL**: https://apify.com/reckoning89/italian-pharmacies-directory.md
- **Developed by:** [Federico Giugno](https://apify.com/reckoning89) (community)
- **Categories:** Business, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 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/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

## Italian Pharmacies & Parapharmacies Directory – Official Data

**All 27,900+ active pharmacies and parapharmacies in Italy in one clean table: 20,700+ pharmacies (including branches and dispensaries) and 7,100+ parapharmacies, with ministry code, VAT number, full address, coordinates, opening date, chain size and holder type.**

The data come straight from the official open data of the **Italian Ministry of Health** (*Ministero della Salute*, dati.salute.gov.it), which publishes the registers every day under the **Italian Open Data License v2.0**. There's no scraping and no proxies: on each run the Actor finds the file of the day, removes the history rows, keeps one record per site, adds useful derived fields and lets you filter by region, province, city, postal code and type.

> **For market and territory analysis, not for lead generation.** The official registers contain **no phone numbers, emails, PEC or websites** (only the Friuli Venezia Giulia region publishes phones and hours, which the Actor adds). Use this Actor to size markets, map coverage, segment chains and track new openings, not to build contact lists.

#### What does the Italian Pharmacies Directory do?

- Finds and downloads the **current daily files** of the Ministry of Health (the file name changes every day: the Actor reads it from the dataset page, with a fallback on the dated file name).
- **Deduplicates the history**: the files hold about 59,000 + 14,000 rows including closed sites and old holders; the Actor returns **one record per site** with its current data.
- Returns **active sites by default** (`includeCeased` adds closed ones).
- Adds derived fields: `isChain` / `chainSize` (same VAT number on several active sites), `holderType`, `holderChanged` and `previousVatNumber`, `inRegistrySince`, Google Maps and OpenStreetMap links.
- Optional enrichment for **Friuli Venezia Giulia**: phone and the published opening slots, including on-duty shifts (*turni*), from the regional open data.
- GDPR flags on every record (`holderType`, `containsPersonalName`) and optional masking.

#### Who is it for?

- **Pharma, OTC, nutraceutical and cosmetics companies and distributors**: territory planning for sales reps (*informatori*), coverage per province and city.
- **Pharmacy software and service vendors**: total addressable market, segmentation by chain or independent, public (*comunali*) or private.
- **Geomarketing and real estate**: density of pharmacies per municipality or postal code, white spots, where to open a parapharmacy.
- **Market analysts, consultants, journalists and researchers**: chains and groups, new openings and changes of holder over time.
- **CRM and data teams**: match your customer master data on the official ministry code or VAT number.

#### Use cases and input recipes

Result counts from a run on the official files of 29/10/2026.

| Goal | Input | Results |
|---|---|---|
| All active pharmacies and parapharmacies in Italy | `"maxItems": 0` | 20,777 + 7,179 |
| Pharmacies and parapharmacies in the province of Milan | `"provinces": ["MI"], "maxItems": 0` | 954 + 197 |
| Pharmacies in the city of Rome | `"entityTypes": ["farmacia"], "municipalities": ["Roma"], "maxItems": 0` | 830 |
| Pharmacies belonging to chains or multi-site holders | `"entityTypes": ["farmacia"], "onlyChains": true, "maxItems": 0` | 4,147 |
| New openings and changes since 1 January 2026 | `"changedSince": "2026-01-01", "maxItems": 0` | 1,483 + 272 |
| Seasonal dispensaries (tourist areas) | `"pharmacyTypes": ["Dispensario stagionale"], "maxItems": 0` | 83 |
| Pharmacies in Friuli Venezia Giulia with phone and hours | `"entityTypes": ["farmacia"], "regions": ["Friuli Venezia Giulia"], "maxItems": 0` | 430 (390 with phone) |

#### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `entityTypes` | array | both | `farmacia` and/or `parafarmacia` |
| `regions` | array | all | The 21 regions/autonomous provinces as in the Ministry data (`P.A. Trento`, `P.A. Bolzano`; "Trentino-Alto Adige" selects both) |
| `provinces` | array | – | Province name or code: *Milano*, *MI*, *Roma*, *RM*… |
| `municipalities` | array | – | Exact municipality name, case- and accent-insensitive |
| `postalCodes` | array | – | CAP, e.g. *20121* |
| `pharmacyTypes` | array | – | *Ordinaria*, *Succursale*, *Dispensario*, *Dispensario stagionale* (pharmacies only) |
| `changedSince` | date | – | Only records whose current entry started on or after this date (new openings, new holders, other registry changes) |
| `onlyChains` | boolean | false | Only sites whose VAT number is shared by 2+ active sites |
| `onlyWithCoordinates` | boolean | false | Skip records without coordinates |
| `includeCeased` | boolean | false | Also return closed sites (`status: "ceased"`) |
| `enrichFvg` | boolean | true | Phone and opening slots for Friuli Venezia Giulia pharmacies |
| `excludeLikelyIndividuals` | boolean | false | Skip `holderType: "individual_likely"` |
| `maskPersonalNames` | boolean | false | Mask names containing a person and the VAT number of likely individuals |
| `maxItems` | integer | 100 | 0 = no limit |

#### Output fields

| Field | Description |
|---|---|
| `code` | Official ministry code of the pharmacy (*codice farmacia*) or parapharmacy (*codice identificativo sito*) |
| `entityType` | `farmacia` or `parafarmacia` |
| `name` | Official name as registered (Title Case); `nameMasked` tells if it was masked |
| `pharmacyType`, `pharmacyTypeCode` | Ordinaria, Succursale, Dispensario, Dispensario stagionale (pharmacies only) |
| `aslPharmacyCode` | Code assigned by the local health authority, when present |
| `vatNumber` | VAT number (*partita IVA*) of the holder |
| `address`, `hamlet`, `postalCode`, `municipality`, `municipalityCode` (ISTAT), `province`, `provinceCode`, `region`, `regionCode` | Location |
| `latitude`, `longitude`, `coordinatesPrecision` | Coordinates (about 91% of pharmacies, 99% of parapharmacies), `precise` or `approximate` |
| `googleMapsUrl`, `openStreetMapUrl` | Map links built from the coordinates |
| `status`, `validFrom`, `validTo`, `inRegistrySince` | Current entry dates and first appearance of the code in the register |
| `holderChanged`, `previousVatNumber` | The VAT number changed compared with the previous entry of the same site |
| `isChain`, `chainSize` | Number of active sites with the same VAT number |
| `holderType` | `company`, `public` (municipal pharmacies and similar), `individual_likely`, `unknown` – a heuristic on the name |
| `containsPersonalName` | The name likely contains a person's name (e.g. "Dott."/"Dr." or a first name) |
| `phone`, `openingSlots`, `enrichment` | Friuli Venezia Giulia only: phone and the opening slots published by the Region (`normale` or `turno`), for the coming days |
| `dataDate`, `sourceFile`, `source`, `usageNote` | Date of the file, file URL, attribution and usage note |

#### Example output item

```json
{
  "code": "5479",
  "entityType": "farmacia",
  "name": "Comunale - al Cedro",
  "nameMasked": false,
  "pharmacyType": "Ordinaria",
  "pharmacyTypeCode": "1",
  "aslPharmacyCode": null,
  "vatNumber": "00210240321",
  "address": "Piazza Guglielmo Oberdan, 2",
  "hamlet": null,
  "postalCode": "34122",
  "municipality": "Trieste",
  "municipalityCode": "032006",
  "province": "Trieste",
  "provinceCode": "TS",
  "region": "Friuli Venezia Giulia",
  "regionCode": "060",
  "latitude": 45.6542381,
  "longitude": 13.7758761,
  "coordinatesPrecision": "precise",
  "googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=45.6542381,13.7758761",
  "openStreetMapUrl": "https://www.openstreetmap.org/?mlat=45.6542381&mlon=13.7758761#map=18/45.6542381/13.7758761",
  "status": "active",
  "validFrom": "2005-01-01",
  "validTo": null,
  "inRegistrySince": "2005-01-01",
  "holderChanged": false,
  "previousVatNumber": null,
  "isChain": true,
  "chainSize": 2,
  "holderType": "public",
  "containsPersonalName": false,
  "phone": "040364928",
  "openingSlots": [
    {
      "from": "2026-10-29T08:30",
      "to": "2026-10-29T19:30",
      "type": "normale"
    },
    {
      "from": "2026-10-30T08:30",
      "to": "2026-10-30T19:30",
      "type": "normale"
    }
  ],
  "enrichment": "fvg",
  "dataDate": "2026-10-29",
  "sourceFile": "https://www.dati.salute.gov.it/sites/default/files/opendata/FRM_FARMA_5_20261029.csv",
  "source": "Fonte: Ministero della Salute – Direzione Generale dei Dispositivi Medici e del Farmaco, dataset \"Farmacie\" (https://www.dati.salute.gov.it/it/dataset/farmacie/), licenza Italian Open Data License v2.0 (https://www.dati.gov.it/iodl/2.0/). Alcune coordinate: © OpenStreetMap contributors (ODbL, https://www.openstreetmap.org/copyright). Dati filtrati, deduplicati e riformattati. Telefono e orari: Regione Autonoma Friuli Venezia Giulia – Direzione Centrale Salute, dataset \"Farmacie\" (https://www.dati.friuliveneziagiulia.it/d/jbxd-m6xe), licenza Italian Open Data License v2.0 (https://www.dati.gov.it/iodl/2.0/).",
  "usageNote": "Dati pubblici su esercizi farmaceutici, pensati per analisi di mercato e del territorio. Alcuni record identificano persone fisiche (ditte individuali, nomi di farmacisti): base giuridica e consenso per qualsiasi contatto sono responsabilità dell'utente. Vietato lo spam; rispettare GDPR, art. 130 del Codice Privacy e Registro delle Opposizioni."
}
```

#### Export and integrations

Download results as **Excel, CSV, JSON, XML or HTML**, or connect them through the Apify API, Google Sheets, Zapier, Make and webhooks. **Schedule the Actor monthly or weekly with `changedSince`** to receive only new openings and changes of holder.

#### Pricing

Pay per result: you pay only for the records returned. See the **Pricing** tab for the current rate. Use the filters and `maxItems` to control cost, since a small test run costs very little.

#### FAQ

**How many records are included?**
20,777 active pharmacies and 7,179 active parapharmacies as of 29/10/2026. With `includeCeased` you get 20,930 and 11,496 sites.

**How fresh is the data?**
The Ministry updates the files every day; each run downloads the file of the day (`dataDate`).

**Are there phone numbers or emails?**
No. The Ministry registers do not publish phone, email, PEC, website or opening hours. Only Friuli Venezia Giulia publishes phones and hours as open data, and the Actor adds them (about 390 pharmacies). We do not scrape Google Maps, Federfarma or pharmacy websites, and we do not use INI-PEC.

**What is a parapharmacy?**
A shop that sells non-prescription medicines under art. 5 of D.L. 223/2006 (*decreto Bersani*), with a pharmacist on site.

**Why are some records without coordinates?**
The Ministry has no coordinates for about 9% of pharmacies. Some coordinates are approximate (`coordinatesPrecision: "approximate"`).

**How reliable is `holderType`?**
It is a rule on the registered name: company forms (S.r.l., S.n.c., S.a.s., S.p.A., cooperatives…) give `company`; municipal and public markers (*Comunale*, *Azienda speciale*…) give `public`; pharmacies without a company form are usually owned by an individual pharmacist and get `individual_likely`. Treat it as an indication, not a legal fact.

**Can I use the data commercially?**
Yes. The data are released under the Italian Open Data License v2.0, which allows commercial reuse with attribution (see *Source & licence*). Personal data rules still apply to you (see *Legal note*).

**Is it a scraper? Will it get blocked?**
No. It reads official open-data files, with no proxies and no login.

#### Limits

- No phone, email, PEC, website or opening hours, except Friuli Venezia Giulia.
- `holderType` and `containsPersonalName` are heuristics on the name.
- `changedSince` uses the start date of the current registry entry, which also changes for administrative updates, not only for new holders (use `holderChanged` for holder changes).
- Data quality (typos, spelling of names and addresses) reflects the official source.

#### More official open data Actors

- **[Italian Schools Directory](https://apify.com/reckoning89/italian-schools-directory)**: all 61,000+ Italian schools, state and paritarie, from the Ministry of Education open data.
- **[Italian Hotels & Agriturismi Directory – Puglia & Veneto](https://apify.com/reckoning89/italian-accommodation-directory)**: 7,400+ licensed hotels, agriturismi and campsites from the official regional registers.

#### Source & licence

Data released by the **Ministry of Health** under the **Italian Open Data License v2.0** (IODL 2.0, https://www.dati.gov.it/iodl/2.0/), which allows commercial reuse with attribution. The Ministry states that some coordinates come from OpenStreetMap. The data are deduplicated, filtered and reformatted. Each record includes `source` and `sourceFile`. This Actor is not affiliated with, endorsed or sponsored by the Ministry of Health or the Friuli Venezia Giulia Region.

**Fonte: Ministero della Salute – Direzione Generale dei Dispositivi Medici e del Farmaco, dataset "Farmacie" (https://www.dati.salute.gov.it/it/dataset/farmacie/) e "Parafarmacie" (https://www.dati.salute.gov.it/it/dataset/parafarmacie/), licenza Italian Open Data License v2.0 (https://www.dati.gov.it/iodl/2.0/). Alcune coordinate: © OpenStreetMap contributors (ODbL, https://www.openstreetmap.org/copyright). Dati filtrati, deduplicati e riformattati.**

**Telefono e orari (solo Friuli Venezia Giulia): Regione Autonoma Friuli Venezia Giulia – Direzione Centrale Salute, dataset "Farmacie" (https://www.dati.friuliveneziagiulia.it/d/jbxd-m6xe), licenza Italian Open Data License v2.0.**

#### Legal note (GDPR) – usage notice

**This dataset is meant for market and territory analysis.** Many pharmacies are sole proprietorships, and their names and VAT numbers can identify a person (the pharmacist): under the GDPR they are personal data. Every record carries `holderType`, `containsPersonalName`, the `source` attribution and a `usageNote`. You can exclude likely individuals (`excludeLikelyIndividuals`) or mask their names and VAT numbers (`maskPersonalNames`).

If you use the data for any contact or marketing, you are the data controller: you need a legal basis, you must respect GDPR, Art. 130 of the Italian Privacy Code and the Registro delle Opposizioni, and offer an easy opt-out. No spam.

***

### 🇮🇹 Farmacie e parafarmacie italiane – anagrafica ufficiale del Ministero della Salute

**Tutte le 27.900+ farmacie e parafarmacie attive in Italia in una tabella pulita: 20.700+ farmacie (con succursali e dispensari) e 7.100+ parafarmacie, con codice ministeriale, partita IVA, indirizzo completo, coordinate, data di apertura, dimensione della catena e tipo di titolare.**

I dati arrivano direttamente dagli open data del **Ministero della Salute** (dati.salute.gov.it), aggiornati ogni giorno e pubblicati con **licenza IODL 2.0**. Niente scraping.

> **Serve per analisi di mercato e del territorio, non per generare contatti.** L'anagrafica ufficiale **non contiene telefono, email, PEC né sito web** (solo il Friuli Venezia Giulia pubblica telefoni e orari, che l'Actor aggiunge).

#### Cosa fa

- Trova e scarica il **file del giorno** del Ministero (il nome cambia ogni giorno).
- **Elimina lo storico**: restituisce **un record per sede** con i dati attuali, solo le sedi **attive** (con `includeCeased` anche quelle cessate).
- Aggiunge `isChain`/`chainSize` (stessa P.IVA su più sedi), `holderType`, `holderChanged` e `previousVatNumber`, `inRegistrySince`, link a Google Maps e OpenStreetMap.
- Per il **Friuli Venezia Giulia** aggiunge telefono e fasce orarie pubblicate dalla Regione, compresi i turni.
- Filtri per **regione, provincia, comune, CAP, tipo** (farmacia o parafarmacia), tipologia, catene e "aperte o variate dal".

#### Per chi è

Aziende farmaceutiche, di integratori e cosmetica e distributori (pianificazione delle zone degli informatori), fornitori di software e servizi per farmacie (dimensione del mercato, catene, comunali), geomarketing e immobiliare (densità per comune o CAP), analisti e ricercatori (catene, nuove aperture, cambi di titolare), team CRM (verifica tramite codice ministeriale o P.IVA).

#### Esempio di input

```json
{
  "entityTypes": ["farmacia", "parafarmacia"],
  "provinces": ["MI"],
  "changedSince": "2026-01-01",
  "maxItems": 0
}
```

#### Dati in uscita

Codice ministeriale, tipo, denominazione, tipologia, P.IVA, indirizzo, CAP, comune con codice ISTAT, provincia, regione, coordinate con precisione, link alle mappe, stato e date, catena, tipo di titolare, flag sui nomi di persona, telefono e orari (solo FVG), fonte e nota d'uso. L'elenco completo è nella sezione *Output fields*.

#### Prezzo

Pagamento a risultato: paghi solo i record restituiti. La tariffa attuale è nella scheda **Pricing**.

#### Domande frequenti

**Quanti record ci sono?** 20.777 farmacie e 7.179 parafarmacie attive al 29/10/2026.
**Ci sono telefono ed email?** No, il Ministero non li pubblica. Solo per il FVG ci sono telefono e orari (circa 390 farmacie). Non facciamo scraping di Google Maps, Federfarma o siti delle farmacie e non usiamo INI-PEC.
**Posso usare i dati a fini commerciali?** Sì, la IODL 2.0 consente il riuso commerciale con attribuzione. Le regole sui dati personali restano a carico tuo.

#### Altri actor con open data ufficiali

- **[Scuole italiane](https://apify.com/reckoning89/italian-schools-directory)**: oltre 61.000 scuole statali e paritarie dagli open data del Ministero dell'Istruzione.
- **[Strutture ricettive di Puglia e Veneto](https://apify.com/reckoning89/italian-accommodation-directory)**: oltre 7.400 alberghi, agriturismi e campeggi dai registri regionali ufficiali.

#### Fonte, licenza e nota d'uso

Fonte: Ministero della Salute – Direzione Generale dei Dispositivi Medici e del Farmaco, dataset "Farmacie" e "Parafarmacie" (dati.salute.gov.it), licenza Italian Open Data License v2.0. Alcune coordinate: © OpenStreetMap contributors (ODbL). Telefono e orari FVG: Regione Autonoma Friuli Venezia Giulia, licenza IODL 2.0. Dati filtrati, deduplicati e riformattati. Questo Actor non è affiliato al Ministero della Salute né alla Regione FVG.

**Nota d'uso:** molte farmacie sono ditte individuali e la denominazione e la P.IVA possono identificare una persona: sono dati personali. Ogni record ha `holderType`, `containsPersonalName`, `source` e `usageNote`; puoi escludere le probabili persone fisiche (`excludeLikelyIndividuals`) o mascherarne nome e P.IVA (`maskPersonalNames`). Per qualsiasi contatto il titolare del trattamento sei tu: servono una base giuridica e il rispetto di GDPR, art. 130 del Codice Privacy e Registro delle Opposizioni. Niente spam.

# Actor input Schema

## `entityTypes` (type: `array`):

Pharmacies (incl. branches and dispensaries) and/or parapharmacies (art. 5 D.L. 223/2006). Empty = both.

## `regions` (type: `array`):

Empty = all of Italy. Trentino-Alto Adige is split into P.A. Trento and P.A. Bolzano, as in the Ministry data.

## `provinces` (type: `array`):

Province name or code, e.g. Milano, MI, Roma, RM, Napoli. Case-insensitive. Empty = all.

## `municipalities` (type: `array`):

Exact municipality name, e.g. Torino, Bari, Reggio di Calabria (case-insensitive, accents ignored).

## `postalCodes` (type: `array`):

Five-digit CAP, e.g. 20121, 00184.

## `pharmacyTypes` (type: `array`):

Pharmacies only (parapharmacies have no type and are skipped when this is set). Empty = all.

## `changedSince` (type: `string`):

YYYY-MM-DD. Only records whose current entry started on or after this date: new openings, new holders and other registry changes. Useful for scheduled runs.

## `onlyChains` (type: `boolean`):

Only sites whose VAT number is shared by 2 or more active sites (chains, groups, multi-site companies).

## `onlyWithCoordinates` (type: `boolean`):

Skip records without latitude/longitude (about 9% of pharmacies).

## `includeCeased` (type: `boolean`):

Also return sites that are closed today (status = ceased, with validTo). Default: only active sites.

## `enrichFvg` (type: `boolean`):

Adds phone and published opening slots (incl. on-duty 'turno') from the Friuli Venezia Giulia open data, the only region that publishes them openly (~400 pharmacies).

## `excludeLikelyIndividuals` (type: `boolean`):

Skip records with holderType = individual_likely (sole-proprietor pharmacies and names containing a person). Off by default.

## `maskPersonalNames` (type: `boolean`):

Replaces names that contain a person with 'Farmacia – <Comune>' / 'Parafarmacia – <Comune>' and removes the VAT number of likely individuals. Off by default.

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

0 = no limit (about 28,000 active records for all of Italy).

## Actor input object example

```json
{
  "entityTypes": [
    "farmacia",
    "parafarmacia"
  ],
  "provinces": [
    "Milano"
  ],
  "onlyChains": false,
  "onlyWithCoordinates": false,
  "includeCeased": false,
  "enrichFvg": true,
  "excludeLikelyIndividuals": false,
  "maskPersonalNames": false,
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

Italian pharmacies and parapharmacies from the Ministry of Health open data (code, VAT, address, coordinates, chain and GDPR flags), stored in the default dataset.

# 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 = {
    "provinces": [
        "Milano"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("reckoning89/italian-pharmacies-directory").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 = { "provinces": ["Milano"] }

# Run the Actor and wait for it to finish
run = client.actor("reckoning89/italian-pharmacies-directory").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 '{
  "provinces": [
    "Milano"
  ]
}' |
apify call reckoning89/italian-pharmacies-directory --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,reckoning89/italian-pharmacies-directory"
        }
    }
}
```

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/Xa2xVEfb4iL8WgSa8/builds/PkgKtwCJp6wQDBBWA/openapi.json
