
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Property Finder listings from the UAE, Saudi Arabia, Qatar, Bahrain and Egypt: price, beds, baths, size, location, agent and broker contact, photos, amenities, description and coordinates, from search URLs, listing pages or location searches with filters.
Scrape property listings from Property Finder in the UAE, Saudi Arabia, Qatar, Bahrain and Egypt. Paste a search URL from the site, or just type a location like "Dubai Marina" and pick your filters. You get price, bedrooms, bathrooms, size, full location, agent and broker contact, photos, amenities, description and coordinates for every listing, with no login, in seconds.
| Field | What it does |
|---|---|
searchUrls | Property Finder search URLs (any filters) or listing URLs (/plp/...html) from any of the five sites |
locations | Place names such as Dubai Marina, Jumeirah Village Circle, Riyadh, The Pearl (or a numeric location id) |
maxItems | Maximum listings per URL or location (default 20, 0 = no limit) |
country | Site used for location searches: ae, sa, qa, bh, eg |
purpose | buy, rent, commercial-buy, commercial-rent |
propertyType, minPrice, maxPrice, bedrooms, bathrooms, minArea, maxArea | Usual filters |
furnishing, completionStatus, rentFrequency, listedWithinDays, keywords, verifiedOnly, superAgentOnly | More filters |
sort | featured, newest, price-low, price-high, beds-least, beds-most |
includeDetails | Also open every listing page for permits, licences, transactions |
Search URLs:
{
"searchUrls": [
"https://www.propertyfinder.ae/en/search?c=1&fu=0&ob=mr",
"https://www.propertyfinder.qa/en/search?c=2&ob=nd"
],
"maxItems": 100
}
Location search with filters:
{
"locations": ["Dubai Marina", "Jumeirah Village Circle"],
"country": "ae",
"purpose": "rent",
"propertyType": "apartment",
"bedrooms": ["1", "2"],
"maxPrice": 150000,
"rentFrequency": "yearly",
"maxItems": 50
}
Each row is one listing. It keeps every field Property Finder returns for the listing (same names as the site, e.g. price, location, location_tree, agent, broker, contact_options, amenity_names, images, listed_date) and adds flat columns that are easy to use in a spreadsheet:
| Field | Example |
|---|---|
url | Listing page |
title, property_type, offering_type | Residential for Rent |
priceValue, currency, pricePeriod | 110000, AED, yearly |
bedroomsCount, bathroomsCount, sizeValue, sizeUnit | 2, 2, 1330, sqft |
locationName, city, community, subCommunity, tower | Dubai, Dubai Marina |
latitude, longitude | Coordinates |
agentName, brokerName, phone, whatsapp, email | Contact of the advertiser |
is_verified, furnished, completion_status, listed_date, reference | Listing status |
coverImage, imageUrls, images_count | Photos |
description, amenity_names | Full text and amenities |
regulatoryInfo, licenses, zone_name, similar_price_transactions | With Include listing page details |
Example (trimmed, sample data):
{
"searchUrl": "https://www.propertyfinder.ae/en/search?c=2&l=50&t=1&bdr%5B%5D=2&fu=0&rp=y&ob=mr",
"id": "158700001",
"title": "Bright 2BR | Marina View | Chiller Free",
"property_type": "Apartment",
"offering_type": "Residential for Rent",
"price": {"value": 110000, "currency": "AED", "period": "yearly", "is_hidden": false},
"bedrooms": "2",
"bathrooms": "2",
"size": {"value": 1330, "unit": "sqft"},
"furnished": "YES",
"is_verified": true,
"listed_date": "2026-10-13T12:00:12Z",
"reference": "SAMPLE-1234",
"amenity_names": ["Balcony", "Shared Pool", "Shared Gym", "Covered Parking"],
"url": "https://www.propertyfinder.ae/en/plp/rent/apartment-for-rent-dubai-dubai-marina-sample-tower-158700001.html",
"country": "AE",
"priceValue": 110000,
"currency": "AED",
"pricePeriod": "yearly",
"bedroomsCount": 2,
"bathroomsCount": 2,
"sizeValue": 1330,
"sizeUnit": "sqft",
"locationName": "Sample Tower, Dubai Marina, Dubai",
"city": "Dubai",
"community": "Dubai Marina",
"tower": "Sample Tower",
"latitude": 25.0805,
"longitude": 55.1403,
"agentName": "Alex Example",
"brokerName": "Example Realty LLC",
"phone": "+971500000000",
"email": "listings@example-realty.ae",
"coverImage": "https://static.shared.propertyfinder.ae/media/images/listing/.../668x452.jpg",
"regulatoryInfo": {"Reference": "SAMPLE-1234", "Broker License": "12345", "Zone name": "Marsa Dubai"}
}
You pay $0.50 per 1,000 listings ($0.0005 per listing) plus platform usage (compute and proxy traffic). In our tests 1,000 listings from search pages took about 30 seconds and used about $0.015 of platform usage, so roughly $0.52 in total. With Include listing page details on, each listing needs one extra page: that added about $0.13 of proxy traffic per 1,000 listings in our tests, while the per-listing price stays the same. You only pay for listings that are saved, and the run stops cleanly at your maximum total charge.
Is it legal to scrape Property Finder? The actor reads publicly visible listing pages, the same as a visitor's browser. Check Property Finder's terms and your local rules (e.g. data protection laws) for how you use the data, especially agent contact details.
Do I need an account, login or my own proxy? No. No login is needed. Datacenter proxies are used by default; if the site blocks them, the run switches to residential proxies by itself.
How many listings can I get?
Everything a search shows: the actor pages through all result pages (25 listings each). Set maxItems to 0 for no limit. Split very large markets (e.g. all of Dubai for sale, about 190,000 listings) by community or property type for faster runs.
Why is a field empty? The advertiser did not fill it (for example no email, no size, or a hidden price). Permit and licence fields need Include listing page details.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them through the API and read the dataset as JSON, CSV or Excel.
Do URLs and filters mix? URLs keep their own filters. The Filters section applies to location searches only.
/new-projects), project promotion cards in search results, and agent or broker directory pages are not scraped; only property listings are.maxItems applies per URL or location; duplicates across inputs are saved once.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchUrlsarrayOptionalProperty Finder URLs
Search result pages or listing pages from propertyfinder.ae (UAE), propertyfinder.sa (Saudi Arabia), propertyfinder.qa (Qatar), propertyfinder.bh (Bahrain) or propertyfinder.eg (Egypt). Set your filters on the site and paste the URL: every filter, sort and location in it is kept. Listing pages (/plp/...html) return that one listing with full details.
locationsarrayOptionalLocations to search
Search by place name instead of a URL, e.g. 'Dubai Marina', 'Jumeirah Village Circle', 'Riyadh' or 'The Pearl'. Uses the country and the filters below. The best matching Property Finder location is used; a numeric location id also works.
maxItemsintegerOptionaldefault 20Maximum listings per URL or location
Maximum listings for each URL or location. 0 means no limit (everything the search has).
Filters for location searches. URLs keep the filters already in them.
countryenumOptionaldefault "ae"Country (for location searches)
Which Property Finder site the location searches use. URLs always use their own site.
purposeenumOptionaldefault "buy"Buy or rent
Residential or commercial, for sale or for rent.
propertyTypeenumOptionalProperty type
Leave empty for all types. Some types exist only in some countries (e.g. chalet and twin house in Egypt and Bahrain).
minPriceintegerOptionalMinimum price
In the local currency (AED, SAR, QAR, BHD or EGP).
maxPriceintegerOptionalMaximum price
In the local currency. For rentals this is the price per rent period.
bedroomsarrayOptionalBedrooms
Pick one or more bedroom counts. Empty means any.
bathroomsarrayOptionalBathrooms
Pick one or more bathroom counts. Empty means any.
minAreaintegerOptionalMinimum area
In the site's own unit: square feet on propertyfinder.ae, square metres on the .sa, .qa, .bh and .eg sites.
maxAreaintegerOptionalMaximum area
In the site's own unit: square feet on propertyfinder.ae, square metres on the .sa, .qa, .bh and .eg sites.
furnishingenumOptionalFurnishing
Empty means any.
completionStatusenumOptionalCompletion status (buy only)
Empty means any.
rentFrequencyenumOptionalRent period (rent only)
Show prices per this period. Empty uses the site default.
listedWithinDaysenumOptionalListed within
Only listings added recently. Empty means any time.
keywordsstringOptionalKeywords
Words that must appear in the listing, e.g. 'sea view' or 'private pool'.
verifiedOnlybooleanOptionaldefault falseVerified listings only
Only listings Property Finder has verified.
superAgentOnlybooleanOptionaldefault falseSuperAgent listings only
Only listings from Property Finder SuperAgents.
sortenumOptionaldefault "featured"Sort by
Order of results for location searches.
includeDetailsbooleanOptionaldefault falseInclude listing page details
Also open each listing page to add permit and regulatory info (RERA/DLD permit, broker and agent licence, zone), recent similar transactions and the rental availability date. Search results already include description, amenities, photos, coordinates and agent contact. Slower (one extra page per listing).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Property Finder. If the site blocks them, the run switches to residential automatically.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| url | any | Listing |
| coverImage | any | Photo |
| title | any | Title |
| offering_type | any | Offering |
| property_type | any | Type |
| priceValue | any | Price |
| currency | any | Currency |
| pricePeriod | any | Period |
| bedroomsCount | any | Beds |
| bathroomsCount | any | Baths |
| sizeValue | any | Size |
| sizeUnit | any | Unit |
| locationName | any | Location |
| city | any | City |
| community | any | Community |
| agentName | any | Agent |
| brokerName | any | Broker |
| phone | any | Phone |
| is_verified | any | Verified |
| furnished | any | Furnished |
| completion_status | any | Completion |
| listed_date | any | Listed |
| reference | any | Reference |
| id | any | ID |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One Property Finder listing saved to the dataset | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/propertyfinder-scraper').call({
"searchUrls": [
"https://www.propertyfinder.ae/en/search?c=1&fu=0&ob=mr"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/propertyfinder-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/propertyfinder-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Yearly rentals from 50,000 to 150,000 AED with full details.
Sale listings on the Saudi site.
Rental listings on the Qatar site.
Verified listings from a search URL, newest first.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.