# Doctoralia Es Scraper (`unfenced-group/doctoralia-es-scraper`) Actor

Scrape doctor profiles from Doctoralia.es: name, specialty, rating, address, services, and coordinates.

- **URL**: https://apify.com/unfenced-group/doctoralia-es-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

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

## Doctoralia Es Scraper

![Doctoralia Es Scraper](https://api.apify.com/v2/key-value-stores/lJlifu6C8YQfZMPKE/records/doctoralia-es-scraper)

![Doctoralia ES Scraper](https://api.apify.com/v2/key-value-stores/EN6OEQXRvCEaBT2Iy/records/BANNER)

## Doctoralia ES — Doctor Profiles Scraper

Scrape doctor and specialist profiles from [Doctoralia.es](https://www.doctoralia.es) — Spain's leading medical directory. Extracts names, specialties, ratings, locations, services, and contact details.

### What it scrapes

Search by keyword, specialty, or location, or point it at specific profile or search URLs. Each run returns structured doctor profile data ready for analysis, lead generation, or healthcare market research.

#### Output fields

##### Always present

| Field | Type | Description |
|---|---|---|
| `name` | string | Doctor's full name including title (e.g. "Dr. Raimundo Gutiérrez Fonseca") |
| `profileUrl` | string | Full URL of the doctor's Doctoralia profile |
| `specializations` | string | Primary medical specialty or specialties |
| `subspecializations` | string | Sub-specialties listed in parentheses (null if none) |
| `city` | string | City derived from profile URL slug |
| `ratingScore` | number | Average rating score out of 5 (null if no reviews) |
| `reviewCount` | integer | Total number of patient reviews |
| `isVerified` | boolean | Whether the doctor has a verified profile badge |
| `scrapedAt` | string | ISO 8601 timestamp of when the profile was scraped |
| `sourceUrl` | string | The search/listing URL this profile was found on |

##### With `fetchDetails: true` (default)

| Field | Type | Description |
|---|---|---|
| `licenseNumber` | string | Spanish medical license number (Número de Colegiado) |
| `streetAddress` | string | Full street address of the clinic |
| `addressCity` | string | City from address itemprop |
| `postalCode` | string | Postal/ZIP code |
| `addressRegion` | string | Province or autonomous community |
| `addressCountry` | string | ISO country code (always "ES") |
| `latitude` | number | GPS latitude of the clinic |
| `longitude` | number | GPS longitude of the clinic |
| `ratingValue` | number | Aggregate rating value (may differ from list-level score) |
| `clinicName` | string | Name of the clinic or medical centre |
| `services` | array | List of medical services and procedures offered |
| `onlineConsultation` | boolean | Whether the doctor offers online consultations |
| `paymentMethods` | array | Accepted payment methods (e.g. ["Efectivo", "Tarjeta de crédito"]) |
| `insuranceCompanies` | array | Accepted insurance providers (null if none listed) |
| `answeredQuestions` | integer | Number of patient questions answered by the doctor |

#### Sample output record

```json
{
  "name": "Dr. Raimundo Gutiérrez Fonseca",
  "profileUrl": "https://www.doctoralia.es/raimundo-gutierrez-fonseca/otorrino-otorrino-infantil/madrid",
  "specializations": "Otorrino, Otorrino infantil",
  "subspecializations": "Orl oncológica, Cirugía de cabeza y cuello, Orl pediátrica",
  "city": "Madrid",
  "ratingScore": 5,
  "reviewCount": 168,
  "isVerified": true,
  "licenseNumber": "282839782",
  "streetAddress": "Paseo de la Habana 43, Chamartín, Madrid 28036",
  "postalCode": "28036",
  "addressRegion": "Madrid",
  "addressCountry": "ES",
  "latitude": 40.4539757,
  "longitude": -3.6844521,
  "clinicName": "Centro Medico Ruber Internacional",
  "services": ["Visita de tratamiento", "Miringotomia y colocación tubos drenaje"],
  "onlineConsultation": false,
  "paymentMethods": ["Efectivo", "Tarjeta de crédito"],
  "insuranceCompanies": null,
  "answeredQuestions": 161,
  "scrapedAt": "2026-05-31T12:00:00.000Z",
  "sourceUrl": "https://www.doctoralia.es/buscar?q=otorrino&loc=Madrid"
}
````

### Examples

**Search for cardiologists in Madrid:**

```json
{
  "searchQuery": "cardiólogo",
  "location": "Madrid",
  "maxResults": 50,
  "fetchDetails": true
}
```

**Get all psychiatrists in Barcelona with detail pages:**

```json
{
  "searchQuery": "psiquiatra",
  "location": "Barcelona",
  "maxResults": 200,
  "fetchDetails": true
}
```

**Scrape specific profile URLs directly:**

```json
{
  "startUrls": [
    { "url": "https://www.doctoralia.es/raimundo-gutierrez-fonseca/otorrino-otorrino-infantil/madrid" },
    { "url": "https://www.doctoralia.es/buscar?q=pediatra&loc=Sevilla" }
  ],
  "fetchDetails": true
}
```

**Daily feed — new profiles only:**

```json
{
  "searchQuery": "médico",
  "location": "Madrid",
  "maxResults": 50,
  "fetchDetails": false
}
```

### Pricing

**$1.50 per 1,000 profiles** with `fetchDetails: false`. With `fetchDetails: true`, each profile requires an additional page request, so cost scales with the number of profiles fetched.

Use the **Max results** cap to control your spend exactly.

### Technical details

- **Source:** doctoralia.es — Spain's largest doctor directory (DocPlanner Group)
- **Memory:** 512 MB
- **Retry:** Automatic retry on network errors, up to 3 attempts per request
- **Rate limiting:** 800ms delay between pages, 400ms between detail requests

### Additional services

Need a custom actor, additional filters, scheduled runs, or integration support?
Send an email to <info@unfencedgroup.nl> — we build on request.

# Actor input Schema

## `searchQuery` (type: `string`):

Doctor name, specialty, or condition to search for (e.g. 'cardiólogo', 'pediatra', 'Dr. García').

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

City or region to filter results (e.g. 'Madrid', 'Barcelona', 'Sevilla').

## `specialty` (type: `string`):

Filter by medical specialty slug as used on Doctoralia (e.g. 'cardiologo', 'psicologo').

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

Maximum number of doctor profiles to return.

## `fetchDetails` (type: `boolean`):

ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost).

## `startUrls` (type: `array`):

Optional list of specific Doctoralia.es URLs to scrape. Accepts doctor profile URLs or search result URLs. When provided, overrides keyword/location search.

## Actor input object example

```json
{
  "searchQuery": "",
  "location": "",
  "specialty": "",
  "maxResults": 100,
  "fetchDetails": true,
  "startUrls": []
}
```

# Actor output Schema

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

No description

# 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("unfenced-group/doctoralia-es-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/doctoralia-es-scraper").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 unfenced-group/doctoralia-es-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=unfenced-group/doctoralia-es-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Doctoralia Es Scraper",
        "description": "Scrape doctor profiles from Doctoralia.es: name, specialty, rating, address, services, and coordinates.",
        "version": "0.0",
        "x-build-id": "2YlcKaV5chEkrDvSZ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/unfenced-group~doctoralia-es-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-unfenced-group-doctoralia-es-scraper",
                "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/unfenced-group~doctoralia-es-scraper/runs": {
            "post": {
                "operationId": "runs-sync-unfenced-group-doctoralia-es-scraper",
                "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/unfenced-group~doctoralia-es-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-unfenced-group-doctoralia-es-scraper",
                "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": {
                    "searchQuery": {
                        "title": "Search keywords",
                        "type": "string",
                        "description": "Doctor name, specialty, or condition to search for (e.g. 'cardiólogo', 'pediatra', 'Dr. García').",
                        "default": ""
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or region to filter results (e.g. 'Madrid', 'Barcelona', 'Sevilla').",
                        "default": ""
                    },
                    "specialty": {
                        "title": "Specialty filter",
                        "type": "string",
                        "description": "Filter by medical specialty slug as used on Doctoralia (e.g. 'cardiologo', 'psicologo').",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of doctor profiles to return.",
                        "default": 100
                    },
                    "fetchDetails": {
                        "title": "Include full job details",
                        "type": "boolean",
                        "description": "ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost).",
                        "default": true
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional list of specific Doctoralia.es URLs to scrape. Accepts doctor profile URLs or search result URLs. When provided, overrides keyword/location search.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
