Aqar Scraper — Saudi Arabia Property Data & API avatar

Aqar Scraper — Saudi Arabia Property Data & API

Pricing

from $2.50 / 1,000 overview listings

Go to Apify Store
Aqar Scraper — Saudi Arabia Property Data & API

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

2

Monthly active users

4 days ago

Last modified

Features

Limited permissions

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.

Apify Actor Market Pagination REGA Export No Auth

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

FeatureDetails
Target platformAqar Saudi Arabia (sa.aqar.fm) — عقار السعودية
Deal typesFor Sale (sale), For Rent (rent), or Both (all)
Property categories15 categories: Apartment, Villa, Land, House, Floor, Building, Office, Store, Warehouse, Farm, Room, Chalet, Rest House, Camp
Geographic coverageRiyadh, Jeddah, Makkah, Madinah, Dammam, Al Khobar, Taif, Abha, Tabuk, Buraydah + any Saudi city (English/Arabic/ID)
Core data extractedSAR Price, Price/m², Area, Rooms, Bilingual City/District, GPS (lat/lng), Seller/Broker Phone, REGA License, Photos, Activity
Pagination & scaleAutomatic multi-page & multi-category discovery (maxPagesPerSearch: 0 = auto/unlimited governed by maxResults, 1,000+ listings)
Deduplication100% deduplicated by unique listingId across pages, categories and cities
Export formatsBulk 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 pricePerSqm across 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 latitude and longitude coordinates 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 all listings or restrict to sale or rent.
  • ✅ 15 property categories — apartments, villas, land, houses, floors, buildings, offices, stores, warehouses, farms, rooms, chalets, rest houses and camps, or all for maximum volume.
  • ✅ Unlocked 1,000+ deep pagination — with maxPagesPerSearch: 0 (the default), the Actor automatically paginates across result pages and property categories until your maxResults target 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 sellerPhone only contains genuine dialable phone numbers.
  • ✅ Powerful built-in filters — price range (minPrice/maxPrice), area range (minArea/maxArea), minimum bedrooms/bathrooms/living rooms, furnishing (furnished), and regaLicensedOnly.
  • ✅ 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 startUrls or individual listing IDs into listingIds for 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

PersonaHow they use this Actor
🏢 Real Estate Agencies & BrokersBuild targeted lead lists of individual sellers and partner brokerages in Riyadh, Jeddah and Dammam with verified phone numbers and REGA license status.
📈 PropTech & Valuation TeamsTrain automated valuation models (AVMs) and neighborhood price indices using priceSar, pricePerSqm, areaSqm, propertyAge and GPS coordinates.
🏗️ Developers & Land AcquirersScreen residential and commercial land plots (land, building, warehouse) by areaSqm, streetWidthMeters, plotWidthMeters, plotLengthMeters and planNumber.
🏦 Financial & Mortgage AnalystsAnalyze regaDeclaredPriceSar and monthlyInstallmentSar alongside asking prices across Saudi metropolitan areas.
🗺️ GIS & Retail Expansion PlannersMap commercial stores, offices and residential density using exact latitude/longitude and bilingual district labels (district / districtArabic).
🔍 Compliance & Market AuditorsTrack 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.

