PropertyFinder | Search | Listing(s) | Brokers | All countries avatar

PropertyFinder | Search | Listing(s) | Brokers | All countries

Pricing

$25.00/month + usage

Go to Apify Store
PropertyFinder | Search | Listing(s) | Brokers | All countries

PropertyFinder | Search | Listing(s) | Brokers | All countries

Extract 150+ data fields per listing including pricing, specs, amenities, agent/broker details, and high-res media across 11+ Property Finder domains. Get real-time property data with 99.9% uptime, 360ยฐ tours, floor plans, and market analytics.

Pricing

$25.00/month + usage

Rating

5.0

(3)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

1

Bookmarked

109

Total users

7

Monthly active users

4 days ago

Last modified

Share

Property Finder Scraper

Extract real estate listings, agents, brokers, and projects from Property Finder across multiple countries โ€” straight to JSON or CSV.

Start from a search URL, an individual property, an agent profile, or a broker agency page. The scraper handles pagination, runs an optional monitoring mode for new listings only, and returns clean, flat output ready for spreadsheets or downstream pipelines.

How it works

How Property Finder Scraper works

๐Ÿ† Why Use This Scraper?

  • Multi-country support โ€” works on every PropertyFinder regional domain (.ae, .sa, .bh, .eg, .qa).
  • Bypasses AWS WAF โ€” uses PropertyFinder's mobile API endpoint with iOS-spoofed headers; no browser needed.
  • Multiple entry points โ€” search results, individual properties, broker agency pages, agent search, and individual agent pages.
  • Pagination handled automatically across all entry types.
  • Monitoring mode โ€” incremental crawls that only return new listings on subsequent runs.
  • Built-in proxy rotation โ€” Apify residential proxies by default; bring your own if you prefer.
  • Structured exports โ€” JSON and CSV.

Overview

The Property Finder Scraper is your go-to tool for extracting property data from Property Finder platforms across multiple countries. Ideal for real estate investors, market analysts, and property researchers, it tracks property details, pricing, and listing information across the Middle East and North Africa. With easy setup and multiple export formats (JSON, CSV), it's perfect for anyone looking to gather comprehensive property data from Property Finder's extensive listings.

๐ŸŒ Supported Countries

CountryDomainLanguages
UAEpropertyfinder.aeEnglish, Arabic
Saudi Arabiapropertyfinder.saEnglish, Arabic
Bahrainpropertyfinder.bhEnglish, Arabic
Egyptpropertyfinder.egEnglish, Arabic
Qatarpropertyfinder.qaEnglish, Arabic

Any search URL from any of these domains works. You can mix countries, languages, and search filters in a single run.

๐Ÿ”— Supported Inputs

Pass any of the URL types below as startUrls. The scraper auto-detects the type and routes it to the right handler.

URL typeExampleWhat you get
Search resultshttps://www.propertyfinder.ae/en/search?l=11-18&c=2Every listing on every page
Filtered searchhttps://www.propertyfinder.ae/en/search?l=11-18&price_max=1000000Listings matching the filters
Individual propertyhttps://www.propertyfinder.ae/en/plp/rent/apartment-for-rent-dubai-dubai-marina-12345678.htmlOne listing
Broker agencyhttps://www.propertyfinder.ae/en/broker/arabian-estates-4464All listings for that brokerage
Broker (agents tab)https://www.propertyfinder.ae/en/broker/arabian-estates-4464?tab=agentsAll agents for that brokerage
Agent searchhttps://www.propertyfinder.ae/en/find-agent/search?location_id=35All agents in that location
Individual agenthttps://www.propertyfinder.ae/en/agent/russell-wilson-298937One agent profile

You can mix URL types โ€” and country domains โ€” in a single run.

Not supported: authenticated routes, paid features, non-propertyfinder.* hosts.

๐ŸŽฏ Use Cases

AudienceWhat they get
Real estate investorsPrice benchmarking by community, sub-community, and property type; track new listings and price changes over time
Brokerage owners & sales managersCompetitor inventory snapshots, agent productivity (listing counts, ratings), super-agent identification
Lead-gen / CRM teamsBulk export of agent and broker contact details (phone, WhatsApp, email) with their active listings
Market analysts & researchersCross-country property datasets across UAE, Saudi Arabia, Bahrain, Egypt, Qatar
Proptech & data startupsReliable structured input for valuation models, search products, and property recommenders
Agencies running paid placementsTrack which listings hold premium / spotlight / community-top-spot tiers

