# Yaencontre Scraper - Spanish Property Listings (`igolaizola/yaencontre-scraper`) Actor

Find Spanish property listings on yaencontre.com for sale, rent, and business transfers. Search by city or coordinates, filter by property type, price, rooms, area, amenities, and rental duration, then export JSON, CSV, Excel-ready data, listing links, images, locations, prices, and contact details.

- **URL**: https://apify.com/igolaizola/yaencontre-scraper.md
- **Developed by:** [Iñigo Garcia Olaizola](https://apify.com/igolaizola) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 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.
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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Yaencontre Scraper — Spanish Real Estate Listings, Prices & Leads

Yaencontre scraper for extracting Spanish property listings from yaencontre.com for market research, property search, price tracking, investment analysis, and real estate lead generation. Find homes, apartments, commercial properties, and business transfers by city, province, district, neighborhood, or map coordinates.

> SEO keywords: **Yaencontre scraper**, **yaencontre.com data**, **Spanish real estate listings**, **property price API**, **real estate lead generation**, **Apify Actor**.

### 🤖 What does Yaencontre Scraper do?

Collect structured property data from Yaencontre and download it as JSON, CSV, or Excel-compatible data from your Apify dataset.

- **Search Spanish properties** for sale, rent, or business transfer
- **Filter listings** by property type, price, bedrooms, bathrooms, area, amenities, and characteristics
- **Target locations** by municipality, province, district, neighborhood, or coordinates
- **Capture property details** including titles, descriptions, prices, addresses, coordinates, photos, features, and contact information when available
- **Optionally fetch full listing details** and keep them in a `_details` field
- **Export real estate data** for reporting, valuation, monitoring, CRM enrichment, or custom applications

Great for real estate agencies, property investors, researchers, relocation services, marketplaces, and data teams.

### 💡 Why use Yaencontre data?

- 📈 **Track Spanish property prices** across Madrid, Barcelona, Valencia, Málaga, and other markets
- 🏠 **Discover investment opportunities** using price, area, room, amenity, and opportunity filters
- 🎯 **Build real estate lead lists** with listing links, locations, images, and available contact details
- 🔎 **Compare supply by neighborhood** and monitor changes in asking prices and inventory
- 📊 **Create property datasets** for market studies, valuation models, dashboards, and reports

### 🚀 How to use

1. Open **Yaencontre Scraper** in the Apify Store.
2. Enter a location such as `Madrid` in the prefilled location field.
3. Choose the operation, property type, filters, and maximum number of listings.
4. Click **Start** or launch the Actor through the Apify API or SDK.
5. Review the results in the Dataset tab or download them as JSON, CSV, or Excel-compatible data.

### 💳 Pricing

Apify's Free plan includes monthly credits for testing actors and smaller runs. Larger monitoring jobs and recurring data collection can use Apify's Personal or Business plans.

### 📝 Input parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `location` | string | Yes, unless coordinates are used | City, province, district, or neighborhood to search. The default example is `Madrid`. |
| `locationType` | enum | No | Scope for the location: `""` · `"municipality"` · `"province"` · `"district"` · `"neighborhood"`. Empty uses automatic selection. |
| `operation` | enum | No | `"sale"` · `"rent"` · `"businessTransfer"`. Defaults to sale. |
| `propertyType` | enum | No | `"building"` · `"flat"` · `"home"` · `"garage"` · `"house"` · `"land"` · `"commercialUnit"` · `"newDevelopment"` · `"office"` · `"premises"` · `"storage"` · `"business"` · `"apartment"` · `"penthouse"` · `"chalet"` · `"duplex"` · `"loft"` · `"townhouse"` · `"countryHouse"` · `"studio"` · `"villa"`. Defaults to flat. |
| `rentalDuration` | enum | No | For rental searches: `""` · `"longTerm"` · `"seasonal"` · `"holiday"`. |
| `sortBy` | enum | No | `"newest"` · `"relevance"` · `"highestPrice"` · `"lowestPrice"` · `"largestArea"` · `"smallestArea"`. |
| `fetchDetails` | boolean | No | Fetch additional information for every listing and add it under `_details`. This increases run time and usage. Defaults to `false`. |
| `minPrice` / `maxPrice` | integer | No | Minimum and maximum price. Use `0` for no limit. |
| `minBedrooms` / `minBathrooms` | integer | No | Minimum number of bedrooms and bathrooms. Use `0` for no minimum. |
| `minArea` / `maxArea` | integer | No | Minimum and maximum property area in square meters. Use `0` for no limit. |
| `amenities` | array | No | Select any combination of `airConditioning`, `furnished`, `elevator`, `centralHeating`, `chimney`, `garden`, `swimmingPool`, `parking`, `terrace`, `balcony`, `neighborhoods`, `cityCenter`, `beachfront`, `urbanization`, `bargain`, `luxury`, `privateSeller`, `secondHand`, `banks`, `priceReduced`, `urgent`, `newDevelopment`, `homeStaging`, `floorPlan`, `virtualTour`, `threeDTour`, and `video`. |
| `latitude` / `longitude` | number | No | Coordinates for a map-area search. Provide both together. |
| `radiusKm` | integer | No | Search radius around coordinates in kilometers. Defaults to `20`. |
| `pageSize` | integer | No | Listings requested per page, from `1` to `100`. Defaults to `20`. |
| `maxItems` | integer | Yes | Maximum number of listings to save. Use `0` for all available listings; negative values are treated as `0`. The default is `100`. |

**🏙️ Find apartments for sale in Madrid**

```json
{
  "location": "Madrid",
  "operation": "sale",
  "propertyType": "flat",
  "minPrice": 200000,
  "maxPrice": 500000,
  "minBedrooms": 2,
  "amenities": ["elevator", "balcony"],
  "sortBy": "newest",
  "maxItems": 100
}
```

**🌊 Find long-term rentals near Valencia**

```json
{
  "operation": "rent",
  "propertyType": "apartment",
  "rentalDuration": "longTerm",
  "latitude": 39.4699,
  "longitude": -0.3763,
  "radiusKm": 10,
  "amenities": ["terrace", "airConditioning"],
  "fetchDetails": true,
  "maxItems": 50
}
```

### 📊 Output and results

Each dataset item is a property listing. The Overview table highlights the most useful fields for browsing and exporting.

- **Reference and title** — listing identifier and headline
- **Operation and property type** — sale, rent, transfer, and property category
- **Price and area** — price, price per square meter, surface area, rooms, and bathrooms
- **Location** — qualified address, municipality information, latitude, and longitude
- **Media** — image links, floor plans, videos, 360° tours, and other available media
- **Property information** — description, characteristics, labels, status, and new-development indicator
- **Contact information** — owner or agency name, type, and phone details when available
- **Listing link** — direct link to the property on yaencontre.com
- **`_details`** — included only when `fetchDetails` is enabled; contains additional information for the listing

Example result:

```json
{
  "reference": "38311-112160119",
  "title": "Piso luminoso con terraza en Madrid",
  "operation": "BUY",
  "family": "FLAT",
  "price": 325000,
  "area": 82,
  "rooms": 3,
  "bathrooms": 2,
  "address": {
    "qualifiedName": "Chamartín, Madrid",
    "geoLocation": {"lat": 40.4621, "lon": -3.6762}
  },
  "url": "https://yaencontre.com/venta/piso/inmueble-38311-112160119",
  "images": [
    {"slug": "38311/38311-123456789.jpg", "url": "https://media.yaencontre.com/img/photo/w1024/38311/38311-123456789.jpg"}
  ],
  "owner": {"name": "Agencia inmobiliaria", "type": "AGENCY"},
  "_details": {
    "reference": "38311-112160119",
    "energyCertificate": "A"
  }
}
```

### 🧭 Tips and common recipes

- **Search a whole province:** set `locationType` to `"province"`.
- **Search a specific district:** set `locationType` to `"district"` and provide a city or municipality as the location.
- **Compare prices:** run the same location with `sortBy` set to `"lowestPrice"`, `"highestPrice"`, or `"relevance"`.
- **Collect richer records:** enable `fetchDetails` when you need additional listing information; leave it disabled for faster, lower-cost searches.
- **Use coordinates for flexible areas:** provide both `latitude` and `longitude`, then adjust `radiusKm`.
- **Combine amenities:** select multiple values in `amenities` to narrow the search.

### ⚖️ Legal and ethical considerations

- Use the data responsibly and comply with yaencontre.com's terms, applicable laws, and robots or access policies.
- Respect privacy rules, including GDPR requirements, when handling contact details or personal information.
- Avoid excessive request volumes and use reasonable limits for recurring monitoring.
- Store and share listing data securely, especially when it contains contact information.
- This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Yaencontre. All trademarks belong to their respective owners.

### ❓ FAQ

**Can I search by city or neighborhood?**

Yes. Enter a city, province, district, or neighborhood in `location`. Use `locationType` when you want to specify the scope explicitly.

**Can I search around a point on the map?**

Yes. Provide both `latitude` and `longitude`, then set `radiusKm` to the desired search radius.

**What does `fetchDetails` do?**

It adds additional listing information under `_details`. Because it collects one additional record per listing, it takes longer and uses more resources.

**Can I download the results as CSV or Excel?**

Yes. Apify datasets can be viewed and downloaded as JSON, CSV, or Excel-compatible data after the run.

**Does the Actor return images and listing links?**

Yes. Results include direct listing links and ready-to-use image URLs when those fields are available.

### 🛟 Support

Need a custom field, filter, or export workflow? Open an issue or contact me at https://igolaizola.com/#contact

# Actor input Schema

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

City, province, or neighborhood to search. Use coordinates for an arbitrary point.

## `locationType` (type: `string`):

Optionally choose whether the location means a municipality, province, district, or neighborhood.

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

Choose whether to find properties for sale, rent, or business transfer.

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

Type of property to find.

## `rentalDuration` (type: `string`):

For rental searches, choose long-term, seasonal, or holiday accommodation.

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

How results should be ordered.

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

Fetch additional information for each listing and add it under \_details. This uses one extra request per listing.

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

Only include listings at or above this price.

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

Only include listings at or below this price.

## `minBedrooms` (type: `integer`):

Minimum number of bedrooms.

## `minBathrooms` (type: `integer`):

Minimum number of bathrooms.

## `minArea` (type: `integer`):

Minimum property area in square meters.

## `maxArea` (type: `integer`):

Maximum property area in square meters.

## `amenities` (type: `array`):

Optional equipment, characteristics, opportunities, and visualization filters.

## `latitude` (type: `number`):

Latitude for a coordinate search.

## `longitude` (type: `number`):

Longitude for a coordinate search.

## `radiusKm` (type: `integer`):

Radius around the coordinates, in kilometers.

## `pageSize` (type: `integer`):

Number of listings requested at a time.

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

Maximum number of listings to save. Use 0 for all available listings. Negative values are treated as 0.

## Actor input object example

```json
{
  "location": "Madrid",
  "locationType": "",
  "operation": "sale",
  "propertyType": "flat",
  "rentalDuration": "",
  "sortBy": "newest",
  "fetchDetails": false,
  "minPrice": 0,
  "maxPrice": 0,
  "minBedrooms": 0,
  "minBathrooms": 0,
  "minArea": 0,
  "maxArea": 0,
  "radiusKm": 20,
  "pageSize": 20,
  "maxItems": 100
}
```

# 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 = {
    "location": "Madrid"
};

// Run the Actor and wait for it to finish
const run = await client.actor("igolaizola/yaencontre-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 = { "location": "Madrid" }

# Run the Actor and wait for it to finish
run = client.actor("igolaizola/yaencontre-scraper").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 '{
  "location": "Madrid"
}' |
apify call igolaizola/yaencontre-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,igolaizola/yaencontre-scraper"
        }
    }
}

```

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/sCXR228A3gIgxBzkw/builds/nLbAIzlq22hEXfmXJ/openapi.json
