# Properstar $0.8💰 (.com|.ch) Search | Detail | Agent | Agency (`memo23/properstar-leads-scraper`) Actor

💰$0.80 per 1,000 results. Unlock the full potential of global real estate data with the Properstar.com Scraper! Whether you're tracking market trends, building a portfolio, or exploring investment opportunities, this scraper delivers unparalleled access to listings, prices, agent details, and media

- **URL**: https://apify.com/memo23/properstar-leads-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 68 total users, 3 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Overview

The Properstar Scraper is a cutting-edge tool for extracting detailed property data from Properstar (e.g. `properstar.com`, `properstar.ch`). Whether you're a real estate professional, investor, or researcher, this scraper simplifies the process of collecting essential property information from one of the top international real estate platforms.

Properstar is a global real estate marketplace connecting buyers, sellers, and agents, featuring thousands of property listings across different regions and price ranges.

### Features

- **Extract Property Listings**: Retrieve detailed data such as prices, locations, property descriptions, and images.
- **Agency Scraping**: Scrape all listings directly from agency pages (e.g., `https://www.properstar.ch/agence/gerances-giroud-sa/6434092`).
- **Agent Scraping**: Scrape agent profile information directly from agent pages (e.g., `https://www.properstar.ch/agent-immobilier/valerie-prelaz1`).
- **Gather Agent Information**: Collect details about listing agents or agencies.
- **Image and Media Links**: Download URLs for property images and media.
- **Configurable Settings**: Customize crawling parameters like concurrency, retries, and item limits.
- **Proxy Support**: Ensure anonymous and reliable scraping with built-in 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 Properstar.com to define your scraping scope. The scraper supports:

- Search result pages (e.g., `https://www.properstar.com/spain/buy/apartment-house`)
- Direct property search URLs (e.g., `https://www.properstar.com/find/24002 Colonial Parkway,Katy,TX, USA`)
- Agency pages (e.g., `https://www.properstar.ch/agence/gerances-giroud-sa/6434092`)
- Agent pages (e.g., `https://www.properstar.ch/agent-immobilier/valerie-prelaz1`)

3. **Adjust Scraper Settings**: Customize settings like `maxItems`, `maxConcurrency`, and `minConcurrency` as per your requirements.
4. **Run the Scraper**: Execute the scraper on the Apify platform.
5. **Download Results**: Export the scraped data in your preferred format (JSON, CSV, Excel).

### Input Configuration

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

```json
{
    "startUrls": [
        "https://www.properstar.com/spain/buy/apartment-house",
        "https://www.properstar.com/find/24002 Colonial Parkway,Katy,TX, USA"
    ],
    "maxItems": 30,
    "maxConcurrency": 50,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
}
```

#### Input Fields Explanation

- **Start URLs** (`startUrls`): List of URLs to start scraping from, such as search result pages or property listings.
- **Max Items** (`maxItems`): Maximum number of listings to scrape in one run. Default is `30`.
- **Max Concurrency** (`maxConcurrency`): Maximum number of pages processed simultaneously. Default is `50`.
- **Min Concurrency** (`minConcurrency`): Minimum number of pages processed simultaneously. Default is `1`.
- **Max Request Retries** (`maxRequestRetries`): Number of retries for failed requests before stopping. Default is `100`.
- **Proxy Configuration** (`proxy`): Proxy settings for anonymity and reliability during scraping.

### Sample Output Listing

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

