# Kyero.com | Only $1.5 | Search | Detail(s) | Agent(s) | Scraper (`memo23/kyero-cheerio`) Actor

Effortlessly extract detailed property data from Kyero.com with our advanced scraper. Whether you're analyzing the market or searching for the perfect home, this tool gives you fast, reliable access to listing prices, features, agent info, and more. Streamline your real estate workflow today!

- **URL**: https://apify.com/memo23/kyero-cheerio.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 33 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

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

### Overview

The Kyero.com Scraper is a powerful tool designed to extract comprehensive property data from Kyero.com. Whether you’re a real estate professional, property investor, or researcher, this scraper efficiently collects detailed information about properties listed for sale across Spain and other locations on Kyero.com.

Kyero.com is a popular real estate platform showcasing thousands of property listings, making it an ideal resource for anyone interested in buying or analyzing property markets.

### Features

- **Extract Property Listings**: Scrape data for properties, including price, location, size, and other attributes.
- **Comprehensive Agent Scraping**: Extract detailed agent/agency information including:
  - Agent/agency name and contact details
  - Number of listed properties
  - Agent location and service areas
  - Profile images and agency logos
  - Social media and website links
  - Agent descriptions and specialties
- **Property-Agent Relationships**: Automatically link properties to their respective agents/agencies.
- **Image and Media URLs**: Extract URLs for property images and other media.
- **Flexible Input Options**: Start scraping from any URL including:
  - Property listing pages
  - Agent/agency profile pages
  - Search result pages
- **Customizable Scraping Settings**: Adjust settings for concurrency, retries, and maximum items to tailor the scraping process.
- **Built-in Proxy Support**: Ensure reliable and anonymous scraping using proxy configurations.

### How to Use

1. **Set Up**: Ensure you have an Apify account and access to the Apify platform.
2. **Provide Start URLs**: Add URLs from Kyero.com to define your scraping scope.
3. **Adjust Scraper Settings**: Modify settings such as `maxItems`, `maxConcurrency`, and `minConcurrency` based on your needs.
4. **Run the Scraper**: Start the scraper on the Apify platform.
5. **Download Results**: Export the scraped data in your preferred format, such as JSON, CSV, or Excel.

### Input Configuration

Here is an example of how to set up the input for the Kyero.com Scraper:

```json
{
    "startUrls": [
        "https://www.kyero.com/en/spain-property-for-sale-0l55529?sort=created_at_desc",
        "https://www.kyero.com/en/spain/estate-agents/malaga-l29",
        "https://www.kyero.com/en/spain/estate-agents",
        "https://www.kyero.com/en/spain/estate-agents/profile/lucas-fox-a-dils-company-a1135",
        "https://www.kyero.com/en/spain-property-for-sale-0l55529?sort=created_at_desc",
        "https://www.kyero.com/en/spain-apartments-long-let-1l55529g1?page=1",
        "https://www.kyero.com/en/spain-property-for-sale-0l55529?sort=created_at_desc"
    ],
    "maxItems": 30,
    "maxConcurrency": 50,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
}
```

#### Input Fields Explanation

- **Start URLs** (`startUrls`): URLs to start scraping from. For example, search result pages or property listings.
- **Max Items** (`maxItems`): Maximum number of listings to scrape in a single run. Default is `30`.
- **Max Concurrency** (`maxConcurrency`): Maximum number of concurrent requests. Default is `50`.
- **Min Concurrency** (`minConcurrency`): Minimum number of concurrent requests. Default is `1`.
- **Max Request Retries** (`maxRequestRetries`): Number of times the scraper retries a failed request before stopping. Default is `100`.
- **Proxy Configuration** (`proxy`): Configure proxy settings for anonymity and reliability.

### Output Structure For Listing

The scraper produces a list of property listings with detailed information. Below is an example of the output:

