# Wasalt Property Search Scraper (`alexist/wasalt-property-search-scraper`) Actor

Scrape residential properties from Wasalt.sa with detailed information including location, amenities, pricing, verification status, and 40+ data fields. Perfect for property investors, real estate analysts, market researchers, and PropTech platforms operating in Saudi Arabia.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## Wasalt Property Search Scraper: Extract Saudi Real Estate Data at Scale

***

### What Is Wasalt.sa?

Wasalt.sa is Saudi Arabia's leading property portal, hosting thousands of active real estate listings across residential, commercial, and land segments. The platform serves as a primary marketplace where sellers, agents, and investors list properties with rich details including photos, specifications, pricing, and contact information. Manually extracting property data from Wasalt is laborious and error-prone — the **Wasalt Property Search Scraper** automates bulk data collection from search results pages, delivering clean, structured property records instantly.

***

### Overview

The **Wasalt Property Search Scraper** extracts property listings from Wasalt.sa search result pages, transforming raw property data into machine-readable records. It is designed for:

- **Real estate investors** analyzing market trends and property values in Saudi Arabia
- **Property aggregators** building comprehensive property databases
- **Market researchers** studying residential and commercial real estate sectors
- **Real estate platforms** feeding data into property comparison tools or dashboards
- **Data analysts** conducting competitive pricing and market analysis

Key strengths include configurable pagination, support for filtered searches (by city, property type, transaction type), reliable error handling, and detailed property attributes including verification status, amenities, and financial metrics like ROI predictions.

***

### Input Format

The scraper accepts a JSON configuration object specifying which Wasalt search pages to scrape:

```json
{
  "urls": [
    "https://wasalt.sa/ar/sale/search?cityId=273&countryId=1&propertyFor=sale&type=residential&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

#### Input Parameters

| Field | Type | Description | Example |
|---|---|---|---|
| `urls` | Array | List of Wasalt search result page URLs to scrape | `["https://wasalt.sa/ar/sale/search?..."]` |
| `max_items_per_url` | Integer | Maximum number of properties to extract per URL (max 200) | `200` |
| `ignore_url_failures` | Boolean | If `true`, continue scraping if some URLs fail to load | `true` |

**URL Structure Tips:**

- Wasalt URLs include filters: `cityId` (city code), `propertyFor` (sale/rent), `type` (residential/commercial), `page` (results page)
- Example: `cityId=273` = Riyadh; adjust for other cities
- The scraper extracts all properties visible on the search results page up to `max_items_per_url`

***

### Output Format

**Sample output**

```json
{
  "video_thumbnail": "https://assets.wasalt.com/properties/5874316/images/e57f2c15-186a-46f9-9c7c-5cbea0236076_thumbnail.jpg",
  "lead_contact_info": {
    "ar_message_body": "للتواصل مع حمد ابراهيم حمد بن عبيد, يرجى إدخال رقم جوالك ",
    "owner_name": "حنان عبدالسلام الجاسم",
    "ar_message_title": "تسجيل الدخول",
    "en_message_title": "Login to your account",
    "en_message_body": "To contact حمد ابراهيم حمد بن عبيد, please fill in your details "
  },
  "property_owner": {
    "user_avatar": null,
    "company_name": "",
    "rega_adv_lic_no": "7200986352",
    "user_capacity": "individual_broker",
    "rega_adv_lic_date": "2026-05-28T21:00:00.000Z",
    "en_name": "HANAN ABDULSALAM A ALJASSIM",
    "email": null,
    "res_employee": "حمد ابراهيم حمد بن عبيد",
    "company_logo": "users/241462/profile/null",
    "ar_name": "حنان عبدالسلام الجاسم",
    "rega_authorization_number": null,
    "en_user_role": "Authorized Broker",
    "ar_user_role": "وسيط مفوض",
    "posted_as": 11,
    "name": "حنان ",
    "rega_advertiser_number": null,
    "rega_adv_name": "حنان عبدالسلام الجاسم",
    "cr_no": "",
    "managed_by": "حنان",
    "show_interest_cta": false
  },
  "is_rega_prop": true,
  "external_video_link": "https://cdn.wasalt.com/production/properties/348226/videos/e57f2c15-186a-46f9-9c7c-5cbea0236076.mp4",
  "created_at": "2026-05-29T13:19:01.105Z",
  "score": 100,
  "is_approx_location": true,
  "reservation": null,
  "id": 5874316,
  "scoring_data": {
    "property_relevance_listing_complete": "0.00",
    "property_relevance_engagement": "0.00",
    "property_relevance_seller_score": "0.00",
    "property_relevance_freshness": "0.00",
    "property_relevance_deficit": 1,
    "property_relevance_persona": "0.00",
    "property_relevance_recency": 0,
    "total_score": 100
  },
  "slug": "91a2c6ae-9b7c-4586-8703-2ff8ddf5173e",
  "updated_at": "2026-07-18T19:14:27.518Z",
  "feature_amenities": [
    {
      "name": "حوش"
    },
    {
      "name": "موقف سيارة داخلي"
    }
  ],
  "published_at": "2026-05-29T13:20:56.217Z",
  "verification_status": {
    "rega": {
      "is_pawned": false,
      "obligations_on_the_property": ""
    },
    "wathiq": {
      "is_condtrained": null,
      "is_halt": null,
      "is_pawned": null,
      "is_testament": null
    }
  },
  "street_info": [
    {
      "facing_type_id": 688,
      "ar": {
        "facing": "ثلاثة شوارع"
      },
      "street_width": null,
      "en": {
        "facing": "3 Streets"
      },
      "id": 383864,
      "icon_class": "street"
    }
  ],
  "package_data": {
    "subs_pkg": "premium-listing"
  },
  "dar_reference": "605413",
  "unit_reference": "241462-d43be048-4f00-458a-a5af-819c502a24ed",
  "is_verified": false,
  "is_auction": false,
  "is_updated": true,
  "rega_raw_info": {
    "property_age": "جديد",
    "land_number": "311",
    "notes": null,
    "is_halted": false,
    "end_date": "02/12/2026",
    "borders": {
      "south_limit_length_char": "أحد عشر   متر   و  أربعون  سنتيمتر ",
      "east_limit_name": ":",
      "north_limit_name": ":",
      "north_limit_length_char": "3.15 + 2.7 + 4.1",
      "south_limit_name": ":",
      "south_limit_description": " ارتداد 2 ثم ارتداد 1 ثم قطعة رقم 63 و القطعة 312 ",
      "west_limit_description": " الوحدة رقم 4 / 2  و مصعد ",
      "north_limit_description": " ممرات 1  و الوحدة رقم 2 / 2 ",
      "east_limit_description": " منور ثم ارتداد 3 ثم ارتداد 2 ثم العقار 7274 و العقار 7264 و العقار 7254 ",
      "west_limit_name": ":",
      "east_limit_length_char": "7.3 + 1 + 5.65",
      "west_limit_length_char": "3.85 + 0.05 + 4.6 + 3.1 + 1.8"
    },
    "number_of_rooms": 3,
    "advertisement_type": "بيع",
    "guarantees_and_their_duration": "",
    "location_description_on_m_o_j_deed": "حي القدس بمدينة الرياض  مساحة الوحدة من الأرض 66.34 متر   وتختص من المنافع والأجزاء المشتركة بمساحة 52.38 متر ",
    "advertiser_name": "حنان عبدالسلام عبدالله الجاسم",
    "ad_license_number": "7200986352",
    "is_testment": false,
    "street_width": 0,
    "main_land_use_type_name": "استعمال مختلط",
    "ad_license_url": "https://eservicesredp.rega.gov.sa/public/OfficesBroker/ElanDetails/08debd85-1bad-4dd3-8107-b0576ae342bd",
    "property_type": "شقة",
    "compliance_with_the_saudi_building_code": null,
    "rer_borders": [],
    "brokerage_and_marketing_license_number": "1200016591",
    "property_price": 1190000,
    "property_face": "",
    "responsible_employee_phone_number": "0556460382",
    "rer_constraints": null,
    "land_total_price": null,
    "land_total_annual_rent": null,
    "ad_source": "wasalt",
    "is_pawned": false,
    "obligations_on_the_property": "لا يوحد",
    "ownership_transfer_fee_type": null,
    "creation_date": "29/05/2026",
    "advertiser_id": "1066806777",
    "plan_number": "2938",
    "property_area": 117.42,
    "phone_number": "0556460382",
    "channels": [
      "منصة مرخصة"
    ],
    "property_usages": [],
    "deed_number": "460002523943",
    "location": {
      "district_code": "3526",
      "city": "الرياض",
      "city_code": "21282",
      "postal_code": "13214",
      "additional_number": "3633",
      "latitude": "24.751130288810778",
      "city_id": "84c36906-d8e6-3a66-02e6-2fc1dd7fecff",
      "region_code": "1",
      "district_id": "73a53ed6-83b5-3fa2-7ab1-62923a2ddb20",
      "region_id": "9d51fcb2-6e33-877a-48fc-85787e9e7eaf",
      "street": "أحمد بن محمد السديري",
      "district": "القدس",
      "building_number": "7236",
      "region": "منطقة الرياض",
      "longitude": "46.754607607581555"
    },
    "red_zone_type_name": "لا يوجد حظر",
    "responsible_employee_name": "حمد ابراهيم حمد بن عبيد",
    "property_utilities": [
      "كهرباء",
      "مياه",
      "صرف صحي"
    ],
    "is_constrained": false,
    "title_deed_type_name": "صك إلكتروني"
  },
  "roi_prediction": null,
  "rega_moj_desc": "حي القدس بمدينة الرياض  مساحة الوحدة من الأرض 66.34 متر   وتختص من المنافع والأجزاء المشتركة بمساحة 52.38 متر ",
  "source_type_id": 580,
  "auction_id": null,
  "full_dar_reference": "241462-SAU-BU-605413",
  "classification_data": [
    {
      "classification_score": 0.699999988079071,
      "classification_name": "Others",
      "name": "9ee9343c-eefb-4305-a852-9afa5f6e37a0.jpg"
    }
  ],
  "prop_identity_type_id": 95,
  "location": {
    "lon": "46.753974399999976",
    "lat": "24.749989300909327"
  },
  "property_files": {
    "images": [
      "9ee9343c-eefb-4305-a852-9afa5f6e37a0.jpg"
    ],
    "brochure": [],
    "floor_plans": [],
    "video_urls": [
      {
        "thumbnail": "https://assets.wasalt.com/properties/5874316/images/2a1bd12d-53d2-45e2-b6a4-782484427734_thumbnail.jpg",
        "type": "video",
        "content": "https://cdn.wasalt.com/production/properties/348226/videos/2a1bd12d-53d2-45e2-b6a4-782484427734.mp4",
        "video_type": "manual-video",
        "icon_class": "play"
      }
    ]
  },
  "attributes": [
    {
      "key": "noOfBedrooms",
      "name": "غرف نوم",
      "value": 3,
      "image": "https://assets.wasalt.com/others/icons/noofbedroomsbnw.png",
      "icon_class": "bedroom"
    },
    {
      "key": "noOfBathrooms",
      "name": "دورات مياه",
      "value": 3,
      "image": "https://assets.wasalt.com/others/icons/noofbathroomsbnw.png",
      "icon_class": "bathroom"
    },
    {
      "key": "builtUpArea",
      "name": "مسطحات البناء",
      "value": "117",
      "image": "https://assets.wasalt.com/others/icons/builtupareabnw.png",
      "unit": "م²",
      "icon_class": "builtup-area"
    },
    {
      "key": "completionYear",
      "name": "عمر العقار",
      "value": "جديد",
      "image": "https://assets.wasalt.com/others/icons/completionyearbnw.png",
      "unit": "",
      "icon_class": "age-of-building"
    }
  ],
  "property_region_id": 56,
  "managed_by_id": 55,
  "property_info": {
    "currency_type": "ر.س",
    "ownership_type": null,
    "country": "المملكة العربية السعودية",
    "property_status_type": "تمت الموافقة",
    "keywords": null,
    "city": "الرياض",
    "property_sub_type": "شقة",
    "facing_type": "ثلاثة شوارع",
    "title": "شقة 117 متر مربع ب 3 غرف",
    "unit_type": "م²",
    "possession_type": null,
    "property_option_type": null,
    "property_source_type": "خاصية البريد",
    "zone": "القدس",
    "managed_by": "فريقك",
    "property_region": "السعودية",
    "state": "منطقة الرياض",
    "slug": "شقة-117-متر-مربع-ب-3-غرف-5874316",
    "room_type": null,
    "property_main_type": "سكني",
    "address": "القدس، شرق الرياض، الرياض",
    "furnishing_type": "غير مفروشة",
    "transaction_type": null,
    "country_code": "+966",
    "property_name": "شقة للبيع",
    "project_name": null,
    "territory": "شرق الرياض",
    "sale_price": 1190000,
    "expected_rent": "",
    "tags": [
      "غير مفروشة"
    ],
    "property_for": "sale",
    "conversion_price": 1190000,
    "conversion_unit": "ر.س",
    "status_type_id": 505,
    "status_type_slug": "approved",
    "city_id": 273,
    "territory_id": 1,
    "zone_id": 2045,
    "district_id": 2045,
    "district": "القدس",
    "property_sub_type_slug": "apartment",
    "rent_freq": "",
    "currency_type_marker": "ر.س"
  },
  "zip_code": "13214",
  "lead_count": 0,
  "floor_size": "117",
  "age_of_listing": "تم تحديثها قبل 3 يوم",
  "barter": {
    "is_enabled": false,
    "seller_note": null
  },
  "from_url": "https://wasalt.sa/ar/sale/search?cityId=273&countryId=1&propertyFor=sale&type=residential&page=2"
}
```

Each scraped property returns a comprehensive record with 40+ fields covering identification, location, amenities, verification, and investment metrics.

#### Property Identification & Metadata

| Field | Meaning |
|---|---|
| `ID` | Unique Wasalt property identifier |
| `Slug` | URL-friendly property reference |
| `Unit Reference` | Internal unit/property reference number |
| `DAR Reference` | Saudi real estate (DAR) registry reference |
| `Full DAR Reference` | Complete registry reference with metadata |
| `External Video Link` | YouTube or external video URL |
| `Video Thumbnail` | Property video preview image |
| `Property Files` | Attached documents (plans, deeds, etc.) |

#### Dates & Status

| Field | Meaning |
|---|---|
| `Created At` | Date property listing was created |
| `Updated At` | Last modification timestamp |
| `Published At` | Date listing became publicly visible |
| `Age Of Listing` | Days since property was listed |
| `Is Updated` | Flag indicating recent updates |
| `Is Auction` | Whether property is in auction state |
| `Auction ID` | Reference to auction if applicable |

#### Location & Address

| Field | Meaning |
|---|---|
| `Location` | Geographic coordinates and address object |
| `Street Info` | Street name and neighborhood details |
| `Zip Code` | Postal code for the property |
| `Is Approximate Location` | Flag if location is approximate vs. exact |
| `Property Region ID` | Administrative region identifier |

#### Property Details & Specifications

| Field | Meaning |
|---|---|
| `Property Info` | Core details (bedrooms, bathrooms, sqm) |
| `Floor Size` | Total floor area in square meters |
| `Feature Amenities` | Included features (garden, pool, gym, etc.) |
| `Attributes` | Extended property attributes and condition |
| `Classification Data` | Property classification (new, resale, etc.) |
| `Property Identity Type ID` | Property type category ID |
| `Source Type ID` | Listing source identifier (agent, owner, etc.) |

#### Verification & Quality

| Field | Meaning |
|---|---|
| `Is Verified` | Whether property details are verified by Wasalt |
| `Verification Status` | Verification level (pending, verified, rejected) |
| `Score` | Quality/completeness score (0-100) |
| `Scoring Data` | Metrics contributing to the score |
| `Lead Count` | Number of inquiries received |
| `Is Rega Property` | Flag for Rega-registered properties |
| `Rega MOJ Description` | Ministry of Justice (MOJ) property description |
| `Rega Raw Info` | Raw registry data from Rega system |

#### Financial & Investment Metrics

| Field | Meaning |
|---|---|
| `ROI Prediction` | Estimated return on investment forecast |
| `Barter` | Whether property accepts barter/exchange |
| `Reservation` | Reservation status or amount |
| `Package Data` | Package deal information if applicable |

#### Contact & Lead Information

| Field | Meaning |
|---|---|
| `Lead Contact Info` | Seller/agent phone, email, name |
| `Property Owner` | Property owner details and verification |
| `Managed By ID` | ID of property manager or listing agent |

***

### How to Use

1. **Prepare search URLs** — Navigate Wasalt.sa, apply filters (city, property type, transaction type), and copy the search result page URL.
   - Example: Filter for Riyadh residential sales, then copy the URL from the browser.
2. **Configure input** — Place URLs in the `urls` array. Set `max_items_per_url` to the desired count (up to 200).
3. **Enable error handling** — Set `ignore_url_failures: true` to skip failed pages and continue scraping.
4. **Run the scraper** — Start the actor and monitor progress in the log.
5. **Export data** — Download results in JSON, CSV, or Excel format for analysis or database import.

**Best practices:**

- Use specific city and property type filters to get relevant listings.
- Test with a small `max_items_per_url` (e.g., 10) on one URL first to verify output format.
- For large-scale scraping, enable `ignore_url_failures` to ensure the run completes despite occasional page timeouts.

**Troubleshooting:**

- If no properties are returned, verify the URL is a search results page (not a single property detail page).
- Check that filters (city, property type) are correct; some cities may have few listings.

***

### Use Cases & Business Value

- **Investment analysis:** Identify trending neighborhoods, track price movements, and spot ROI opportunities in Saudi real estate
- **Market intelligence:** Monitor competitor listings, pricing strategies, and inventory levels
- **Data aggregation:** Build a centralized property database for comparison portals or internal analytics
- **Trend reporting:** Generate market reports on supply, demand, and price trends by region and property type
- **Lead generation:** Collect seller/agent contact information for outreach campaigns

The Wasalt Property Search Scraper transforms time-consuming manual research into automated, scalable data collection — enabling faster insights and better decision-making in the Saudi property market.

***

### Conclusion

The **Wasalt Property Search Scraper** is the go-to solution for anyone needing structured Saudi Arabian property data. With 40+ fields covering location, amenities, verification, and investment metrics, it provides the depth and accuracy required for serious real estate analysis. Start scraping today and unlock the full potential of Wasalt.sa data for your business.

# Actor input Schema

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

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://wasalt.sa/ar/sale/search?cityId=273&countryId=1&propertyFor=sale&type=residential&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# 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 = {
    "urls": [
        "https://wasalt.sa/ar/sale/search?cityId=273&countryId=1&propertyFor=sale&type=residential&page=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/wasalt-property-search-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 = {
    "urls": ["https://wasalt.sa/ar/sale/search?cityId=273&countryId=1&propertyFor=sale&type=residential&page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/wasalt-property-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://wasalt.sa/ar/sale/search?cityId=273&countryId=1&propertyFor=sale&type=residential&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call alexist/wasalt-property-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OMyqWv6jJj1FoRZgz/builds/AYhgYojuBFZPbkQRb/openapi.json