```json
{
    "url": "https://www.properstar.com/listing/102145932",
    "id": 102145932,
    "title": "House for sale in Alhaurín de la Torre, Spain",
    "price": {
        "show": true,
        "values": [
            {
                "perSquareMeter": 1892,
                "currencyId": "EUR",
                "type": "Original",
                "value": 795000
            },
            {
                "perSquareMeter": 2003.0384356820334,
                "currencyId": "USD",
                "type": "Converted",
                "value": 841657.270807197
            }
        ]
    },
    "rooms": 8,
    "bedrooms": 8,
    "bathrooms": 4,
    "pictures": {
        "number": 51,
        "items": [
            {
                "url": "https://res.listglobally.com/listings/5828420/102145932/2fe45a03ecc9725e7d778c087768cb0c",
                "displayOrder": 1
            },
            {
                "url": "https://res.listglobally.com/listings/5828420/102145932/1558b9dd348d11964fb4c4c2d0b7122f",
                "displayOrder": 2
            }
        ]
    },
    "medias": {
        "number": 1,
        "items": [
            {
                "type": {
                    "id": "Video",
                    "name": "Video"
                },
                "url": "https://www.youtube.com/watch?v=VH-n39XnJ_0",
                "displayOrder": 1
            }
        ]
    },
    "location": {
        "placeId": "ChIJe4pwjNr6cg0Rtk4xIclUBuU",
        "countryISO": "ES",
        "city": "Alhaurín de la Torre",
        "postcode": "29130",
        "showAddress": false,
        "showPostcode": true,
        "latitude": 36.659895,
        "longitude": -4.559864,
        "geocodeLevel": "City"
    },
    "area": {
        "unit": {
            "id": "SquareMeter",
            "name": "m²"
        },
        "living": 420
    },
    "contactUsers": [
        {
            "type": "MainAgencyContact",
            "email": "new@strand.es",
            "firstName": "new@strand.es",
            "address": "avenida Playas del Duque, 1",
            "postCode": "29660",
            "countryISO": "ES",
            "mainLanguage": "es",
            "userId": 874322
        }
    ],
    "description": "Located in the elevated neighborhood of El Lagar, in Alhaurín de la Torre, this house is an exceptional opportunity for those looking for space and tranquility. Perfectly suited for large families, this property combines a serene residential setting with easy access to all essential amenities and just a 10-minute drive to the nearest beach, Plaza Mayor shopping centre and Malaga airport.",
    "advertiser": "STRAND PROPERTIES"
}
```

#### Output Fields Explanation

- **url**: The direct URL of the property listing.
- **id**: Unique identifier for the property.
- **title**: Title or name of the property.
- **price**: Detailed price information including per square meter and currency.
- **rooms**: Total number of rooms in the property.
- **bedrooms**: Number of bedrooms.
- **bathrooms**: Number of bathrooms.
- **pictures**: An object containing the number and details of image URLs.
- **medias**: Additional media items, such as videos.
- **location**: Geographic details including city, postcode, latitude, and longitude.
- **area**: Living area size in square meters.
- **contactUsers**: Details of the contact person or agency.
- **description**: Full property description.
- **advertiser**: Name of the advertising agency or person.

### Sample Output Agency Scraping

When scraping an agency page, the scraper produces a list of detailed property listings managed by that agency. Below is an example of the output structure:

```json
{
    "id": 113532870,
    "title": "Spacious renovated 3.5 room apartment in Villarsiviriaux",
    "price": {
        "show": true,
        "values": [
            {
                "currencyId": "CHF",
                "type": "Original",
                "value": 540000
            },
            {
                "currencyId": "USD",
                "type": "Converted",
                "value": 700877.26
            }
        ]
    },
    "rooms": 3.5,
    "area": {
        "values": [
            {
                "original": true,
                "unit": {
                    "id": "SquareMeter",
                    "name": "m²"
                },
                "living": 89,
                "terrace": 16.5
            },
            {
                "unit": {
                    "id": "SquareFoot",
                    "name": "Square foot"
                },
                "living": 957.99,
                "terrace": 177.60
            }
        ],
        "unit": {
            "id": "SquareMeter",
            "name": "m²"
        },
        "living": 89,
        "terrace": 16.5
    },
    "location": {
        "placeId": "ChIJrUY6kER7jkcRg0HLgh31O3Y",
        "countryISO": "CH",
        "city": "Villarsiviriaux",
        "postcode": "1694",
        "address1": "Route de la Condémine 9",
        "showAddress": true,
        "showPostcode": true,
        "latitude": 46.699624,
        "longitude": 7.012629,
        "geocodeLevel": "Coordinates"
    },
    "contactUsers": [
        {
            "contactId": 359659,
            "type": "MainAgencyContact",
            "email": "a.sanial@gerances-giroud.ch",
            "firstName": "Arnaud",
            "lastName": "Sanial",
            "address": "Rue du Centre2",
            "postCode": "1752",
            "locality": "Villars-sur-Glâne",
            "countryISO": "CH",
            "phone": "+410796458921",
            "mobile": "+410796458921",
            "mainLanguage": "fr",
            "spokenLanguages": ["fr"]
        }
    ],
    "pictures": {
        "number": 12,
        "items": [
            {
                "url": "https://files-api.properstar.com/api/v2/files/80725e58-cd25-4234-8f5c-631b333ae01f/1",
                "displayOrder": 1
            }
        ]
    },
    "description": "...",
    "features": {
        "rooms": 3.5
    },
    "resources": {
        "pictures": {
            "number": 12,
            "items": [
                {
                    "url": "https://files-api.properstar.com/api/v2/files/80725e58-cd25-4234-8f5c-631b333ae01f/1",
                    "displayOrder": 1
                }
            ]
        }
    },
    "updatedAt": "2026-02-03T17:51:09.31",
    "url": "https://www.properstar.ch/listing/113532870"
}
```