```json
{
    "id": 18450828,
    "name": "Apartment in El Masnou, Barcelona province",
    "price": 345000,
    "price_formatted": "€345,000",
    "reference_no": "VBM2412004",
    "location_id": 4281,
    "images": [
        "https://d2hhh2ewuz3i8z.cloudfront.net/crop/960x720/https://production-kyero-property-images.s3.amazonaws.com/18450/18450828/353852749_original.jpg",
        "https://d2hhh2ewuz3i8z.cloudfront.net/crop/960x720/https://production-kyero-property-images.s3.amazonaws.com/18450/18450828/353852750_original.jpg"
    ],
    "path": "/en/property/18450828-apartment-for-sale-el-masnou",
    "bedroom_count": 3,
    "bathroom_count": 1,
    "built_m2": 79,
    "plot_m2": 0,
    "short_html_description": "Near transport, near beach, close to all amenities, dining area, dining room with fireplace, fireplace, terrace, independent kitchen, lounge, clos...",
    "property_type": {
        "id": 1,
        "key": "apartment",
        "property_group_id": 1
    },
    "agent": {
        "id": 9598,
        "name": "aProperties Real Estate Barcelona",
        "logo_url": "https://d2hhh2ewuz3i8z.cloudfront.net/fit/125x125/https://production-kyero-property-images.s3.amazonaws.com/agents/9/9598.jpg?checksum=b33c77fb6092e1e606067eba75626fb2",
        "path": "/en/estate-agents-spain/aproperties-real-estate-barcelona-a9598"
    },
    "virtual_tour_url": null,
    "video_url": null,
    "remote_viewing_enabled": false,
    "feature_keys": [
        "lift",
        "terrace",
        "near_shops",
        "near_beach",
        "near_transport",
        "pool",
        "resale_only"
    ],
    "badges": [],
    "primary_badge": "near_beach",
    "plot_m2_formatted": "0 m²",
    "build_m2_formatted": "79 m²",
    "advertiser": "aProperties Real Estate Barcelona",
    "address": "El Masnou, Costa Garraf / Maresme, Barcelona province, Catalonia, Spain",
    "bedrooms": "3",
    "bathrooms": "1",
    "buildSize": "79",
    "description": null,
    "photos": [
        "https://d2hhh2ewuz3i8z.cloudfront.net/crop/480x320/https://production-kyero-property-images.s3.amazonaws.com/18450/18450828/353852749_original.jpg",
        "https://d2hhh2ewuz3i8z.cloudfront.net/crop/480x320/https://production-kyero-property-images.s3.amazonaws.com/18450/18450828/353852750_original.jpg"
    ]
}
```

#### Output Fields Explanation

- **id**: Unique identifier for the property listing.
- **name**: Title of the property.
- **price**: Price of the property.
- **price\_formatted**: Human-readable price format.
- **reference\_no**: Reference number assigned by the agent or listing platform.
- **location\_id**: Location identifier for the property.
- **images**: Array of image URLs.
- **path**: Relative URL to the property listing.
- **bedroom\_count**: Number of bedrooms.
- **bathroom\_count**: Number of bathrooms.
- **built\_m2**: Built area in square meters.
- **plot\_m2**: Plot area in square meters.
- **short\_html\_description**: Brief description of the property.
- **property\_type**: Object containing type and group ID of the property.
- **agent**: Information about the listing agent.
- **virtual\_tour\_url**: URL for the virtual tour, if available.
- **video\_url**: URL for a video of the property, if available.
- **remote\_viewing\_enabled**: Boolean indicating if remote viewing is supported.
- **feature\_keys**: Array of key features of the property.
- **badges**: Array of additional badges associated with the property.
- **primary\_badge**: The main badge for the property.
- **plot\_m2\_formatted**: Human-readable plot area.
- **build\_m2\_formatted**: Human-readable built area.
- **advertiser**: Name of the advertiser or listing agency.
- **address**: Full address of the property.
- **bedrooms**: Number of bedrooms as a string.
- **bathrooms**: Number of bathrooms as a string.
- **buildSize**: Built size in square meters as a string.
- **description**: Detailed description of the property, if available.
- **photos**: Array of photo URLs in a lower resolution.

### Agent Scraping

The scraper can extract comprehensive agent/agency information from Kyero.com. You can scrape agent data by:

