PropertyFinder Scraper (UAE, Saudi, Qatar, Bahrain, Egypt)
Pricing
from $1.26 / 1,000 results
PropertyFinder Scraper (UAE, Saudi, Qatar, Bahrain, Egypt)
Scrapes property listings from PropertyFinder across five Gulf and Egyptian markets. Each row carries price, area, bedrooms, address with GPS coordinates, property type, completion status, agent and agency, RERA permit data and photos. Search plus optional full listing details.
Pricing
from $1.26 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
PropertyFinder Scraper — UAE, Saudi Arabia, Qatar, Bahrain, Egypt
Scrapes property listings from PropertyFinder, the largest property portal in the Gulf, across five markets from one Actor:
| Market | Site | Example scale (residential for sale) |
|---|---|---|
| United Arab Emirates | propertyfinder.ae | ~187,000 listings |
| Egypt | propertyfinder.eg | ~182,000 listings |
| Qatar | propertyfinder.qa | ~10,600 listings |
| Bahrain | propertyfinder.bh | ~8,900 listings |
| Saudi Arabia | propertyfinder.sa | ~4,400 listings |
Residential and commercial, for sale and for rent, with optional full listing details including RERA permit data.
What each row contains
Every listing is emitted as upstream returns it, so nothing is lost to renaming. Highlights:
- Price — value, currency and period, plus price per area
- Size — value and unit, plus service fee per sqft (details mode)
- Bedrooms / bathrooms / rooms
- Location — full name, slug, GPS coordinates, and the complete
location_treefrom city → community → subcommunity → tower, each with its own id you can feed back in as a narrower query - Property type, offering type, completion status (ready / off-plan), furnishing
- Agent — name, photo, licence number (details mode), super-agent flag
- Agency / broker — name, logo, address
- RERA / regulatory data — permit numbers and the full regulatory table (details mode)
- Reference, listed date, verification and quality flags
- All photo URLs and image count
Record types
One dataset, three recordType values:
recordType | One per | Purpose |
|---|---|---|
SEARCH_SUMMARY | query | upstream's own total, requests spent, and the honesty flags below |
PROPERTY | listing | the listing itself, upstream shape preserved |
ERROR | failed input | so every input maps to at least one row |
Honesty flags — read these before trusting a filtered run
PropertyFinder answers several kinds of bad input with HTTP 200 and plausible-looking data rather than an error. This Actor detects each case and reports it rather than passing the wrong data off as right.
locationApplied— a location id PropertyFinder cannot resolve is not rejected; it silently returns the entire country. When this isfalsethe Actor stops before paginating and emits zero property rows, so a mistyped location can never quietly fill your dataset with the wrong city.propertyTypeApplied— an unknown numeric type returns a page containing zero real listings. Types are validated up front against the list each market publishes for itself.categoryBaselineTotal— the unfiltered total for the same category and type. Compare it withtotalMatchesto see for yourself that your filters actually narrowed the search.promoCardsSkipped— results pages interleave developer advertising cards with real listings. Those are counted here and never emitted as properties.
Input
| Field | Notes |
|---|---|
country | ae, sa, qa, bh, eg |
locations | City or community names (Dubai, Dubai Marina, New Cairo City), or numeric ids for any level. Empty = whole market |
category | buy, rent, commercial-buy, commercial-rent |
propertyType | Slug, label or id — e.g. apartment, villa, office-space. Empty = all |
bedrooms | Multi-select, 0 = studio |
minPrice / maxPrice | Market's own currency |
minArea / maxArea | sqft |
keywords | Free text across title and description |
furnished | furnished / unfurnished / partly furnished |
completionStatus | completed (ready) or off_plan |
listedWithin | 24 hours … 90 days |
sort | featured, newest, price, beds |
includePropertyDetails | One extra request per listing; adds permit/regulatory data |
maxItems | Per location |
Every filter offered here was verified to genuinely change the result count. Filters that PropertyFinder silently ignores are deliberately absent — notably bathrooms, for which the site publishes a full dropdown in its UI but accepts no working URL parameter (six candidate spellings all returned the unfiltered total).
Finding narrower areas
Run once broadly, then read location.id or location_tree off any row and
use that id as a locations entry. Community names are resolved
automatically for the largest cities in each market; ids work at every level
including individual towers.
Example
{"country": "ae","locations": ["Dubai Marina", "Business Bay"],"category": "buy","propertyType": "apartment","bedrooms": ["2", "3"],"minPrice": 1000000,"completionStatus": "completed","sort": "newest","includePropertyDetails": true,"maxItems": 200}
Known limits
- Result window. A single query pages through thousands of results, but broad queries are enormous (the UAE apartment search alone reports ~6,000 pages). Narrow by city, community, type or price rather than crawling a whole market — several narrow queries return far more usable data than one wide one.
- A cost guard stops one query at 400 pages. Raise
maxItemsand narrow the query to go deeper. totalMatchesis read from page 1 only. The live index shifts under a running crawl, so later pages report slightly different totals.- Turkey (propertyfinder.com.tr) is not supported. It runs a different front end with no embedded data.
- New Projects is not a category here. That surface returns developer project cards rather than individual listings.
- Listings de-listed mid-run return 404 on the detail pass. The search row is
still emitted, with
detailFetched: false.
Anti-bot
None encountered. Eight TLS fingerprints were tested against search pages, paginated search pages and listing detail pages — all 24 combinations returned data cleanly, with no warmup, cookies or tokens. The Actor still rotates fingerprints and exit IPs on failure, and defaults to residential proxy, because cloud egress is fingerprinted differently from a local test.