#### Agency Scraping Fields Explanation

- **id**: Unique identifier for the property listing.
- **title**: The title or headline of the property listing.
- **price**: Object containing pricing details.
  - **show**: Boolean indicating if the price is publicly visible.
  - **values**: Array of price values in different currencies.
    - **currencyId**: Currency code (e.g., CHF, USD).
    - **type**: Type of price (e.g., "Original", "Converted").
    - **value**: Numerical value of the price.
- **rooms**: Total number of rooms in the property.
- **area**: Object containing area measurements.
  - **values**: Array of area values in different units (m², sq ft).
    - **original**: Boolean indicating if this is the original unit.
    - **unit**: Object with unit ID and name.
    - **living**: Living area size.
    - **terrace**: Terrace area size (if applicable).
    - **land**: Land area size (if applicable).
  - **unit**: Primary unit used for display.
  - **living**: Primary living area value.
  - **terrace**: Primary terrace area value.
- **location**: Detailed geographic information.
  - **placeId**: Google Places ID or internal location ID.
  - **countryISO**: ISO country code (e.g., CH).
  - **city**: Name of the city/town.
  - **postcode**: Postal code.
  - **address1**: Street address (if available).
  - **showAddress**: Boolean indicating if address is public.
  - **showPostcode**: Boolean indicating if postcode is public.
  - **latitude**: Geographic latitude.
  - **longitude**: Geographic longitude.
  - **geocodeLevel**: Precision of the geocoding (e.g., "Coordinates", "City").
- **contactUsers**: Array of contact persons for the listing.
  - **contactId**: Internal ID of the contact.
  - **type**: Type of contact (e.g., "MainAgencyContact").
  - **email**: Contact email address.
  - **firstName**: First name of the agent.
  - **lastName**: Last name of the agent.
  - **address**: Agent/Agency address.
  - **postCode**: Agent/Agency postal code.
  - **locality**: Agent/Agency locality/city.
  - **countryISO**: Agent/Agency country code.
  - **phone**: Contact phone number.
  - **mobile**: Contact mobile number.
  - **mainLanguage**: Primary language of the contact.
  - **spokenLanguages**: Array of languages spoken.
- **pictures**: Object containing image information.
  - **number**: Total count of pictures.
  - **items**: Array of picture objects.
    - **url**: Direct URL to the image file.
    - **displayOrder**: Order in which the image should be displayed.
- **description**: Full text description of the property.
- **features**: Object containing specific property features (e.g., specific room counts).
- **resources**: Nested object containing media resources (redundant with `pictures` but maintained for structure).
- **updatedAt**: Timestamp of the last update to the listing.
- **url**: Direct URL to the property listing page.

### Sample Output Agent Scraping

When scraping an agent page, the scraper currently produces the agent's profile information. Below is an example of the output structure:

```json
{
    "id": 1652737,
    "status": "Registered",
    "agency": {
        "accountId": 6287503,
        "name": "Comptoir Immobilier Lausanne",
        "userIsAgent": true
    },
    "accountsRoles": [
        {
            "accountId": 6287510,
            "role": "Agent"
        }
    ],
    "email": "valerie.prelaz@comptoir-immo.ch",
    "updateDate": "2026-02-17T18:49:16.867",
    "fullName": "Valérie PRÉLAZ",
    "avatar": "https://res.listglobally.com/users/1652737/4223fe9f96437be3e0a263db3abadcd3",
    "countryISO": "CH",
    "mainLanguage": "fr",
    "spokenLanguages": [
        "fr"
    ],
    "slug": "valerie-prelaz1",
    "url": "https://www.properstar.ch/agent-immobilier/valerie-prelaz1"
}
```

#### Agent Scraping Fields Explanation

- **id**: Unique identifier for the agent user.
- **status**: Status of the agent's account (e.g., "Registered").
- **agency**: Object containing details about the agent's agency.
  - **accountId**: The account ID of the agency.
  - **name**: Name of the agency.
- **fullName**: The full name of the agent.
- **email**: The contact email of the agent.
- **avatar**: URL to the agent's profile picture.
- **countryISO**: ISO country code associated with the agent.
- **mainLanguage**: The agent's primary language code.
- **spokenLanguages**: Array of languages spoken by the agent.
- **slug**: The URL slug for the agent's profile.
- **url**: The source URL of the agent page.

### Sample Output Broker Data

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

```json
{
        "agent": {
            "id": 1699250,
            "fullName": "ANDRES PATIÑO",
            "email": "andres.patino@expcolombiaci.co",
            "phone": "+57(314)422-8004",
            "avatar": "https://res.listglobally.com/users/1699250/48325522c0eb2c3dbdf4cd53ee2e5dc1",
            "countryISO": "CO",
            "language": "es",
            "slug": "andres-patino",
            "socialContacts": [
                {
                    "type": "WebSite",
                    "contact": "https://pydinmobiliaria.funnels.mastertools.com/"
                },
                {
                    "type": "Facebook",
                    "contact": "https://www.facebook.com/andresp777"
                },
                {
                    "type": "Instagram",
                    "contact": "https://www.instagram.com/pydinmobiliaria"
                }
            ],
            "agency": {
                "id": 6439959,
                "name": [
                    {
                        "language": "es",
                        "text": "EXP Colombia"
                    }
                ]
            },
            "lastUpdated": "2025-08-13T01:27:53.86"
        },
        "listings": [
            {
                "id": 108902346,
                "reference": "8594448",
                "title": "Lot in Flanders Great Opportunity",
                "description": "",
                "price": {},
                "location": {
                    "city": "Flandes"
                },
                "features": {},
                "resources": {
                    "imageCount": 18,
                    "mainImage": "https://res.listglobally.com/listings/6440033/108902346/2c9f07b1e587610d57e56e38396a7a1f"
                }
            },
            ...
        ],
        "stats": {
            "totalListings": 6,
            "activeListings": 0,
            "lastUpdated": "2025-08-13T08:34:37.988Z"
        },
        "metadata": {
            "source": "properstar.com",
            "scrapedAt": "2025-08-13T08:34:37.989Z"
        }
    }
```

#### Broker Data Fields Explanation

##### Agent Information

- **agent**: Contains comprehensive information about the real estate agent
  - **id**: Unique identifier for the agent in the system
  - **fullName**: Full legal name of the agent (e.g., "ANDRES PATIÑO")
  - **email**: Professional contact email address of the agent
  - **phone**: Direct contact phone number with country code
  - **avatar**: URL to the agent's profile picture
  - **countryISO**: ISO 3166-1 alpha-2 country code where the agent operates (e.g., "CO" for Colombia)
  - **language**: Primary language code used by the agent (e.g., "es" for Spanish)
  - **slug**: URL-friendly version of the agent's name for web addresses
  - **socialContacts**: Array of social media profiles and websites
    - **type**: Platform type (e.g., "WebSite", "Facebook", "Instagram")
    - **contact**: Direct URL to the social media profile or website
  - **agency**: Information about the agent's affiliated real estate agency
    - **id**: Unique identifier for the agency
    - **name**: Localized agency names with language codes
      - **language**: Language code (e.g., "es" for Spanish)
      - **text**: Agency name in the specified language
  - **lastUpdated**: ISO 8601 timestamp of when the agent's profile was last updated

##### Property Listings

