# Fotocasa.es $1💰 Buy, Rent & Property Details (`abotapi/fotocasa-es-scraper`) Actor

From $1/1K. Scrape Spain property listings from fotocasa.es. Get price, surface, rooms, baths, address, GPS, agency, phone, energy rating, photos and 140+ fields. Buy and rent, all regions, all property types.

- **URL**: https://apify.com/abotapi/fotocasa-es-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 listing scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Fotocasa.es Scraper

Extract property listings from **fotocasa.es**, Spain's leading property portal, at scale. Search by location and filters or paste direct search URLs, and get clean, structured records with price, surface, rooms, bathrooms, full address, GPS coordinates, agency and contact details, energy rating, photos and 140+ fields per listing. Forward-walking pagination, optional per-listing detail enrichment, and ready-to-use exports to your apps.

### Why This Scraper?

- **140+ fields per listing** - far more than typical alternatives, including both camelCase and snake_case field names so the output drops into any existing pipeline.
- **Buy and rent, every region, every property type** - flats, houses, duplexes, penthouses, studios, lofts, new construction, garages, offices, land and more.
- **Rich location data** - city, neighborhood, full address and precise latitude/longitude for every listing.
- **Agency and contact details** - agency name, alias, type, phone, and (with detail enrichment) agent name, email and listing reference.
- **Two input modes** - search by location with filters, or feed direct fotocasa.es search URLs.
- **Powerful filters** - price, rooms, bathrooms and surface ranges, plus operation, property type and sort order.
- **Export anywhere** - pipe results into Notion, Airtable, Linear or other apps via MCP connectors, with the full record always kept in the dataset.

### Data You Get

> Sample shape - values are illustrative placeholders, not from a live listing.

| Field | Example |
| --- | --- |
| id | 1_000000000 |
| propertyId | 000000000 |
| title | C/ de Ejemplo, Centro |
| rawPrice | 295000 |
| currency | EUR |
| pricePerSqm | 4538.46 |
| surface | 65 |
| rooms | 3 |
| baths | 2 |
| floor | 4 |
| propertyType | 2 |
| propertySubtype | 1 |
| operation | sale |
| city | Madrid |
| neighborhood | Centro |
| latitude | 40.4168 |
| longitude | -3.7038 |
| agencyName | Example Agency SL |
| phone | +34000000000 |
| reference | REF-00000 |
| energyCertificate | {"energyEfficiencyRatingType": "C"} |
| images | ["https://static.fotocasa.es/images/ads/0000?rule=original"] |
| url | https://www.fotocasa.es/es/comprar/vivienda/madrid-capital/centro/000000000/d |

### How to Use

Search a city for homes to buy:

