# Propertybook Scraper - Zimbabwe Property Listings & Prices (`sian.agency/propertybook-property-scraper`) Actor

Scrape propertybook.co.zw: USD prices, beds, baths, stand sizes, features, photos and agencies for houses, stands, flats and commercial property in Zimbabwe.

- **URL**: https://apify.com/sian.agency/propertybook-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.32 / 1,000 property listings

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

## Propertybook Scraper - Zimbabwe Property Listings & Prices

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Property24](https://img.shields.io/badge/Store-Property24-0B5394)](https://apify.com/sian.agency/property24-property-scraper?fpr=sian) [![Private Property](https://img.shields.io/badge/Store-Private%20Property-E4002B)](https://apify.com/sian.agency/privateproperty-property-scraper?fpr=sian) [![Ikman.lk](https://img.shields.io/badge/Store-Ikman.lk%20Property-1AE392)](https://apify.com/sian.agency/ikman-property-scraper?fpr=sian)

#### Zimbabwe's biggest property portal as a clean table: about 7,000 adverts, USD prices, every town

##### For analysts, agencies, developers and diaspora buyers who need Harare and Bulawayo as rows, not browser tabs

### 🔎 What is the Propertybook Zimbabwe Property Scraper — and when should you use it?

The **Propertybook Zimbabwe Property Scraper** turns public propertybook.co.zw adverts from anywhere in Zimbabwe into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Zimbabwean sale and rental adverts as rows. The asking price comes back as a number with its currency (almost always US dollars) and the period for rents. Every search row carries the suburb, area and town, bedrooms, bathrooms, the stand or floor size as the agent entered it, a thumbnail, the listing agency and the advert address. Open each advert in full and you also get the description, the general, external and internal feature lists, room counts, every photo and the last-updated date.

**Use something else when:** you need a different portal or country. Use [Property24 Scraper](https://apify.com/sian.agency/property24-property-scraper?fpr=sian) for Property24 in Zimbabwe, South Africa, Zambia, Botswana, Namibia, Mozambique and Kenya. Use [Private Property Scraper](https://apify.com/sian.agency/privateproperty-property-scraper?fpr=sian) for South Africa's Private Property portal. This actor reads propertybook.co.zw only: houses, flats, townhouses, cottages, stands, farms and commercial property, for sale and to rent. Agent phone numbers and emails are not collected, and there are no GPS coordinates. The site shows what is advertised now, so there is no sold-price history.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/propertybook-property-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want Zimbabwe property listings and asking prices from propertybook.co.zw using the Apify Actor `sian.agency/propertybook-property-scraper`.

Use it when I need: Zimbabwean sale and rental adverts as rows. The asking price comes back as a number with its currency (almost always US dollars) and the period for rents. Every search row carries the suburb, area and town, bedrooms, bathrooms, the stand or floor size as the agent entered it, a thumbnail, the listing agency and the advert address. Open each advert in full and you also get the description, the general, external and internal feature lists, room counts, every photo and the last-updated date.

Don't use it when: you need a different portal or country — use property24-property-scraper or privateproperty-property-scraper instead.

How to call it: set `listingType` to `for-sale` or `to-rent`, `propertyType` to one of the site's categories (`houses`, `flats-apartments`, `townhouses-clusters`, `residential-stands`, `commercial`, `offices` and more, or empty for all), and `location` to a place path from the site's own list: a town (`harare`), a Harare or Bulawayo area (`harare/harare-north`) or a suburb (`harare/harare-north/borrowdale`); empty means the whole country. Narrow with `minPrice`, `maxPrice` and `minBedrooms`. `includeDetails` opens each advert for features and photos, for an extra charge per advert. To expand adverts you already have, set `operation` to `detail` and pass `listingUrls`.

Start with this input:
{
  "operation": "search",
  "listingType": "for-sale",
  "propertyType": "houses",
  "location": "harare/harare-north",
  "maxResults": 50
}

Ask me which town or suburb to cover, sale or rent, which property type, and whether the full feature lists and photos are worth the extra per-advert charge, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Pull houses for sale in Borrowdale and Mount Pleasant and compare the median asking price per bedroom.*
- *List residential stands for sale in Ruwa with size and price, sorted by price per square metre.*
- *Find 3-bedroom houses to rent in Harare North under 2,000 US dollars a month, with photos and features.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/propertybook-property-scraper.md](https://apify.com/sian.agency/propertybook-property-scraper.md).

### 📋 Overview

**Propertybook Scraper reads propertybook.co.zw, Zimbabwe's most-visited property portal.** Pick a town, an area or a suburb and you get its adverts as rows: price and currency, suburb, bedrooms, bathrooms, stand size, agency and photos.

**What you get:**

- ✅ **The whole portal**: about 5,900 adverts for sale and 1,000 to rent, from 106 towns and 428 suburbs.
- 🏙️ **Harare and Bulawayo in depth**: pick a town, an area such as Harare North, or one suburb such as Borrowdale.
- 💵 **Prices you can compute with**: the number, the currency and the rent period sit in separate columns.
- 📐 **Stands and land**: residential, commercial and industrial stands with the size the agent entered.
- 📄 **Full adverts on request**: description, feature lists (borehole, solar, title deeds, walled), room counts and every photo.
- 💰 **Pay per advert**: you pay for the rows you get. Adverts your filters drop cost nothing.

### ✨ Features

- 🔍 **Search by place**: towns, Harare and Bulawayo areas, and suburbs from the site's own location index.
- 🏠 **16 property types**: houses, flats, townhouses, cottages, stands, farms, offices, shops, warehouses and more.
- 🏷️ **Sale or rent**: rents come back with `pricePeriod` set to `month`.
- 🔎 **Price and bedroom filters**: minimum and maximum price, minimum bedrooms.
- 🏢 **Agency on every row**: the agency name and its Propertybook page, ready for market-share counts.
- 🖼️ **Photos**: a thumbnail on every search row and every photo when you open adverts in full.
- 🔗 **Paste a page**: drop in a Propertybook search address and the actor reads it.
- 📊 **Run report**: each run writes a short report listing the adverts, the charges and a fix for anything that failed.

### 🎬 Quick Start

Choose sale or rent, a property type and a place, then press Start. The actor reads the result pages in order and saves one row per advert. A bare run returns 20 adverts for sale in Harare.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~propertybook-property-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"listingType": "for-sale", "propertyType": "houses", "location": "harare/harare-north/borrowdale", "maxResults": 50}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick sale or rent and a property type

Leave the type on All property to get everything in the place you choose.

#### Step 2: Pick a place

Choose a town (Harare, Bulawayo, Gweru), an area (Harare North) or a suburb (Borrowdale) from the list. Start typing to find it, or pick All of Zimbabwe.

#### Step 3: Press Start

Set Max listings to how many adverts you want and run it.

**A few minutes later you will have:**

- Every advert with its price, currency and location split into suburb, area and town
- Bedrooms, bathrooms and size where the advert states them
- The agency and the advert link for each row

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` (default) reads result pages; `detail` opens the advert addresses you paste |
| `listingType` | string | No | `for-sale` (default) or `to-rent` |
| `propertyType` | string | No | Empty for all, or `houses`, `flats-apartments`, `townhouses-clusters`, `residential-stands`, `commercial`, `offices` and more |
| `location` | string | No | Place path from the site's list: `harare`, `harare/harare-north`, `harare/harare-north/borrowdale`. Default `harare`; empty for the whole country |
| `maxResults` | integer | No | How many adverts to return. Default 20 |
| `minPrice` / `maxPrice` | integer | No | Price band in the advert's currency. Rents are per month |
| `minBedrooms` | integer | No | Keep adverts with at least this many bedrooms |
| `includeDetails` | boolean | No | Open every advert for the description, features and all photos |
| `searchUrls` | array | No | Propertybook search addresses to read instead of the fields above |
| `listingUrls` | array | No | Advert addresses for the `detail` operation |

**Search example:**

```json
{
  "operation": "search",
  "listingType": "to-rent",
  "propertyType": "houses",
  "location": "harare/harare-north",
  "maxPrice": 2500,
  "minBedrooms": 3,
  "maxResults": 100
}
```

**Detail example:**

```json
{
  "operation": "detail",
  "listingUrls": [
    { "url": "https://www.propertybook.co.zw/listings/for-sale/5-bedroom-house-avondale-harare-54018" }
  ]
}
```

### 📊 Output

Every advert is one row with up to **42 fields**. The most useful ones:

| Field | Type | Description |
|-------|------|-------------|
| `propertyTitle` | string | The advert title, for example "House to Rent in Borrowdale" |
| `price` | number | Asking price or monthly rent |
| `currency` | string | Almost always `USD` |
| `pricePeriod` | string | `month` for rents, empty for sale prices |
| `suburb` / `region` / `city` | string | Suburb, area (Harare and Bulawayo only) and town |
| `bedrooms` / `bathrooms` | integer | As stated on the advert |
| `size` / `sizeUnit` / `sizeText` | number / string | Stand or floor size and unit, plus the text exactly as shown |
| `propertyType` | string | House, Flat/Apartment, Residential Stand, Office and so on |
| `agencyName` / `agencyUrl` | string | The listing agency and its Propertybook page |
| `thumbnail` / `photos` | string / array | Main photo, and every photo when the advert is opened in full |
| `generalFeatures` / `externalFeatures` / `internalFeatures` | array | Feature lists from the advert page |
| `listingId` | string | The agency's reference code |
| `lastUpdated` | string | Date the advert was last updated |
| `url` | string | The advert address |

**Example row (advert opened in full):**

```json
{
  "thumbnail": "https://images.propertybook.co.zw/full/14928_1592396132_pPW18i.webp",
  "listingId": "54018",
  "propertyId": "7696",
  "propertyTitle": "5 Bedroom House for Sale in Avondale",
  "url": "https://www.propertybook.co.zw/listings/for-sale/5-bedroom-house-avondale-harare-54018",
  "dealType": "for-sale",
  "propertyType": "House",
  "price": 750000,
  "currency": "USD",
  "priceText": "USD 750,000",
  "suburb": "Avondale",
  "region": "Harare North",
  "city": "Harare",
  "bedrooms": 5,
  "bathrooms": 3,
  "garages": 2,
  "storeys": 2,
  "boreholes": 1,
  "generalFeatures": ["Cottage", "Generator", "Internet Connection", "Reliable Zesa"],
  "externalFeatures": ["Electric Fence", "Swimming Pool", "Tennis Court", "Walled/Fenced"],
  "photoCount": 20,
  "agencyName": "Laws Real Estate",
  "lastUpdated": "2025-12-29",
  "status": "success",
  "_operation": "search"
}
```

### 🎯 Use Cases & Examples

#### 1. Harare asking-price index

**Property analysts track what sellers ask, suburb by suburb.**
**Input:** houses for sale in Harare North, 500 adverts. **Output:** price, bedrooms, stand size and suburb per advert. **Use:** a monthly median asking price per suburb.

#### 2. Rental yield screens

**Investors compare rent with price before they buy.**
**Input:** the same suburb twice, once for sale and once to rent. **Output:** asking prices and monthly rents. **Use:** gross yield by suburb for Harare and Bulawayo.

#### 3. Stand and land supply tracking

**Developers watch how much serviced land is on offer.**
**Input:** residential stands for sale in Ruwa, Norton or Harare. **Output:** stand size, price and suburb. **Use:** price per square metre and a weekly count of new stands.

#### 4. Agency market share

**Agencies want to know who holds the stock in their patch.**
**Input:** all property in one town. **Output:** the agency on every advert. **Use:** a count of adverts per agency by suburb.

#### 5. Diaspora buyer research

**Zimbabweans abroad buy and rent at home without visiting first.**
**Input:** houses to rent or for sale with full details on. **Output:** photos, features and prices. **Use:** a shortlist the family can review in a spreadsheet.

#### 6. Commercial property scouting

**Businesses looking for offices, shops or warehouses in Harare and Bulawayo.**
**Input:** offices or warehouses to rent in a town. **Output:** size, monthly rent and location. **Use:** a site-selection shortlist.

### 🔌 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/propertybook-property-scraper').call({
  listingType: 'for-sale',
  propertyType: 'houses',
  location: 'harare/harare-north/borrowdale',
  maxResults: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/propertybook-property-scraper').call(
    run_input={'listingType': 'to-rent', 'location': 'bulawayo', 'maxResults': 100}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['propertyTitle'], item.get('price'))
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~propertybook-property-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"listingType": "for-sale", "propertyType": "residential-stands", "location": "ruwa", "maxResults": 50}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: a weekly schedule
2. **HTTP Request**: call the actor with your town and property type
3. **Process**: keep the adverts that are new since last week
4. **Action**: append them to a Google Sheet or post them to Slack

### 💰 Performance & Pricing

#### FREE plan

- **20 adverts** per run, with every field
- Enough to check a town or a suburb before a bigger pull

#### PAID plans

- **Unlimited** adverts per run, up to the whole portal
- You pay per advert returned, plus a small fee when a run starts
- Opening adverts in full costs one extra charge per advert, and only when you turn it on

A search page yields 10 to 17 adverts, and the actor reads a page about every three seconds. 1,500 Harare adverts took seven and a half minutes in testing; all of Harare for sale (about 3,500) takes around 20.

🔗 [See the current prices](https://apify.com/sian.agency/propertybook-property-scraper?fpr=sian)

### ❓ FAQ

**Q: Do I need an API key, a login or a proxy?**
A: No. Pick a deal, a property type and a place, then press Start.

**Q: Which places does it cover?**
A: All of Zimbabwe: the site's 106 towns, the areas of Harare and Bulawayo, and about 420 suburbs, all in the location list. Pick All of Zimbabwe for the whole country.

**Q: How many adverts can one search return?**
A: Everything the site lists for that place. All of Harare for sale is about 3,500 adverts, and the whole site holds about 7,000.

**Q: Why are prices in US dollars?**
A: Zimbabwean property is advertised almost entirely in US dollars. The currency is read from each advert and kept in its own column.

**Q: Do I get the agent's phone number?**
A: No. The site hides it behind a click, and this actor does not collect personal contact details. You get the agency name and its Propertybook page.

**Q: Why does a stand show a size in hectares that looks wrong?**
A: Sizes come back exactly as the advert prints them, in `sizeText`, and split into `size` and `sizeUnit`. Some agents type square metres into a hectare field. The description usually states the real figure.

**Q: What does a run cost?**
A: A small start fee plus one charge per advert returned. Opening adverts in full adds one charge per advert. Adverts your price or bedroom filter drops are free.

**Q: Is there GPS?**
A: No. The site's map view is closed to automated access, so each row carries suburb, area and town instead.

### 🛠️ Troubleshooting

**"… is not a town, area or suburb"**

- Pick the place from the location list in the input form.
- Through the API, send the place's path, for example `gweru/gweru/riverside` (lowercase, hyphens, town first).

**A search returns nothing**

- Nothing may be advertised for that combination today. Set Property type to All property or widen the place.

**"This advert is no longer listed"**

- The advert was sold, let or taken down. Run the search again for live adverts. You were not charged for it.

**Fewer rows than Max listings**

- The place has fewer adverts than you asked for, or your price and bedroom filters removed the rest.

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

Propertybook is a trademark of Propertybook (Pvt) Ltd. This actor is not affiliated with, endorsed by, or sponsored by Propertybook.

### 💬 Support

- 🐛 Something wrong or missing? Open an issue on the [Issues tab](https://apify.com/sian.agency/propertybook-property-scraper/issues)
- 🌟 Useful? [Leave a review](https://apify.com/sian.agency/propertybook-property-scraper/reviews)
- 🛍️ More tools in the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian)
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/propertybook-property-scraper/changelog.md

# Actor input Schema

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

Property Search reads the result pages for the deal, property type and place below. Property Detail opens the advert addresses you paste further down, one charge per advert.

## `listingType` (type: `string`):

For sale is the larger side, about 5,900 adverts. To rent holds about 1,000, priced per month.

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

The site's own categories. Residential stands and houses are the two biggest for-sale groups. All property returns every type in the place you pick.

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

Pick a town, a Harare or Bulawayo area, or a suburb from Propertybook's own location list. Start typing to search it. Via the API, send the place's path, for example harare, harare/harare-north or harare/harare-north/borrowdale; empty means the whole country.

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

How many adverts to return. Free accounts stop at 20. A search page holds about 10 regular adverts, and all of Harare for sale is about 3,500.

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

Drop adverts cheaper than this, in the advert's own currency (almost always US dollars). Rents are per month. Applied after each page is read, so a narrow band still reads every page of the place.

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

Drop adverts dearer than this. Leave empty for no ceiling.

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

Keep adverts with at least this many bedrooms. Adverts that state no bedroom count (stands, offices) are dropped when this is set.

## `includeDetails` (type: `boolean`):

Opens every matching advert for the full description, feature lists, room counts, every photo and the last-updated date. Adds one Property Detail charge per advert.

## `searchUrls` (type: `array`):

Paste Propertybook search pages instead of using the fields above, for example https://www.propertybook.co.zw/houses/to-rent/harare/harare-north/borrowdale. Only the address path is used; filter settings after the ? are ignored.

## `listingUrls` (type: `array`):

Advert addresses for Property Detail, for example https://www.propertybook.co.zw/listings/for-sale/5-bedroom-house-avondale-harare-54018.

## Actor input object example

```json
{
  "operation": "search",
  "listingType": "for-sale",
  "propertyType": "",
  "location": "harare",
  "maxResults": 20,
  "includeDetails": false,
  "searchUrls": [],
  "listingUrls": []
}
```

# Actor output Schema

## `propertybookListings` (type: `string`):

Every listing this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "search",
    "listingType": "for-sale",
    "propertyType": "",
    "location": "harare",
    "maxResults": 20,
    "includeDetails": false,
    "searchUrls": [],
    "listingUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/propertybook-property-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 = {
    "operation": "search",
    "listingType": "for-sale",
    "propertyType": "",
    "location": "harare",
    "maxResults": 20,
    "includeDetails": False,
    "searchUrls": [],
    "listingUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/propertybook-property-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 '{
  "operation": "search",
  "listingType": "for-sale",
  "propertyType": "",
  "location": "harare",
  "maxResults": 20,
  "includeDetails": false,
  "searchUrls": [],
  "listingUrls": []
}' |
apify call sian.agency/propertybook-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/propertybook-property-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/xOUX3ubqaBf5ktiY4/builds/4gaq8edZ8OeDj6dJV/openapi.json