๐Ÿ’ก What Data Can You Extract?

Every field below comes directly from PropertyFinder's mobile API. See Output Structure further down for the full sample and field descriptions.

๐Ÿ  Property Listings

  • Identifiers โ€” propertyId, propertyListingId, reference
  • Listing โ€” ListingTitle, propertyType, propertyCategory (1 = Buy, 2 = Rent), propertySubCategory
  • Pricing โ€” propertyPrice, currency
  • Specs โ€” propertyBedrooms, propertyBathrooms, propertySizeSqft
  • Location โ€” locationTitle, propertyLocationId, propertyLocationTree (city โ†’ community โ†’ sub-community), lat, lon
  • Flags โ€” propertyVerifiedStatus, propertyOwnerVerifiedStatus, propertyBySuperAgent, isAvailable, isDeleted
  • Tier & visibility โ€” propertyProduct (premium/standard), propertySpotlight, propertyCommunityTopSpot, propertyHasProject, propertyLeadValue
  • Compliance โ€” reraNumber, shareUrl
  • Amenities โ€” comma-separated codes in amenities (e.g. BA,BR,BW,AC,CP,...)
  • Images โ€” images array of high-res CDN URLs (1136ร—640)
  • Quick agent/broker lookup โ€” agentName, agentRating, brokerName, brokerId, pfCustomerId

๐Ÿ‘ฅ Brokers & Agents

  • Contact โ€” id, slug, name, email, phone, whatsappPhone, userId
  • Profile โ€” image, position, bio, nationality, licenseNumber, experienceSince, languages
  • Ratings โ€” averageRating, reviewCount, ratingDistribution, ranking, medianListingQuality
  • Listings counts โ€” total + split by residential/commercial ร— rent/sale
  • Top locations โ€” topLocations array (areas of specialization)
  • Transactions โ€” claimedTransactionsSale, claimedTransactionsRent, claimedTransactionsDealVolume, claimedTransactionsList[] (per-deal location, type, price, date, property type)
  • Parent brokerage โ€” nested broker object (id, slug, name, address, location, logo)
  • Compliance โ€” RERA / BRN entries in compliances[]

