Aqar Scraper — Saudi Arabia Property Data & API
Pricing
from $2.50 / 1,000 overview listings
Aqar Scraper — Saudi Arabia Property Data & API
Scrape Aqar Saudi Arabia sale and rental listings with SAR prices, property details, GPS, photos, descriptions, seller and broker contacts, REGA advertising licenses, features and listing activity across Riyadh, Jeddah and the Kingdom.
Pricing
from $2.50 / 1,000 overview listings
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Features
Share
🏠 Aqar Scraper — Saudi Arabia Property Data, Prices, GPS & Broker Contacts
Extract public property listings from Aqar (عقار), Saudi Arabia's largest real estate marketplace — with SAR prices, area, rooms, GPS coordinates, photos, descriptions, seller and broker contacts, and official REGA advertising-license details. No login, no coding. This Aqar scraper turns any city, property type or filtered search into a clean, structured dataset you can analyze, map or import in minutes. Use it to scrape Aqar sale and rental inventory across Riyadh, Jeddah, Makkah, Madinah, Dammam and the rest of the Kingdom with automatic 1,000+ results pagination.
Export every record to JSON, CSV, Excel, or API for real estate lead generation, PropTech valuation, and B2B market intelligence.
Built for real estate analysts, PropTech teams, brokers and agencies, institutional investors, B2B lead-generation teams, appraisers and data engineers who need reliable, up-to-date Saudi property data without maintaining their own crawler.
⚡ At a glance
| Feature | Details |
|---|---|
| Target platform | Aqar Saudi Arabia (sa.aqar.fm) — عقار السعودية |
| Deal types | For Sale (sale), For Rent (rent), or Both (all) |
| Property categories | 15 categories: Apartment, Villa, Land, House, Floor, Building, Office, Store, Warehouse, Farm, Room, Chalet, Rest House, Camp |
| Geographic coverage | Riyadh, Jeddah, Makkah, Madinah, Dammam, Al Khobar, Taif, Abha, Tabuk, Buraydah + any Saudi city (English/Arabic/ID) |
| Core data extracted | SAR Price, Price/m², Area, Rooms, Bilingual City/District, GPS (lat/lng), Seller/Broker Phone, REGA License, Photos, Activity |
| Pagination & scale | Automatic multi-page & multi-category discovery (maxPagesPerSearch: 0 = auto/unlimited governed by maxResults, 1,000+ listings) |
| Deduplication | 100% deduplicated by unique listingId across pages, categories and cities |
| Export formats | Bulk export to JSON, CSV, Excel, XML, JSONL, RSS, Webhook & Apify REST API |
🔎 Why scrape Aqar?
Aqar (sa.aqar.fm) is the dominant real estate platform in Saudi Arabia, carrying hundreds of thousands of active sale and rental listings for apartments, villas, land, floors, buildings, offices, warehouses, farms and more. Each listing is rich: asking price in SAR, area and plot dimensions, bedroom/bathroom/living-room counts, GPS location, photos, a full Arabic description, the advertiser's contact details, and — crucially for the Saudi market — the property's REGA (Real Estate General Authority / الهيئة العامة للعقار) advertising-license number and status.
That data is enormously valuable for market research, pricing, lead generation and compliance, but collecting it by hand is slow and error-prone. Listings are paginated 20 per page, localized across Arabic and English, and split between search summaries and full property pages. This Aqar data extractor handles all of that automatically: it resolves cities, walks the search pagination across pages and categories, de-duplicates by listing ID, and enriches each property with full detail-page data — returning one clean row per listing.
Common reasons teams use this Aqar scraper:
- 📊 Saudi real estate market intelligence — build city- and district-level datasets for pricing, supply and trend analysis across Vision 2030 growth corridors.
- 📞 B2B & broker lead generation — extract public seller, brokerage (
agencyName) and responsible-employee phone numbers (sellerPhone) for direct outreach. - 💰 Price-per-square-meter benchmarking — compare
pricePerSqmacross neighborhoods, property types and sale vs. rent inventory. - 🔔 Automated inventory & price monitoring — schedule recurring runs to spot newly published properties or price adjustments.
- ✅ REGA compliance & audit workflows — verify advertising-license numbers (
regaLicenseNumber), official verification URLs, expiry dates and declared prices. - 🤖 PropTech valuation & AI pipelines — feed normalized Aqar property data into automated valuation models (AVMs), BI dashboards, CRMs and AI agents.
- 🗺️ GIS & spatial mapping — plot exact
latitudeandlongitudecoordinates alongside plot dimensions and street widths.
✨ What this Aqar scraper does
- ✅ Search any Saudi city — pick from Riyadh, Jeddah, Makkah, Madinah, Dammam, Al Khobar, Taif, Abha, Tabuk and Buraydah, or add any other city by name (English or Arabic) or by numeric Aqar city ID.
- ✅ Sale, rent, or both — collect
alllistings or restrict tosaleorrent. - ✅ 15 property categories — apartments, villas, land, houses, floors, buildings, offices, stores, warehouses, farms, rooms, chalets, rest houses and camps, or
allfor maximum volume. - ✅ Unlocked 1,000+ deep pagination — with
maxPagesPerSearch: 0(the default), the Actor automatically paginates across result pages and property categories until yourmaxResultstarget is met, scaling smoothly to 1,000+ unique listings per run. - ✅ Full detail enrichment — visits each listing in parallel (
maxConcurrency) to add the complete description, every photo, seller/broker contact, REGA license data, utilities and activity metrics. - ✅ Cleaned, dialable phone numbers — filters out non-numeric "contact via the app" placeholder strings so
sellerPhoneonly contains genuine dialable phone numbers. - ✅ Powerful built-in filters — price range (
minPrice/maxPrice), area range (minArea/maxArea), minimum bedrooms/bathrooms/living rooms, furnishing (furnished), andregaLicensedOnly. - ✅ Flexible sorting — order the final dataset by published date, last update, price, area, price per m² or views.
- ✅ Target exact properties — paste Aqar search URLs into
startUrlsor individual listing IDs intolistingIdsfor precise, on-demand collection. - ✅ Fast, lightweight HTTP execution — runs without a heavy browser, delivering fast prefill samples in seconds and hundreds of enriched listings in minutes.
🎯 Use cases
| Persona | How they use this Actor |
|---|---|
| 🏢 Real Estate Agencies & Brokers | Build targeted lead lists of individual sellers and partner brokerages in Riyadh, Jeddah and Dammam with verified phone numbers and REGA license status. |
| 📈 PropTech & Valuation Teams | Train automated valuation models (AVMs) and neighborhood price indices using priceSar, pricePerSqm, areaSqm, propertyAge and GPS coordinates. |
| 🏗️ Developers & Land Acquirers | Screen residential and commercial land plots (land, building, warehouse) by areaSqm, streetWidthMeters, plotWidthMeters, plotLengthMeters and planNumber. |
| 🏦 Financial & Mortgage Analysts | Analyze regaDeclaredPriceSar and monthlyInstallmentSar alongside asking prices across Saudi metropolitan areas. |
| 🗺️ GIS & Retail Expansion Planners | Map commercial stores, offices and residential density using exact latitude/longitude and bilingual district labels (district / districtArabic). |
| 🔍 Compliance & Market Auditors | Track regaLicensed, regaLicenseNumber and regaLicenseExpiry across thousands of public property advertisements. |
📥 Input configuration
Configure the run from the Apify Console form or via JSON/API. All fields are optional — the defaults produce a ready Riyadh dataset out of the box.
| Field | Type | Default | Description |
|---|---|---|---|
cities | array | ["riyadh"] | One or more Saudi cities from the dropdown (Riyadh, Jeddah, Makkah, Madinah, Dammam, Al Khobar, Taif, Abha, Tabuk, Buraydah). |
customCities | array | [] | Any Saudi city name in English or Arabic; resolved against Aqar's live city catalog. |
cityIds | array | [] | Numeric Aqar city IDs (e.g. 21 for Riyadh, 66 for Jeddah). |
listingType | string | "all" | all, sale or rent. |
propertyType | string | "all" | all or a specific category (apartment, villa, land, house, floor, building, office, store, warehouse, farm, room, chalet, rest_house, camp). |
startUrls | array | [] | Aqar search-page or individual listing URLs to process in addition to the city search. |
listingIds | array | [] | Exact Aqar listing IDs for bulk detail collection (skips city search when used alone). |
maxResults | integer | 200 (prefill 40) | Maximum unique properties to save. 0 = no limit. |
maxPagesPerSearch | integer | 0 | Search depth per city/category (~20 listings/page). 0 = automatic/unlimited pagination governed by maxResults. |
includeDetails | boolean | true | Visit each listing for full description, photos, contacts, REGA license and activity metrics. |
includeRawData | boolean | false | Add the complete original source object for advanced analysis. |
minPrice / maxPrice | integer | 0 | Optional SAR price range. 0 disables. |
minArea / maxArea | integer | 0 | Optional area range in m². 0 disables. |
regaLicensedOnly | boolean | false | Keep only listings explicitly marked REGA-licensed. |
minBedrooms / minBathrooms / minLivingRooms | integer | 0 | Optional minimum room counts. 0 disables. |
furnished | string | "any" | any, furnished or unfurnished. |
sortBy | string | "create_time" | create_time, last_update, price, area, meter_price or views. |
sortDirection | string | "desc" | desc (newest/highest first) or asc (oldest/lowest first). |
maxConcurrency | integer | 10 | Parallel detail requests (1–30). |
proxyConfiguration | object | { "useApifyProxy": false } | Optional Apify Proxy. Direct requests work by default; enable only if access errors appear. |
Input example — multi-city 1,000+ property sweep
{"cities": ["riyadh", "jeddah", "dammam"],"listingType": "sale","propertyType": "all","maxResults": 1000,"maxPagesPerSearch": 0,"includeDetails": true,"regaLicensedOnly": false,"sortBy": "create_time","sortDirection": "desc"}
Input example — targeted REGA-licensed villa leads
{"cities": ["riyadh"],"listingType": "sale","propertyType": "villa","minPrice": 1500000,"maxPrice": 5000000,"minBedrooms": 4,"regaLicensedOnly": true,"maxResults": 250,"includeDetails": true}
📤 Output & field reference
Each item in the dataset is one unique Aqar property listing. Below is a real record from a Riyadh run:
{"listingId": "6765535","url": "https://sa.aqar.fm/en/apartment-for-sale/riyadh/east-of-riyadh/al-yarmouk/apartment-for-sale-6765535","propertyTitle": "Apartment for Sale in Riyadh Al Yarmouk","listingType": "sale","propertyType": "apartment","category": "Apartments for sale","priceSar": 699000,"priceDisplay": "699,000","pricePerSqm": 7516.13,"areaSqm": 93,"bedrooms": 2,"bathrooms": 2,"livingRooms": 1,"propertyAge": 0,"city": "Riyadh","cityArabic": "الرياض","district": "Al Yarmouk","districtArabic": "اليرموك","latitude": 24.806441,"longitude": 46.763047,"propertyDescription": "Apartment for sale, new, with electricity meter ...","sellerName": "عبدالعزيز بن خالد بن عبدالعزيز الجلعود","sellerPhone": "0555881893","agencyName": "شركة راكز العقارية","sellerType": "company_or_broker","sellerReview": 4.8,"regaLicensed": true,"regaLicenseNumber": "7201030848","regaLicenseUrl": "https://eservicesredp.rega.gov.sa/...","regaLicenseExpiry": "10/01/2027","mainImage": "https://images.aqar.fm/webp/750x0/props/052305422_1783525799533.jpg","imageCount": 6,"images": ["https://images.aqar.fm/webp/750x0/props/052305422_1783525799533.jpg"],"features": ["Kitchen", "Electricity", "Special Parking", "Accept Bank", "Laundry Room", "Balcony", "Master Bedroom"],"specifications": { "type": "Residential", "beds": "2", "age": "New", "area": "93" },"views": 3180,"favorites": 91,"publishedAt": "2026-11-01T17:29:39.000Z","updatedAt": "2026-11-01T17:29:39.000Z","scrapedAt": "2026-11-02T00:21:00.000Z"}
🏷️ Identity & Pricing Fields
| Field | Type | Coverage | Description |
|---|---|---|---|
listingId | string | 🟢 High (100%) | Unique Aqar listing ID (used for automatic de-duplication). |
url / canonicalUrl | string | 🟢 High (100%) | Direct link to the listing on sa.aqar.fm. |
propertyTitle | string | 🟢 High (100%) | Listing headline in English/Arabic. |
listingType | string | 🟢 High (100%) | Deal type: sale or rent. |
propertyType / category | string | 🟢 High (100%) | Normalized category (apartment, villa, land, …) and human-readable label. |
priceSar / priceDisplay | number / string | 🟢 High (100%) | Price in SAR as a clean number and formatted display string. |
pricePerSqm | number | 🟢 High (~99%) | Price per square meter in SAR (computed from priceSar and areaSqm). |
rentPeriod | string | 🟡 Conditional | Rental frequency (yearly, monthly, daily) — present on rental listings. |
regaDeclaredPriceSar | number | 🟡 Conditional | Official REGA-declared total price when published on the listing. |
monthlyInstallmentSar | number | 🟡 Conditional | Monthly financing/installment amount when offered by the advertiser. |
📐 Property Dimensions, Rooms & Utilities
| Field | Type | Coverage | Description |
|---|---|---|---|
areaSqm / deedAreaSqm | number | 🟢 High (100% / ~85%) | Built/advertised area and official deed area in square meters. |
bedrooms / bathrooms / livingRooms | number | 🟢 High (~95%) | Room counts (applicable to residential units). |
propertyAge / floor | number / string | 🟢 High (~80%) | Building age in years (0 = new) and floor level. |
furnished | boolean | 🟡 Conditional | Furnishing status (true / false) when stated. |
streetDirection / streetWidthMeters | string / number | 🟡 Conditional | Street facing direction and street width in meters. |
plotWidthMeters / plotLengthMeters | number | 🟡 Conditional | Plot frontage and depth in meters (primarily on land/villas). |
hasWater / hasElectricity / hasDrainage | boolean | 🟢 High (~90%) | Utility availability indicators. |
carEntrance / specialEntrance / twoEntrances / apartmentInVilla | boolean | 🟡 Conditional | Structural access and layout indicators. |
📍 Location & GIS Coordinates
| Field | Type | Coverage | Description |
|---|---|---|---|
city / cityArabic | string | 🟢 High (100%) | City name in English and Arabic (e.g. Riyadh / الرياض). |
district / districtArabic | string | 🟢 High (~99%) | District/neighborhood name in English and Arabic. |
address / direction | string | 🟢 High (~95%) | Formatted street/neighborhood address and compass direction. |
latitude / longitude | number | 🟢 High (100%) | Exact WGS84 GPS coordinates for GIS mapping and spatial analysis. |
📞 Seller, Brokerage Leads & REGA Compliance
| Field | Type | Coverage | Description |
|---|---|---|---|
sellerName | string | 🟢 High (~98%) | Public advertiser, owner or responsible employee name. |
sellerPhone | string | 🟢 High (~88%) | Verified dialable phone number (app-only placeholder strings are removed). |
agencyName | string | 🟡 Conditional (~68%) | Real estate brokerage or company name (present on agency listings). |
sellerType | string | 🟢 High (~98%) | company_or_broker or individual. |
sellerReview | number | 🟡 Conditional | Public seller rating on Aqar when available. |
regaLicensed | boolean | 🟢 High (100%) | Whether the advertisement carries a verified REGA license. |
regaLicenseNumber / regaLicenseUrl / regaLicenseExpiry | string | 🟢 High (~92%) | Official REGA advertising license number, verification URL and expiry date. |
deedNumber / planNumber / parcelNumber | string | 🟡 Conditional | Official title deed, subdivision plan and parcel identifiers when disclosed. |
🖼️ Media, Content & Activity Metrics
| Field | Type | Coverage | Description |
|---|---|---|---|
propertyDescription | string | 🟢 High (~98%) | Full property description text from the listing detail page. |
images / mainImage / imageCount | array / string / number | 🟢 High (~99%) | Complete array of photo URLs, primary cover image and photo count. |
videos | array | 🟡 Conditional (~48%) | Property video tour URLs when uploaded by the seller. |
features / specifications | array / object | 🟢 High (~95%) | Structured amenity labels and key/value specification map. |
auction / dailyRentable / promoted | boolean | 🟢 High (100%) | Flags for auction listings, daily rentals and boosted ads. |
views / favorites | number | 🟢 High (100%) | Total listing view count and user favorite count. |
publishedAt / updatedAt / scrapedAt | string | 🟢 High (100%) | ISO 8601 timestamps for initial publication, latest update and extraction. |
🔁 Pagination & 1,000+ scaling
The Aqar scraper is engineered for both quick neighborhood snapshots and deep 1,000+ property market sweeps:
- Automatic multi-page traversal (
maxPagesPerSearch: 0): By default,maxPagesPerSearchis set to0(automatic/unlimited), meaning pagination is governed directly by yourmaxResultssetting rather than stopping at a fixed page count. - Multi-category expansion for
propertyType: "all": When you request a large dataset (e.g.maxResults: 1000or5000) withpropertyType: "all", the Actor automatically expands across Aqar's major property categories (apartments, villas, land, floors, buildings, houses, offices, stores) for each selected city so your run never hits single-feed pagination limits. - Strict deduplication: Every property is deduplicated by
listingIdbefore detail enrichment, ensuring 0 duplicate records across overlapping pages or categories. - Key-value diagnostics: Every run writes
SUMMARYandERRORSrecords to the default Key-Value Store for instant pipeline monitoring.
⚙️ How to use
- Open Aqar Saudi Arabia Property Scraper in the Apify Console and click Try for free.
- Select one or more Cities (
riyadh,jeddah,dammam, etc.), choose Listing type (all,sale,rent), and pick a Property type. - Set
maxResults(e.g.40for a quick test,500or1,000+for a deep sweep) and leavemaxPagesPerSearchat0for automatic pagination. - Click Start, then export your dataset in JSON, CSV, Excel, XML or JSONL, or consume it via the Apify API.
🔌 API usage
Start a run asynchronously
curl -X POST "https://api.apify.com/v2/acts/haketa~aqar-saudi-property-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"cities":["riyadh","jeddah"],"listingType":"all","maxResults":500,"includeDetails":true}'
Run synchronously and fetch dataset items (JSON)
curl -X POST "https://api.apify.com/v2/acts/haketa~aqar-saudi-property-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"cities":["riyadh"],"listingType":"rent","maxResults":40,"includeDetails":true}'
Run via Python SDK (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"cities": ["riyadh", "jeddah", "dammam"],"listingType": "sale","propertyType": "villa","maxResults": 500,"maxPagesPerSearch": 0,"includeDetails": True,"regaLicensedOnly": True,"sortBy": "create_time","sortDirection": "desc",}run = client.actor("haketa/aqar-saudi-property-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item.get('listingId')} | {item.get('city')} - {item.get('district')} | {item.get('priceSar')} SAR | Phone: {item.get('sellerPhone')}")
Run via Node.js SDK (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/aqar-saudi-property-scraper').call({cities: ['riyadh'],listingType: 'rent',propertyType: 'apartment',maxResults: 250,maxPagesPerSearch: 0,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Extracted ${items.length} unique Saudi property listings`);
🔄 Integrations & automation workflows
Connect Aqar Saudi Arabia Property Scraper to your existing PropTech, CRM or analytics stack without writing boilerplate glue code:
| Integration | Workflow example |
|---|---|
| 📊 Google Sheets & Excel | Automatically append newly listed Riyadh and Jeddah villas with priceSar, pricePerSqm, sellerPhone and regaLicenseNumber to a shared team spreadsheet every morning. |
| ⚡ Make, Zapier & n8n | Trigger an automated WhatsApp, SMS or CRM task whenever a new REGA-licensed land plot (propertyType: "land") matching your minArea and maxPrice criteria appears. |
| 🏢 HubSpot, Salesforce & Pipedrive | Route verified sellerName, sellerPhone and agencyName records directly into your brokerage acquisition pipeline, deduplicated by listingId. |
| 🗄️ Snowflake, BigQuery & PostgreSQL | Stream scheduled city-wide runs into your cloud data warehouse to track historical asking-price indices and neighborhood absorption rates across Saudi Arabia. |
| 🤖 AI Agents & MCP Workflows | Expose live Saudi property inventory to LLM agents and conversational property-search assistants via the synchronous Apify API. |
⚠️ Limitations & data notes
- Publicly listed data only: The Actor extracts only attributes that advertisers publicly publish on
sa.aqar.fm. When a seller chooses "contact via the app only" without exposing a phone number,sellerPhoneis omitted rather than filled with placeholder text. - Category-dependent attributes: Land plots and commercial warehouses naturally omit residential fields like
bedrooms,bathroomsandfurnished, while residential apartments omit plot frontage fields likeplotWidthMetersandplotLengthMeters. - Event-based detail enrichment: When
includeDetails: trueis active, each property enriched from its detail page counts as onedetail-listingevent in addition to the dataset item. SetincludeDetails: falseif you only need card-level pricing, area, room counts and GPS coordinates.
💡 Pro tips for best results
- Keep
maxPagesPerSearch: 0when collecting 500 or 1,000+ listings so the scraper automatically pages as deep as needed to reachmaxResults. - Use
includeDetails: falsefor ultra-fast price/GPS snapshots when you only need card-level pricing, area, rooms and coordinates without visiting individual property pages. - Filter for compliant broker leads by combining
regaLicensedOnly: truewithincludeDetails: trueto collect verifiedsellerPhone,agencyNameandregaLicenseNumberrecords. - Target specific districts by filtering on
sa.aqar.fmin your browser and pasting the resulting URL intostartUrls.
❓ FAQ
How many listings can I extract in a single run?
From a 40-item sample up to 10,000+ unique properties per run. Set maxResults to your target (or 0 for unlimited) and keep maxPagesPerSearch at 0.
Do I need proxies or an Aqar account? No login or account is required. Direct requests work out of the box; optional Apify Proxy support is built in if you ever need it for high-volume schedules.
Does it extract seller phone numbers and REGA license numbers?
Yes. When includeDetails: true is enabled, the Actor extracts public sellerName, sellerPhone, agencyName, regaLicenseNumber, regaLicenseUrl and regaLicenseExpiry fields, stripping out non-dialable placeholder text.
Why are some fields empty on certain listings?
Commercial land, warehouses and residential apartments have different attributes (for example, land plots have streetWidthMeters and plotLengthMeters instead of bedrooms). The Actor reports every field present on the listing and never fabricates missing values.
🔗 Related scrapers
Building a regional or global real estate intelligence pipeline? Pair Aqar Scraper with these property scrapers by the same developer:
- Yad2 Real Estate Scraper — Israel Property & Leads
- ZAP Imóveis Scraper — Brazil Property Listings
- Realtor.ca Scraper — Canada Property Listings
- Domain.com.au Property Scraper — Australia Listings
- ImmobilienScout24 Scraper — Germany Real Estate
- Boliga Scraper — Danish Real Estate & Sold Prices
📋 Changelog
- v1.2 (2026-11) — Unlocked 1,000+ deep pagination (
maxPagesPerSearchdefault0= automatic/unlimited governed bymaxResults), added automatic multi-category search expansion forpropertyType: "all"on large runs, tuned fast prefill (maxResults: 40), and validated all input/output/dataset schemas. - v1.1 (2026-11) — Added strict
sellerPhonevalidation to filter out non-dialable app placeholder text, improvedlistingIdsdirect-lookup isolation, and verified 500-item Riyadh benchmark with 0 duplicates. - v1.0 (2026-10) — Initial release with multi-city Saudi property search, detail enrichment, REGA license extraction, room/price/area filters, and custom sorting.