```json
{
  "mode": "search",
  "locations": ["madrid-capital"],
  "operation": "comprar",
  "propertyType": "viviendas",
  "maxListings": 50
}
````

Search with filters and sorting:

```json
{
  "mode": "search",
  "locations": ["barcelona-capital"],
  "operation": "alquiler",
  "minPrice": 800,
  "maxPrice": 1500,
  "minRooms": 2,
  "sortBy": "price_asc",
  "maxListings": 100
}
```

Scrape direct URLs with full detail enrichment:

```json
{
  "mode": "url",
  "urls": ["https://www.fotocasa.es/es/comprar/viviendas/valencia-capital/todas-las-zonas/l"],
  "fetchDetails": true,
  "maxListings": 200
}
```

### Input Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| mode | string | `search` (location + filters) or `url` (direct URLs). |
| locations | array | Location slugs, e.g. `madrid-capital`, `barcelona-capital/centro`. Search mode only. |
| operation | string | `comprar` (buy) or `alquiler` (rent). Search mode only. |
| propertyType | string | Property category, e.g. `viviendas`, `pisos`, `casas`. Search mode only. |
| sortBy | string | `relevance`, `newest`, `price_asc`, `price_desc`, `surface_asc`, `surface_desc`. |
| minPrice / maxPrice | integer | Price range filter (EUR). |
| minRooms / maxRooms | integer | Rooms range filter. |
| minBaths / maxBaths | integer | Bathrooms range filter. |
| minSurface / maxSurface | integer | Surface range filter (m²). |
| urls | array | Direct search URLs. URL mode only; filter fields are ignored. |
| fetchDetails | boolean | Adds energy rating, full features, reference and contact from the listing detail page. Slower and increases cost per listing. |
| maxPages | integer | Max result pages to walk per search. |
| maxListings | integer | Max total listings. `0` = unlimited. |
| proxy | object | Proxy configuration. Residential proxy with a Spanish (ES) exit is enabled by default, which fotocasa.es requires for reliable access. |
| residentialCountries | array | Country codes used for the residential proxy. fotocasa.es requires a Spanish (ES) exit. |
| maxResidentialRequests | integer | Per-run residential request budget (default 10000). Set lower to cap cost, or `0` to disable. |
| backupProxyUrl | string | Optional last-resort failover proxy URL used when the Apify proxy is unavailable. |
| mcpConnectors | array | MCP connectors to forward a per-listing summary to: `notion`, `linear`, `airtable`, `apify`. The full record always stays in the dataset. |
| notionParentPageUrl | string | Notion page under which the new database is created (Notion connector only). |
| maxNotifyListings | integer | Max listings forwarded to MCP connectors per run (default 50). |

### Output Example

> Sample shape - values are illustrative placeholders, not from a live listing.

```json
{
  "id": "1_000000000",
  "propertyId": "000000000",
  "title": "C/ de Ejemplo, Centro",
  "rawPrice": 295000,
  "currency": "EUR",
  "pricePerSqm": 4538.46,
  "surface": 65,
  "rooms": 3,
  "baths": 2,
  "floor": "4",
  "propertyType": 2,
  "propertySubtype": 1,
  "operation": "sale",
  "transactionTypeId": 1,
  "city": "Madrid",
  "neighborhood": "Centro",
  "address": { "municipality": "Madrid", "province": "Madrid", "zipCode": "28000" },
  "latitude": 40.4168,
  "longitude": -3.7038,
  "agencyName": "Example Agency SL",
  "clientAlias": "Example Agency",
  "clientType": "professional",
  "phone": "+34000000000",
  "reference": "REF-00000",
  "energyCertificate": { "energyEfficiencyRatingType": "C" },
  "images": ["https://static.fotocasa.es/images/ads/0000?rule=original"],
  "photosCount": 12,
  "description": "Bright reformed home in a well-connected central area.",
  "url": "https://www.fotocasa.es/es/comprar/vivienda/madrid-capital/centro/000000000/d"
}
```

### Export to Your Apps (MCP Connectors)

Beyond the dataset, this Actor can send a condensed summary of each listing straight into the tools you already use, via Model Context Protocol (MCP) connectors. The full record is always kept in the dataset; the connector receives a readable summary (title plus key fields) per item.

Supported connectors: **Notion**, **Linear**, **Airtable**, and **Apify**.

1. Authorize the connector once under **Apify → Settings → Integrations**.
2. Select one or more in the `mcpConnectors` input.
3. *(Notion only)* Set `notionParentPageUrl` to the page the new database should be created under.
4. Optionally cap how many listings are forwarded with `maxNotifyListings` (default 50).

```json
{
  "mode": "search",
  "locations": ["madrid-capital"],
  "operation": "comprar",
  "maxListings": 50,
  "mcpConnectors": ["notion"],
  "notionParentPageUrl": "https://www.notion.so/your-workspace/Listings-0000"
}
```

# Actor input Schema

## `mode` (type: `string`):

Search by location/filters, or scrape a list of direct page URLs.

## `locations` (type: `array`):

Location slugs (Search mode only). Example: 'madrid-capital', 'barcelona-capital', 'valencia-provincia'. A zone may be appended like 'madrid-capital/centro'. Leave empty for all of Spain.

## `operation` (type: `string`):

Buy or rent (Search mode only).

## `propertyType` (type: `string`):

Property category (Search mode only).

## `sortBy` (type: `string`):

Result order (Search mode only).

## `minPrice` (type: `integer`):

Minimum price filter. Leave empty for no minimum.

## `maxPrice` (type: `integer`):

Maximum price filter. Leave empty for no maximum.

## `minRooms` (type: `integer`):

Minimum number of rooms.

## `maxRooms` (type: `integer`):

Maximum number of rooms.

## `minBaths` (type: `integer`):

Minimum number of bathrooms.

## `maxBaths` (type: `integer`):

Maximum number of bathrooms.

## `minSurface` (type: `integer`):

Minimum surface in square metres.

## `maxSurface` (type: `integer`):

Maximum surface in square metres.

## `urls` (type: `array`):

Multi-URL list of fotocasa.es search pages (URL mode only). Filter fields are ignored in this mode.

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

Adds energy certificate, full feature list, reference, agent/contact name and email from the listing detail page. Slower and increases cost per listing.

## `maxListings` (type: `integer`):

Maximum total listings to scrape. This is the run cap. Set 0 for unlimited.

## `maxPages` (type: `integer`):

Optional safety limit on result pages walked per search (~31 listings/page). This does NOT cap the run; leave empty (or 0) for unlimited and let Max items decide when to stop. Only set a value to hard-stop pagination earlier than Max items.

## `proxy` (type: `object`):

Proxy used for all requests. Residential proxy with a Spanish (ES) exit is enabled by default, which fotocasa.es requires for reliable access.

## `residentialCountries` (type: `array`):

Country codes used for the residential proxy. fotocasa.es requires a Spanish (ES) exit; change only if you have a specific reason.

## `maxResidentialRequests` (type: `integer`):

Caps how many requests may use the residential proxy in one run, to control cost. Once spent, the run auto-downgrades to the cheaper datacenter tier. Set 0 to disable the residential tier entirely.

## `backupProxyUrl` (type: `string`):

Optional. A full proxy URL used as a last-resort failover when the Apify proxy is unavailable (for example on a restricted plan). Leave blank to use the built-in default gateway.

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON. The complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "locations": [
    "madrid-capital"
  ],
  "operation": "comprar",
  "propertyType": "viviendas",
  "sortBy": "relevance",
  "urls": [
    "https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l"
  ],
  "fetchDetails": false,
  "maxListings": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  },
  "residentialCountries": [
    "ES"
  ],
  "maxResidentialRequests": 10000,
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `overview` (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 = {
    "locations": [
        "madrid-capital"
    ],
    "urls": [
        "https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "ES"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/fotocasa-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 = {
    "locations": ["madrid-capital"],
    "urls": ["https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "ES",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/fotocasa-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 '{
  "locations": [
    "madrid-capital"
  ],
  "urls": [
    "https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}' |
apify call abotapi/fotocasa-es-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Fotocasa.es $1💰 Buy, Rent & Property Details",
        "description": "From $1/1K. Scrape Spain property listings from fotocasa.es. Get price, surface, rooms, baths, address, GPS, agency, phone, energy rating, photos and 140+ fields. Buy and rent, all regions, all property types.",
        "version": "1.0",
        "x-build-id": "ftlc5AUajGvbFbhbY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~fotocasa-es-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-fotocasa-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/abotapi~fotocasa-es-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-fotocasa-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/abotapi~fotocasa-es-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-fotocasa-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "Search by location/filters, or scrape a list of direct page URLs.",
                        "default": "search"
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Location slugs (Search mode only). Example: 'madrid-capital', 'barcelona-capital', 'valencia-provincia'. A zone may be appended like 'madrid-capital/centro'. Leave empty for all of Spain.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "operation": {
                        "title": "Operation",
                        "enum": [
                            "comprar",
                            "alquiler"
                        ],
                        "type": "string",
                        "description": "Buy or rent (Search mode only).",
                        "default": "comprar"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "viviendas",
                            "pisos",
                            "casas",
                            "duplex",
                            "aticos",
                            "estudios",
                            "lofts",
                            "garajes",
                            "trasteros",
                            "locales",
                            "oficinas",
                            "naves",
                            "terrenos"
                        ],
                        "type": "string",
                        "description": "Property category (Search mode only).",
                        "default": "viviendas"
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "relevance",
                            "newest",
                            "price_asc",
                            "price_desc",
                            "surface_asc",
                            "surface_desc"
                        ],
                        "type": "string",
                        "description": "Result order (Search mode only).",
                        "default": "relevance"
                    },
                    "minPrice": {
                        "title": "Min Price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price filter. Leave empty for no minimum."
                    },
                    "maxPrice": {
                        "title": "Max Price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price filter. Leave empty for no maximum."
                    },
                    "minRooms": {
                        "title": "Min Rooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of rooms."
                    },
                    "maxRooms": {
                        "title": "Max Rooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of rooms."
                    },
                    "minBaths": {
                        "title": "Min Bathrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of bathrooms."
                    },
                    "maxBaths": {
                        "title": "Max Bathrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of bathrooms."
                    },
                    "minSurface": {
                        "title": "Min Surface (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum surface in square metres."
                    },
                    "maxSurface": {
                        "title": "Max Surface (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum surface in square metres."
                    },
                    "urls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Multi-URL list of fotocasa.es search pages (URL mode only). Filter fields are ignored in this mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full details",
                        "type": "boolean",
                        "description": "Adds energy certificate, full feature list, reference, agent/contact name and email from the listing detail page. Slower and increases cost per listing.",
                        "default": false
                    },
                    "maxListings": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total listings to scrape. This is the run cap. Set 0 for unlimited.",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Max Pages Per Search",
                        "minimum": 0,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Optional safety limit on result pages walked per search (~31 listings/page). This does NOT cap the run; leave empty (or 0) for unlimited and let Max items decide when to stop. Only set a value to hard-stop pagination earlier than Max items."
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy used for all requests. Residential proxy with a Spanish (ES) exit is enabled by default, which fotocasa.es requires for reliable access.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "ES"
                        }
                    },
                    "residentialCountries": {
                        "title": "Residential fallback countries",
                        "type": "array",
                        "description": "Country codes used for the residential proxy. fotocasa.es requires a Spanish (ES) exit; change only if you have a specific reason.",
                        "default": [
                            "ES"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResidentialRequests": {
                        "title": "Residential request budget",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Caps how many requests may use the residential proxy in one run, to control cost. Once spent, the run auto-downgrades to the cheaper datacenter tier. Set 0 to disable the residential tier entirely.",
                        "default": 10000
                    },
                    "backupProxyUrl": {
                        "title": "Backup proxy URL",
                        "type": "string",
                        "description": "Optional. A full proxy URL used as a last-resort failover when the Apify proxy is unavailable (for example on a restricted plan). Leave blank to use the built-in default gateway."
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON. The complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