Image source lives in readme-stuff/ (PNG, retina @2x, SVG). Regenerate via python3 readme-stuff/render_how_it_works.py. The published version is hosted in muhamed-didovic.github.io/assets/. For the Apify listing itself, prefer an Apify key-value store URL (https://api.apify.com/v2/key-value-stores/<id>/records/how-it-works-propertyfinder.png) โ€” Apify Console doesn't reliably resolve relative paths.

Input Configuration

Here's an example of how to set up the input for the PropertyFinder Scraper:

{
"startUrls": [
// Property search results
{
"url": "https://www.propertyfinder.ae/en/search?l=11-18&price_max=1000000"
},
// Individual property
{
"url": "https://www.propertyfinder.ae/en/plp/rent/apartment-for-rent-dubai-dubai-marina-12345678.html"
},
// Broker agency
{
"url": "https://www.propertyfinder.ae/en/broker/arabian-estates-4464"
},
// Agent search results
{
"url": "https://www.propertyfinder.ae/en/find-agent/search?location_id=35"
},
// Individual agent
{
"url": "https://www.propertyfinder.ae/en/agent/russell-wilson-298937"
}
],
"maxItems": 1000,
"monitoringMode": false,
"maxConcurrency": 10,
"minConcurrency": 1,
"maxRequestRetries": 100,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Input Fields Explanation

  • startUrls: Array of objects (or strings) containing PropertyFinder URLs. Supported formats:
    • Search URL: {"url": "https://www.propertyfinder.ae/en/search?l=11-18&c=2"}
    • Property URL: {"url": "https://www.propertyfinder.ae/en/plp/rent/apartment-for-rent-dubai-dubai-marina-12345678.html"}
    • Broker URL: {"url": "https://www.propertyfinder.ae/en/broker/arabian-estates-4464"}
    • Agent URL: {"url": "https://www.propertyfinder.ae/en/agent/russell-wilson-298937"}
  • maxItems: Maximum number of items to scrape (default: 1000).
  • monitoringMode: When enabled, only scrapes new listings compared to previous runs (default: false).
  • maxConcurrency: Maximum number of pages processed simultaneously (default: 10).
  • minConcurrency: Minimum number of pages processed simultaneously (default: 1).
  • maxRequestRetries: Number of retries for failed requests (default: 100).
  • proxy: Proxy configuration object. Defaults to Apify residential proxy.

Monitoring Mode

When monitoringMode is enabled, the scraper will only collect new listings that haven't been seen in previous runs. This is useful for:

  • Tracking new properties as they come on the market
  • Building a historical archive of property listings
  • Monitoring specific areas for new opportunities without duplicating data

How Monitoring Mode Works

  1. The scraper maintains a record of previously scraped property IDs
  2. On subsequent runs with monitoringMode: true, it checks each property against this record
  3. Only new properties (those not in the record) are processed and added to the output
  4. The record is updated with any new property IDs found

Output Structure

Each row in the dataset is one of two record types, depending on what you started from:

  • Property listing row โ€” produced by search URLs, filtered searches, and individual property URLs. Sourced from PropertyFinder's mobile API, with most fields flattened to the top level.
  • Broker / agent row โ€” produced by /broker/... and /agent/... URLs. Nested objects (broker, compliances, claimedTransactionsList, etc.) are preserved as-is from the source.

Mix start URL types in the same run and you'll get a mixed dataset. Numbers from the mobile API arrive as quoted strings (e.g. "propertyPrice": "1580000") โ€” that's the upstream contract, not a bug.

Listing(s) JSON Output

{
"ListingTitle": "Opportunity in a prime location close to services,",
"agentId": "292499",
"agentName": "Mahmoud Yaseein",
"agentRating": "5",
"amenities": "BA,BR,BW,AC,CP,BK,MR,PG,PA,ST,MS,WC,BL,PR,LB,VC",
"brokerId": "10564",
"brokerName": "HONEST REAL ESTATE",
"currency": "AED",
"isAvailable": "true",
"isDeleted": "false",
"lat": "25.390947341918945",
"locationTitle": "Al Helio 2, Al Helio, Ajman",
"lon": "55.599796295166016",
"pfCustomerId": "10438",
"propertyBathrooms": "5",
"propertyBedrooms": "3",
"propertyBySuperAgent": "true",
"propertyCategory": "1",
"propertyCommunityTopSpot": "false",
"propertyHasProject": "false",
"propertyId": "16251734",
"propertyItemListingId": "",
"propertyLeadValue": "100",
"propertyListingId": "8FXTNPHVZ6JWM9ZE5DFYDEGM7R",
"propertyLocationId": "8612",
"propertyLocationTree": "[{\"id\":\"5\",\"name\":\"Ajman\",\"type\":\"CITY\",\"review\":{\"count\":20}},{\"id\":\"8610\",\"name\":\"Al Helio\",\"type\":\"COMMUNITY\",\"review\":{},\"level\":1},{\"id\":\"8612\",\"name\":\"Al Helio 2\",\"type\":\"SUBCOMMUNITY\",\"review\":{},\"level\":2,\"is_tower_insights_visible\":true}]",
"propertyOwnerVerifiedStatus": "false",
"propertyPrice": "1580000",
"propertyProduct": "premium",
"propertyShortlist": "",
"propertySizeSqft": "3014",
"propertySpotlight": "false",
"propertySubCategory": "",
"propertyType": "Villa",
"propertyVerifiedStatus": "false",
"reference": "8FXTNPHVZ6JWM9ZE5DFYDEGM7R",
"reraNumber": "",
"shareUrl": "https://www.propertyfinder.ae/en/plp/buy/villa-for-sale-ajman-al-helio-al-helio-2-16251734.html",
"images": [
"https://static.shared.propertyfinder.ae/media/images/listing/8FXTNPHVZ6JWM9ZE5DFYDEGM7R/b1c28320-e4d5-4b2a-9ba2-b7179b75ce8f/1136x640.jpg",
"https://static.shared.propertyfinder.ae/media/images/listing/8FXTNPHVZ6JWM9ZE5DFYDEGM7R/3e1b7c95-fdd8-4cf4-904e-fad0977a37d6/1136x640.jpg",
"https://static.shared.propertyfinder.ae/media/images/listing/8FXTNPHVZ6JWM9ZE5DFYDEGM7R/db668578-b4a4-4b9e-bd32-5a7c42e522e1/1136x640.jpg"
],
"basicInfo": {}
}

Field Descriptions

The scraper returns a flattened structure with every property field at the top level. Sections below group fields by purpose.

Property Metadata

Core Identifiers

  • propertyId (String): Unique property identifier (e.g., "16251734")
  • propertyListingId (String): Listing reference ID (e.g., "8FXTNPHVZ6JWM9ZE5DFYDEGM7R")
  • reference (String): Same as propertyListingId - used for tracking

Property Details

  • ListingTitle (String): Marketing headline
  • propertyType (String): Property type (e.g., "Villa", "Apartment", "Townhouse")
  • propertyCategory (String): Category ID ("1" = Buy, "2" = Rent)
  • propertySubCategory (String): Sub-category if applicable

Pricing

  • propertyPrice (String): Price amount as string (e.g., "1580000")
  • currency (String): Currency code (e.g., "AED")

Specifications

  • propertyBedrooms (String): Number of bedrooms (e.g., "3")
  • propertyBathrooms (String): Number of bathrooms (e.g., "5")
  • propertySizeSqft (String): Size in square feet (e.g., "3014")

Location

  • locationTitle (String): Full location name (e.g., "Al Helio 2, Al Helio, Ajman")
  • propertyLocationId (String): Location identifier (e.g., "8612")
  • propertyLocationTree (String): JSON string containing hierarchical location data
    • Example: [{"id":"5","name":"Ajman","type":"CITY"},{"id":"8610","name":"Al Helio","type":"COMMUNITY","level":1}]
  • lat (String): Latitude coordinate (e.g., "25.390947341918945")
  • lon (String): Longitude coordinate (e.g., "55.599796295166016")

Agent/Broker Information

  • agentId (String): Agent identifier (e.g., "292499")
  • agentName (String): Agent's name (e.g., "Mahmoud Yaseein")
  • agentRating (String): Agent rating (e.g., "5" for 5-star rating)
  • brokerId (String): Broker/agency identifier (e.g., "10564")
  • brokerName (String): Broker/agency name (e.g., "HONEST REAL ESTATE")
  • pfCustomerId (String): PropertyFinder customer ID

Property Features & Amenities

  • amenities (String): Comma-separated amenity codes (e.g., "BA,BR,BW,AC,CP,BK,MR,PG,PA,ST,MS,WC,BL,PR,LB,VC")
    • Common codes: BA=Balcony, BR=Barbecue, BW=Built-in Wardrobes, AC=A/C, CP=Covered Parking, etc.

Property Status & Flags

  • isAvailable (String): Availability status ("true"/"false")
  • isDeleted (String): Deletion status ("true"/"false")
  • propertyProduct (String): Listing tier (e.g., "premium", "standard")
  • propertyBySuperAgent (String): Listed by super agent ("true"/"false")
  • propertyVerifiedStatus (String): Verification status ("true"/"false")
  • propertyOwnerVerifiedStatus (String): Owner verification ("true"/"false")
  • propertyCommunityTopSpot (String): Top spot in community ("true"/"false")
  • propertyHasProject (String): Part of a project ("true"/"false")
  • propertySpotlight (String): Spotlight listing ("true"/"false")
  • propertyLeadValue (String): Lead value score (e.g., "100")
  • propertyShortlist (String): Shortlist status (typically empty string)

Sharing & Reference

  • shareUrl (String): Full URL to the property listing page
  • propertyItemListingId (String): Additional listing identifier (often empty)
  • reraNumber (String): RERA permit number (may be empty)

Additional Fields

Images

  • images (Array): Array of property image URLs extracted from the mobile API gallery
    • Each URL points to a high-resolution image (1136x640px) optimized for mobile display
    • Images are hosted on PropertyFinder's CDN: https://static.shared.propertyfinder.ae/media/images/listing/...
    • Extracted dynamically from the gallery section regardless of position in the API response

Context Information

  • basicInfo (Object): Additional context from search results or broker listings (varies by entry point)
    • May contain search criteria, broker information, or other metadata depending on how the property was discovered
    • Typically empty for properties scraped via mobile API

Additional Output Types

Broker(s) JSON Output

Shortened sample. Image objects in real output contain ~15 size variants per image; only one is shown here for readability. basicInfo mirrors the top-level fields and basicBrokerInfo adds parent-agency metadata โ€” both are present in the actual dataset but omitted from this sample.

{
"id": 249383,
"slug": "imad-najib",
"name": "Imad Najib",
"email": "imad@arabianestates.ae",
"phone": "+971509789404",
"whatsappPhone": "+971509789404",
"userId": 103767,
"superagent": true,
"verified": true,
"totalProperties": 29,
"propertiesResidentialForRentCount": 1,
"propertiesResidentialForSaleCount": 28,
"propertiesCommercialForRentCount": 0,
"propertiesCommercialForSaleCount": 0,
"avgWhatsappResponseTime": 272,
"experienceSince": 2013,
"image": {
"path": "249383/e461bo.jpg",
"links": {
"desktop": "https://www.propertyfinder.ae/agent/0/260/200/MODE/864726/249383-e461bo.jpg?ctr=ae"
}
},
"position": "Sales Specialist",
"bio": "Sales specialist with 12+ years in Dubai real estate, focused on off-plan investments.",
"nationality": { "code": "SE", "name": "Sweden" },
"linkedinAddress": "",
"licenseNumber": "64447",
"ranking": 93,
"transactionsCount": 0,
"averageRating": 5,
"reviewCount": 2,
"medianListingQuality": 97,
"ratingDistribution": { "score1": 0, "score2": 0, "score3": 0, "score4": 0, "score5": 2 },
"languages": [
{ "id": 1, "name": "English" },
{ "id": 33, "name": "Swedish" }
],
"topLocations": [
{ "id": 105, "name": "Dubai Hills Estate" },
{ "id": 68, "name": "Jumeirah Golf Estates" },
{ "id": 50, "name": "Dubai Marina" }
],
"claimedTransactionsSale": 13,
"claimedTransactionsRent": 1,
"claimedTransactionsDealVolume": 34086000,
"claimedTransactionsList": [
{
"location": { "community": "Dubai Hills Estate", "tower": "Mulberry 2" },
"dealType": "Sale",
"price": 2300000,
"date": "2025-03-03",
"propertyType": "Apartment",
"bedroom": "1"
}
],
"broker": {
"id": 4464,
"slug": "arabian-estates",
"name": "Arabian Estates",
"address": "Office 11C-07, Building I-Rise Tower, Barsha Heights (Tecom), Dubai",
"location": "Dubai",
"url": "/en/broker/arabian-estates-4464"
},
"compliances": [
{ "type": "brn", "value": "64447" }
]
}

Broker(s) JSON Field Reference

Fields grouped by purpose. Every group below maps to a real key in the broker/agent record.

Identity & Contact

  • id (Number): Unique agent identifier
  • slug (String): URL-friendly version of the agent's name
  • name (String): Full name
  • email (String): Contact email
  • phone (String): Primary phone
  • whatsappPhone (String): WhatsApp number
  • userId (Number): Internal user ID
  • image (Object): Profile photo with token, path, and a links map of size variants (agentCard, desktop, desktop2x, mobile, propertyCard, plus *Jpg / *Webp formats)

Status Flags

  • superagent (Boolean): Has super-agent status
  • verified (Boolean): Verified agent
  • isTransactionsVisible (Boolean): Transaction history is public

Listing Counts

  • totalProperties (Number): Total active listings
  • propertiesResidentialForRentCount (Number)
  • propertiesResidentialForSaleCount (Number)
  • propertiesCommercialForRentCount (Number)
  • propertiesCommercialForSaleCount (Number)

Profile

  • position (String): Job title
  • bio (String): Professional biography
  • nationality (Object): { code, name }
  • linkedinAddress (String): LinkedIn URL (often empty)
  • languages (Array): [{ id, name }] of languages spoken
  • experienceSince (Number): Year started in real estate

License & Compliance

  • licenseNumber (String): Professional license number
  • compliances (Array): [{ type, value }] โ€” e.g. type: "brn" for Business Registration Number

Ratings & Quality

  • averageRating (Number): 1โ€“5 rating
  • reviewCount (Number): Total reviews
  • ratingDistribution (Object): { score1, score2, score3, score4, score5 } โ€” count per star
  • ranking (Number): Agent ranking score
  • medianListingQuality (Number): Listing quality score
  • listingLevel (Number): Tier level for listings

Specialization

  • topLocations (Array): [{ id, name }] โ€” areas the agent focuses on

Claimed Transactions

  • claimedTransactionsSale (Number): Sale deals claimed
  • claimedTransactionsRent (Number): Rental deals claimed
  • claimedTransactionsDealVolume (Number): Total deal volume in local currency
  • claimedTransactionsSaleAVGAmount (Number)
  • claimedTransactionsRentAVGAmount (Number)
  • claimedTransactionsSaleTotalAmount (Number)
  • claimedTransactionsRentTotalAmount (Number)
  • claimedTransactionsList (Array): per-deal entries with location, dealType (Sale/Rent), price, date (YYYY-MM-DD), propertyType, bedroom

Performance Metrics

  • avgWhatsappResponseTime (Number): Average WhatsApp response time in seconds
  • transactionsCount (Number): Total transactions

Parent Brokerage

  • broker (Object): Agency the agent belongs to โ€” id, slug, name, logo, address, location, url
  • basicBrokerInfo (Object): Extended brokerage metadata โ€” clientType, clientSegmentWeight, totalAgents, totalSuperAgents, totalBranches, isMainBranch, parentId, licenseLabel, awards

Mirror

  • basicInfo (Object): Convenience copy of the top-level agent fields. Useful when records are passed downstream as a single nested object; otherwise redundant with the flat top level.

โ“ FAQ

Which Property Finder URLs are supported? Search results, individual property pages, broker agency pages (with or without ?tab=agents), agent search (/find-agent/search), and individual agent pages. See the Supported Inputs section for examples.

Can I mix country domains in one run? Yes. The scraper detects the TLD per URL and adjusts the API call accordingly. You can pass .ae, .sa, .bh, .eg, and .qa URLs in the same startUrls array.

Do I get listings, agents, or brokers? Whichever you ask for. Listing URLs return property rows, broker URLs return broker/agent rows, agent URLs return a single agent profile. The dataset will contain a mix if you mix start URL types.

What does monitoring mode do? With monitoringMode: true the scraper keeps a record of property IDs seen in previous runs and only outputs new ones on subsequent runs. Useful for daily/weekly delta crawls.

Why isn't a browser used? PropertyFinder's HTML pages sit behind AWS WAF. The scraper hits the mobile JSON API directly with iOS-spoofed headers โ€” faster, cheaper, and no Playwright needed.

Can I scrape private listings or contact data behind login? No. The scraper only accesses publicly available pages and the public mobile API. There is no authentication step.

What proxy should I use? Apify residential proxies are the default and work for most cases. If they get blocked or the API throws gateway errors, try a different proxy group or set PF_MAX_GATEWAY_ATTEMPTS lower to fail fast.

Are images included? Yes. Each listing record contains an images array of CDN URLs (1136x640 by default).

Explore More Scrapers

If you found this Apify Property Finder Scraper useful, be sure to check out our other powerful real estate scrapers:

For more tools and scrapers, visit memo23's Apify profile. We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

Support

Additional Services


โš ๏ธ Disclaimer

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

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


SEO Keywords

property finder scraper, scrape property finder, propertyfinder.ae scraper, propertyfinder API, Apify property finder, real estate scraper, dubai property scraper, uae real estate data, propertyfinder broker scraper, propertyfinder agent scraper, real estate listings scraper, gulf real estate data, property listings export, real estate market research, property price tracking, real estate lead generation, mena real estate scraper, property data extraction