FieldTypeDefaultDescription
citiesarray["riyadh"]One or more Saudi cities from the dropdown (Riyadh, Jeddah, Makkah, Madinah, Dammam, Al Khobar, Taif, Abha, Tabuk, Buraydah).
customCitiesarray[]Any Saudi city name in English or Arabic; resolved against Aqar's live city catalog.
cityIdsarray[]Numeric Aqar city IDs (e.g. 21 for Riyadh, 66 for Jeddah).
listingTypestring"all"all, sale or rent.
propertyTypestring"all"all or a specific category (apartment, villa, land, house, floor, building, office, store, warehouse, farm, room, chalet, rest_house, camp).
startUrlsarray[]Aqar search-page or individual listing URLs to process in addition to the city search.
listingIdsarray[]Exact Aqar listing IDs for bulk detail collection (skips city search when used alone).
maxResultsinteger200 (prefill 40)Maximum unique properties to save. 0 = no limit.
maxPagesPerSearchinteger0Search depth per city/category (~20 listings/page). 0 = automatic/unlimited pagination governed by maxResults.
includeDetailsbooleantrueVisit each listing for full description, photos, contacts, REGA license and activity metrics.
includeRawDatabooleanfalseAdd the complete original source object for advanced analysis.
minPrice / maxPriceinteger0Optional SAR price range. 0 disables.
minArea / maxAreainteger0Optional area range in m². 0 disables.
regaLicensedOnlybooleanfalseKeep only listings explicitly marked REGA-licensed.
minBedrooms / minBathrooms / minLivingRoomsinteger0Optional minimum room counts. 0 disables.
furnishedstring"any"any, furnished or unfurnished.
sortBystring"create_time"create_time, last_update, price, area, meter_price or views.
sortDirectionstring"desc"desc (newest/highest first) or asc (oldest/lowest first).
maxConcurrencyinteger10Parallel detail requests (1–30).
proxyConfigurationobject{ "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

FieldTypeCoverageDescription
listingIdstring🟢 High (100%)Unique Aqar listing ID (used for automatic de-duplication).
url / canonicalUrlstring🟢 High (100%)Direct link to the listing on sa.aqar.fm.
propertyTitlestring🟢 High (100%)Listing headline in English/Arabic.
listingTypestring🟢 High (100%)Deal type: sale or rent.
propertyType / categorystring🟢 High (100%)Normalized category (apartment, villa, land, …) and human-readable label.
priceSar / priceDisplaynumber / string🟢 High (100%)Price in SAR as a clean number and formatted display string.
pricePerSqmnumber🟢 High (~99%)Price per square meter in SAR (computed from priceSar and areaSqm).
rentPeriodstring🟡 ConditionalRental frequency (yearly, monthly, daily) — present on rental listings.
regaDeclaredPriceSarnumber🟡 ConditionalOfficial REGA-declared total price when published on the listing.
monthlyInstallmentSarnumber🟡 ConditionalMonthly financing/installment amount when offered by the advertiser.

📐 Property Dimensions, Rooms & Utilities

FieldTypeCoverageDescription
areaSqm / deedAreaSqmnumber🟢 High (100% / ~85%)Built/advertised area and official deed area in square meters.
bedrooms / bathrooms / livingRoomsnumber🟢 High (~95%)Room counts (applicable to residential units).
propertyAge / floornumber / string🟢 High (~80%)Building age in years (0 = new) and floor level.
furnishedboolean🟡 ConditionalFurnishing status (true / false) when stated.
streetDirection / streetWidthMetersstring / number🟡 ConditionalStreet facing direction and street width in meters.
plotWidthMeters / plotLengthMetersnumber🟡 ConditionalPlot frontage and depth in meters (primarily on land/villas).
hasWater / hasElectricity / hasDrainageboolean🟢 High (~90%)Utility availability indicators.
carEntrance / specialEntrance / twoEntrances / apartmentInVillaboolean🟡 ConditionalStructural access and layout indicators.

📍 Location & GIS Coordinates

FieldTypeCoverageDescription
city / cityArabicstring🟢 High (100%)City name in English and Arabic (e.g. Riyadh / الرياض).
district / districtArabicstring🟢 High (~99%)District/neighborhood name in English and Arabic.
address / directionstring🟢 High (~95%)Formatted street/neighborhood address and compass direction.
latitude / longitudenumber🟢 High (100%)Exact WGS84 GPS coordinates for GIS mapping and spatial analysis.

📞 Seller, Brokerage Leads & REGA Compliance

FieldTypeCoverageDescription
sellerNamestring🟢 High (~98%)Public advertiser, owner or responsible employee name.
sellerPhonestring🟢 High (~88%)Verified dialable phone number (app-only placeholder strings are removed).
agencyNamestring🟡 Conditional (~68%)Real estate brokerage or company name (present on agency listings).
sellerTypestring🟢 High (~98%)company_or_broker or individual.
sellerReviewnumber🟡 ConditionalPublic seller rating on Aqar when available.
regaLicensedboolean🟢 High (100%)Whether the advertisement carries a verified REGA license.
regaLicenseNumber / regaLicenseUrl / regaLicenseExpirystring🟢 High (~92%)Official REGA advertising license number, verification URL and expiry date.
deedNumber / planNumber / parcelNumberstring🟡 ConditionalOfficial title deed, subdivision plan and parcel identifiers when disclosed.

🖼️ Media, Content & Activity Metrics

FieldTypeCoverageDescription
propertyDescriptionstring🟢 High (~98%)Full property description text from the listing detail page.
images / mainImage / imageCountarray / string / number🟢 High (~99%)Complete array of photo URLs, primary cover image and photo count.
videosarray🟡 Conditional (~48%)Property video tour URLs when uploaded by the seller.
features / specificationsarray / object🟢 High (~95%)Structured amenity labels and key/value specification map.
auction / dailyRentable / promotedboolean🟢 High (100%)Flags for auction listings, daily rentals and boosted ads.
views / favoritesnumber🟢 High (100%)Total listing view count and user favorite count.
publishedAt / updatedAt / scrapedAtstring🟢 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, maxPagesPerSearch is set to 0 (automatic/unlimited), meaning pagination is governed directly by your maxResults setting rather than stopping at a fixed page count.
  • Multi-category expansion for propertyType: "all": When you request a large dataset (e.g. maxResults: 1000 or 5000) with propertyType: "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 listingId before detail enrichment, ensuring 0 duplicate records across overlapping pages or categories.
  • Key-value diagnostics: Every run writes SUMMARY and ERRORS records to the default Key-Value Store for instant pipeline monitoring.

⚙️ How to use

  1. Open Aqar Saudi Arabia Property Scraper in the Apify Console and click Try for free.
  2. Select one or more Cities (riyadh, jeddah, dammam, etc.), choose Listing type (all, sale, rent), and pick a Property type.
  3. Set maxResults (e.g. 40 for a quick test, 500 or 1,000+ for a deep sweep) and leave maxPagesPerSearch at 0 for automatic pagination.
  4. 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 ApifyClient
client = 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:

IntegrationWorkflow example
📊 Google Sheets & ExcelAutomatically append newly listed Riyadh and Jeddah villas with priceSar, pricePerSqm, sellerPhone and regaLicenseNumber to a shared team spreadsheet every morning.
⚡ Make, Zapier & n8nTrigger 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 & PipedriveRoute verified sellerName, sellerPhone and agencyName records directly into your brokerage acquisition pipeline, deduplicated by listingId.
🗄️ Snowflake, BigQuery & PostgreSQLStream 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 WorkflowsExpose 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, sellerPhone is omitted rather than filled with placeholder text.
  • Category-dependent attributes: Land plots and commercial warehouses naturally omit residential fields like bedrooms, bathrooms and furnished, while residential apartments omit plot frontage fields like plotWidthMeters and plotLengthMeters.
  • Event-based detail enrichment: When includeDetails: true is active, each property enriched from its detail page counts as one detail-listing event in addition to the dataset item. Set includeDetails: false if you only need card-level pricing, area, room counts and GPS coordinates.

💡 Pro tips for best results

  • Keep maxPagesPerSearch: 0 when collecting 500 or 1,000+ listings so the scraper automatically pages as deep as needed to reach maxResults.
  • Use includeDetails: false for 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: true with includeDetails: true to collect verified sellerPhone, agencyName and regaLicenseNumber records.
  • Target specific districts by filtering on sa.aqar.fm in your browser and pasting the resulting URL into startUrls.

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


Building a regional or global real estate intelligence pipeline? Pair Aqar Scraper with these property scrapers by the same developer:


📋 Changelog

  • v1.2 (2026-11) — Unlocked 1,000+ deep pagination (maxPagesPerSearch default 0 = automatic/unlimited governed by maxResults), added automatic multi-category search expansion for propertyType: "all" on large runs, tuned fast prefill (maxResults: 40), and validated all input/output/dataset schemas.
  • v1.1 (2026-11) — Added strict sellerPhone validation to filter out non-dialable app placeholder text, improved listingIds direct-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.