- **listings**: Array of property listings managed by the agent
  - **id**: Unique identifier for the property listing
  - **reference**: Internal reference number used by the agency
  - **title**: Marketing title of the property listing
  - **description**: Detailed description of the property (may be empty)
  - **price**: Object containing pricing information (may be empty if not specified)
  - **location**: Geographic information about the property
    - **city**: City or municipality where the property is located
  - **features**: Property characteristics and amenities (may be empty)
  - **resources**: Media resources associated with the listing
    - **imageCount**: Total number of images available for the property
    - **mainImage**: URL of the primary/featured image for the listing

##### Statistics

- **stats**: Summary statistics about the agent's portfolio
  - **totalListings**: Total number of properties listed by the agent
  - **activeListings**: Number of currently active/published listings
  - **lastUpdated**: ISO 8601 timestamp of when statistics were last calculated

##### Metadata

- **metadata**: Information about the data collection process
  - **source**: Source website of the data (e.g., "properstar.com")
  - **scrapedAt**: ISO 8601 timestamp of when the data was collected

### Explore More Scrapers

If you found the Properstar.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/4sdPPHPfyo1aCreJd/issues) section of this actor.
- For further assistance, contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or a full dataset: <muhamed.didovic@gmail.com>
- Need other platforms scraped? Contact <muhamed.didovic@gmail.com>
- For API services of this scraper, reach out to <muhamed.didovic@gmail.com>

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/properstar-leads-scraper`).

**Purpose:** Extract property listings and agent/agency contact data from Properstar (properstar.com and country domains) — search-result, agency, and agent URLs are all supported.

**Minimal input:**

```json
{
  "startUrls": ["https://www.properstar.com/spain/buy/apartment-house"],
  "maxItems": 10
}
```

**Output (property listing):** url, id, title, price {show, values \[{currencyId, type, value, perSquareMeter}]}, rooms, bedrooms, bathrooms, area {unit, living, terrace}, location {countryISO, city, postcode, latitude, longitude, geocodeLevel}, pictures {number, items \[{url, displayOrder}]}, medias, contactUsers \[{type, email, firstName, lastName, phone, mobile, countryISO, mainLanguage}], description, advertiser. Agent URLs return a profile row (id, fullName, email, agency, countryISO, spokenLanguages, slug, url); agency URLs return listing rows; broker pages return an agent object plus listings\[] and stats.

**Behaviors an agent should know:**

- All input is URL-driven via `startUrls`: paste search-result, agency (`/agence/...`), or agent (`/agent-immobilier/...`) URLs; the output shape follows the URL type.
- Always set `maxItems` (default 1000); a broad search URL pages through thousands of listings.
- `contactUsers` and agent rows expose agency emails and phone numbers already present in Properstar's public data.
- `enrichEmails` (default false) is opt-in and adds contactEmail + contactWebsite, billed only per email found.
- The actor routes through its own built-in residential proxy; leave `proxy` empty unless overriding.
- Pay-per-event billing — see the Pricing tab on the actor page.

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Properstar SA or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available property-listing and agent-profile pages — no authenticated endpoints, paid features, or content behind the properstar.com login wall. Users are responsible for ensuring their use complies with properstar.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

### SEO Keywords

properstar scraper, scrape properstar, properstar.com scraper, properstar api, Apify properstar, real estate scraper, property listings scraper, real estate agent scraper, realtor contact scraper, property data export, real estate lead generation, agent email scraper, international property data, real estate market analysis, property investment research, listing agent data, property portal scraper, housing market data, real estate leads, real estate intelligence

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

## `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.properstar.com/spain/buy/apartment-house"
  ],
  "maxItems": 1000,
  "maxConcurrency": 50,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "enrichEmails": 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.properstar.com/spain/buy/apartment-house"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/properstar-leads-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 = { "startUrls": ["https://www.properstar.com/spain/buy/apartment-house"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/properstar-leads-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 '{
  "startUrls": [
    "https://www.properstar.com/spain/buy/apartment-house"
  ]
}' |
apify call memo23/properstar-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/properstar-leads-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/4sdPPHPfyo1aCreJd/builds/QIjbfIljiDR3dG37x/openapi.json