1. **Direct Agent Profile URLs**: Provide direct links to agent/agency profiles
2. **Property Pages**: The scraper will automatically extract agent data from property listings
3. **Search Results**: Extract agents from search result pages

### Output Structure For Agent

Example agent data structure:

```json
{
    "name": "Developments.es",                           // Name of the agency/agent
    "logoUrl": "",                                     // URL of the agency's logo (if available)
    "coverPhotoUrl": "https://.../cover_photo_13102.jpg", // URL of the agency's cover photo
    "propertiesForSale": 871,                          // Number of properties currently listed for sale
    "languages": [                                     // List of languages spoken by the agency
        "English",
        "Dansk",
        "Deutsch",
        "Español",
        "Français",
        "Nederlands",
        "Norsk",
        "Svenska"
    ],
    "description": "Free updated access to...",        // Agency's description or tagline
    "address": "Oasis Business Center...",             // Full formatted address
    "email": "",                                      // Contact email (if available)
    "website": "https://www.kyero.com/...",           // Agency's website or profile URL
    "region": "Malaga",                               // Region/state where the agency is located
    "locality": "Marbella",                           // City/town where the agency is located
    "country": "ES",                                  // ISO country code
    "postalCode": "29600",                            // Postal/ZIP code
    "streetAddress": "Oasis Business Center, N-340, Km 183", // Street address
    "telephone": "+34919017059"                        // Contact phone number
}
```

#### Field Descriptions:

- **name**: The official name of the real estate agency or agent.
- **logoUrl**: Direct URL to the agency's logo image. May be empty if no logo is available.
- **coverPhotoUrl**: URL of the header/cover photo used on the agent's profile.
- **propertiesForSale**: Total number of active property listings associated with this agent/agency.
- **languages**: Array of languages supported by the agency for communication.
- **description**: Business description or tagline provided by the agent/agency.
- **address**: Complete formatted mailing address.
- **email**: Primary contact email address (if provided by the agent).
- **website**: Official website or Kyero profile URL for the agency.
- **region**, **locality**, **country**, **postalCode**, **streetAddress**: Structured address components.
- **telephone**: Primary contact phone number with country code.

### Explore More Scrapers

If you found the Kyero.com Scraper useful, check out other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to streamline your web scraping and automation needs.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/8oIzvIDTz8x58Mcyj/issues) section of this actor.
- If you need customization or have questions, contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- Need anything else scraped? Contact <muhamed.didovic@gmail.com>
- For API services of this scraper, contact: <muhamed.didovic@gmail.com>

# Actor input Schema

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

URLs to start with.

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

Maximum number of listings/items that will be scraped.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `enrichEmails` (type: `boolean`):

If enabled, finds a contact email for each result from its own website (or by discovering it from the name). Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Billed per contact email found; only charged when an email is returned, never for misses.

## `qualifyByPayment` (type: `boolean`):

Requires "Enrich with contact emails". Scans each business's website — reusing the pages already fetched for email discovery, so no extra cost or time — for payment processors and e-commerce platforms (Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more). Adds takesPayments (is this a real paying business?), paymentProcessors (which stack), stripeLiveKey (the public key if exposed) and paymentConfidence. Turn raw contacts into monetization-qualified leads. No extra charge — included with each enriched company.

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

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.kyero.com/en/spain-property-for-sale-0l55529?sort=created_at_desc"
  ],
  "maxItems": 30,
  "maxConcurrency": 50,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "enrichEmails": false,
  "qualifyByPayment": false
}
```

# 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 = {
    "startUrls": [
        "https://www.kyero.com/en/spain-property-for-sale-0l55529?sort=created_at_desc"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/kyero-cheerio").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 = { "startUrls": ["https://www.kyero.com/en/spain-property-for-sale-0l55529?sort=created_at_desc"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/kyero-cheerio").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 '{
  "startUrls": [
    "https://www.kyero.com/en/spain-property-for-sale-0l55529?sort=created_at_desc"
  ]
}' |
apify call memo23/kyero-cheerio --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8oIzvIDTz8x58Mcyj/builds/gbCYyu6QClrY2eIgG/openapi.json
