{
  "data": {
    "id": "xMhCXrO7B9kNH6URi",
    "actId": "6tmA1k9u56N6klleB",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-21T13:41:44.592Z",
    "finishedAt": "2026-10-21T13:41:59.564Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 14809,
      "runTimeSecs": 14.809,
      "computeUnits": 0.016454444444444445,
      "imageSizeBytes": 357691392
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Property Finder MENA Listings & Brokerage Contacts Input\",\n  \"description\": \"Search Property Finder listings across the UAE, Saudi Arabia, Qatar, Bahrain and Egypt, or scrape listing, agent and broker URLs. Returns property details and public brokerage contact data.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to scrape. Search listings by filters, scrape specific listing URLs, or collect agent/broker profiles.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"listings\",\n        \"agents\",\n        \"brokers\"\n      ],\n      \"enumTitles\": [\n        \"Search listings by filters\",\n        \"Scrape listing or search URLs\",\n        \"Scrape agent profiles\",\n        \"Scrape broker profiles\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"country\": {\n      \"title\": \"Country\",\n      \"type\": \"string\",\n      \"description\": \"Market to search or the country used for bare agent/broker ids.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"ae\",\n        \"sa\",\n        \"qa\",\n        \"bh\",\n        \"eg\"\n      ],\n      \"enumTitles\": [\n        \"United Arab Emirates\",\n        \"Saudi Arabia\",\n        \"Qatar\",\n        \"Bahrain\",\n        \"Egypt\"\n      ],\n      \"default\": \"ae\",\n      \"prefill\": \"ae\",\n      \"sectionCaption\": \"Search filters\",\n      \"sectionDescription\": \"Used with mode=search. Pick a city that belongs to this country, or choose All cities.\"\n    },\n    \"city\": {\n      \"title\": \"City / province\",\n      \"type\": \"string\",\n      \"description\": \"City, province or governorate to search. Choose All cities for a country-wide search.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"dubai\",\n        \"abu-dhabi\",\n        \"sharjah\",\n        \"ajman\",\n        \"ras-al-khaimah\",\n        \"fujairah\",\n        \"umm-al-quwain\",\n        \"al-ain\",\n        \"ar-riyadh\",\n        \"makkah-al-mukarramah\",\n        \"eastern\",\n        \"al-madinah-al-munawwarah\",\n        \"al-qassim\",\n        \"asir\",\n        \"tabuk\",\n        \"hail\",\n        \"najran\",\n        \"jazan\",\n        \"doha\",\n        \"lusail\",\n        \"al-wakra\",\n        \"al-khor\",\n        \"al-daayen\",\n        \"al-shamal\",\n        \"umm-salal-mohammed\",\n        \"dukhan-highway\",\n        \"capital-governorate\",\n        \"northern-governorate\",\n        \"southern-governorate\",\n        \"muharraq-governorate\",\n        \"central-governorate\",\n        \"cairo\",\n        \"giza\",\n        \"alexandria\",\n        \"north-coast\",\n        \"new-capital\",\n        \"asyut\",\n        \"demyat\",\n        \"qalyubia\",\n        \"al-fayum\",\n        \"red-sea\",\n        \"south-sainai\",\n        \"matrouh\",\n        \"port-saeed\",\n        \"suez\",\n        \"sharqia\",\n        \"el-esmailia\",\n        \"al-behera\",\n        \"al-daqahlya\",\n        \"al-gharbeya\",\n        \"al-menofeya\"\n      ],\n      \"enumTitles\": [\n        \"All cities (country-wide)\",\n        \"Dubai (AE)\",\n        \"Abu Dhabi (AE)\",\n        \"Sharjah (AE)\",\n        \"Ajman (AE)\",\n        \"Ras Al Khaimah (AE)\",\n        \"Fujairah (AE)\",\n        \"Umm Al Quwain (AE)\",\n        \"Al Ain (AE)\",\n        \"Riyadh (SA)\",\n        \"Makkah (SA)\",\n        \"Eastern Province (SA)\",\n        \"Madinah (SA)\",\n        \"Al Qassim (SA)\",\n        \"Asir (SA)\",\n        \"Tabuk (SA)\",\n        \"Hail (SA)\",\n        \"Najran (SA)\",\n        \"Jazan (SA)\",\n        \"Doha (QA)\",\n        \"Lusail (QA)\",\n        \"Al Wakrah (QA)\",\n        \"Al Khor (QA)\",\n        \"Al Daayen (QA)\",\n        \"Al Shamal (QA)\",\n        \"Umm Salal Mohammed (QA)\",\n        \"Dukhan Highway (QA)\",\n        \"Capital Governorate (BH)\",\n        \"Northern Governorate (BH)\",\n        \"Southern Governorate (BH)\",\n        \"Muharraq Governorate (BH)\",\n        \"Central Governorate (BH)\",\n        \"Cairo (EG)\",\n        \"Giza (EG)\",\n        \"Alexandria (EG)\",\n        \"North Coast (EG)\",\n        \"New Capital (EG)\",\n        \"Asyut (EG)\",\n        \"Damietta (EG)\",\n        \"Qalyubia (EG)\",\n        \"Fayoum (EG)\",\n        \"Red Sea (EG)\",\n        \"South Sinai (EG)\",\n        \"Matrouh (EG)\",\n        \"Port Said (EG)\",\n        \"Suez (EG)\",\n        \"Sharqia (EG)\",\n        \"Ismailia (EG)\",\n        \"Beheira (EG)\",\n        \"Dakahlia (EG)\",\n        \"Gharbia (EG)\",\n        \"Menofia (EG)\"\n      ],\n      \"default\": \"dubai\",\n      \"prefill\": \"dubai\"\n    },\n    \"purpose\": {\n      \"title\": \"Purpose\",\n      \"type\": \"string\",\n      \"description\": \"Buy, rent, or the commercial equivalents.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"buy\",\n        \"rent\",\n        \"commercial-buy\",\n        \"commercial-rent\"\n      ],\n      \"enumTitles\": [\n        \"For sale\",\n        \"For rent\",\n        \"Commercial for sale\",\n        \"Commercial for rent\"\n      ],\n      \"default\": \"buy\",\n      \"prefill\": \"buy\"\n    },\n    \"propertyType\": {\n      \"title\": \"Property type\",\n      \"type\": \"string\",\n      \"description\": \"Residential types: apartment, villa, townhouse, penthouse, duplex, compound, land, whole building, half floor. Commercial types: office, shop, warehouse, factory, showroom.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"apartment\",\n        \"villa\",\n        \"townhouse\",\n        \"penthouse\",\n        \"duplex\",\n        \"compound\",\n        \"land\",\n        \"whole-building\",\n        \"half-floor\",\n        \"office\",\n        \"shop\",\n        \"warehouse\",\n        \"factory\",\n        \"showroom\"\n      ],\n      \"enumTitles\": [\n        \"Any property type\",\n        \"Apartment\",\n        \"Villa\",\n        \"Townhouse\",\n        \"Penthouse\",\n        \"Duplex\",\n        \"Compound\",\n        \"Land\",\n        \"Whole building\",\n        \"Half floor\",\n        \"Office\",\n        \"Shop\",\n        \"Warehouse\",\n        \"Factory\",\n        \"Showroom\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"apartment\"\n    },\n    \"bedrooms\": {\n      \"title\": \"Bedrooms\",\n      \"type\": \"string\",\n      \"description\": \"Bedroom filter for residential searches. Studio is supported for apartments and mixed-type searches.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"studio\",\n        \"1\",\n        \"2\",\n        \"3\",\n        \"4\",\n        \"5\",\n        \"6\",\n        \"7+\"\n      ],\n      \"enumTitles\": [\n        \"Any bedrooms\",\n        \"Studio\",\n        \"1 bedroom\",\n        \"2 bedrooms\",\n        \"3 bedrooms\",\n        \"4 bedrooms\",\n        \"5 bedrooms\",\n        \"6 bedrooms\",\n        \"7+ bedrooms\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"priceMin\": {\n      \"title\": \"Minimum price\",\n      \"type\": \"integer\",\n      \"description\": \"Minimum asking price in the market's local currency (AED, SAR, QAR, BHD or EGP).\",\n      \"minimum\": 0,\n      \"maximum\": 1000000000\n    },\n    \"priceMax\": {\n      \"title\": \"Maximum price\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum asking price in the market's local currency.\",\n      \"minimum\": 0,\n      \"maximum\": 1000000000\n    },\n    \"furnishing\": {\n      \"title\": \"Furnishing\",\n      \"type\": \"string\",\n      \"description\": \"Furnished or unfurnished. Leave on Any furnishing to include both.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"furnished\",\n        \"unfurnished\"\n      ],\n      \"enumTitles\": [\n        \"Any furnishing\",\n        \"Furnished\",\n        \"Unfurnished\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"completionStatus\": {\n      \"title\": \"Completion status\",\n      \"type\": \"string\",\n      \"description\": \"Ready or off-plan. Applies to residential for-sale searches; ignored for rentals and commercial searches.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"completed\",\n        \"off_plan\"\n      ],\n      \"enumTitles\": [\n        \"Any completion status\",\n        \"Ready\",\n        \"Off-plan\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max records\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of listings or profiles to return.\",\n      \"default\": 100,\n      \"minimum\": 1,\n      \"maximum\": 100000,\n      \"prefill\": 2,\n      \"sectionCaption\": \"Output\",\n      \"sectionDescription\": \"The run stops at this many records or when the source runs out.\"\n    },\n    \"includeDetails\": {\n      \"title\": \"Include full listing details\",\n      \"type\": \"boolean\",\n      \"description\": \"Open each listing page to add the full photo gallery, permit validation link, licences, floor plans and agent ratings. Turn off for a faster, lighter dataset.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"startUrls\": {\n      \"title\": \"Listing or search URLs\",\n      \"type\": \"array\",\n      \"description\": \"Property Finder landing, search, listing or short URLs. Used with mode=listings. Sitemap and sitemap-index URLs are also accepted.\",\n      \"editor\": \"requestListSources\",\n      \"sectionCaption\": \"URLs\",\n      \"sectionDescription\": \"Use these instead of the search filters when you already have Property Finder links.\"\n    },\n    \"agentUrls\": {\n      \"title\": \"Agent profile URLs or IDs\",\n      \"type\": \"array\",\n      \"description\": \"Property Finder agent profile URLs, or bare numeric agent IDs. Used with mode=agents.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"sectionCaption\": \"Profiles\",\n      \"sectionDescription\": \"Agent and broker profiles return public profile data and the brokerage's published contact details.\"\n    },\n    \"brokerUrls\": {\n      \"title\": \"Broker profile URLs or IDs\",\n      \"type\": \"array\",\n      \"description\": \"Property Finder broker/agency profile URLs, or bare numeric broker IDs. Used with mode=brokers.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Property Finder MENA Listings & Brokerage Contacts\n\nProperty Finder is the leading real-estate portal across the UAE, Saudi Arabia, Qatar, Bahrain and Egypt. This actor turns its public listing pages into structured property records — prices, rooms, size, location, amenities, permits, photos, floor plans and agent profile details — together with the public contact information that the listing publishes: usually the brokerage's switchboard and email, and at smaller agencies an individual broker's line.\n\nIt works with a city-and-purpose search, with canonical listing URLs you already have, or with agent and broker profile URLs. No login, cookie, API key or proxy setup is required.\n\n## What this actor does\n\n- **Search five markets** — the UAE, Saudi Arabia, Qatar, Bahrain and Egypt, each with local currency and city/province slugs.\n- **Filter by intent** — buy, rent, commercial buy, commercial rent; property type; bedrooms; price range; furnishing; and ready/off-plan for residential sales.\n- **Scrape listing or search URLs** — landing pages, individual listing pages, sitemaps, and search URLs you supply. Canonical detail URLs are robots-allowed; Property Finder's robots.txt disallows `/en/search?*` and `/to/*` short links, so prefer canonical detail URLs.\n- **Collect agent and broker profiles** — agent profiles work in the UAE, Qatar and Bahrain; broker/agency profiles work in all five markets. Saudi and Egyptian agent-profile URLs currently return 404 at the source.\n- **Enrich every listing** — the full photo gallery, community and tower images, permit validation link, licences, floor plans, building facts and agent ratings.\n- **Honest contact data** — Property Finder leaves `agent.email` and `agent.phone` empty (0/217 listings and 0/40 details measured). The actor returns the contact published with the listing: broker email/phone plus the listing's WhatsApp relay number (usually Property Finder's market number, not the agent's personal number). At small agencies the broker line or email can be the agent's own (for example a Gmail address matching the agent's name).\n- **Empty fields are omitted** — a missing value is never replaced with `null` or an empty string. Placeholder numbers published by the source are returned as-is.\n\n## Output per record\n\nEach record has `recordType`: `listing`, `agent` or `broker`.\n\n### Listing\n\n- `id`, `listingId`, `reference`, `rera` / `permitNumber`, `url`, `title`, `description`\n- `purpose` (`sale` / `rent`), `country`, `sourceDomain`\n- `propertyType`, `propertyTypeId`, `offeringType`, `categoryId`\n- `price`, `priceCurrency`, `priceDuration`, `priceHidden`, `pricePerArea`, `pricePerAreaUnit`\n- `bedrooms`, `bedroomsLabel`, `isStudio`, `bathrooms`, `size`, `sizeUnit`, `sizeSqm`\n- `furnished`, `completionStatus`, `completionStatusRaw`\n- `city`, `community`, `subCommunity`, `tower`, `locationFullName`, `locationId`, `locationPath`, `locationTree`\n- `latitude`, `longitude`\n- `coverImage`, `images`, `imagesCount`, `communityImages`, `towerImages`\n- `amenities`, `amenityNames`, `floorPlans`, `floorPlanCount`\n- `agentId`, `agentName`, `agentProfileUrl`, `agentImage`, `agentSlug`, `agentIsSuperAgent`, `agentLanguages`, `agentPosition`, `agentRating`, `agentReviewCount`, `agentYearsOfExperience`, `agentTotalProperties`, `agentTransactionsCount`, `agentLicenseNumber`\n- `brokerId`, `brokerName`, `brokerProfileUrl`, `brokerLogo`, `brokerEmail`, `brokerPhone`, `brokerWhatsapp`, `brokerAddress`, `brokerLicenseNumber`, `brokerSlug`, `clientId`\n- `contactPhone`, `contactEmail`, `contactWhatsapp`, `contactOptions`\n- `permitValidationUrl`, `permitAuthority`, `permitIssuedLicenseNumber`, `zoneName`, `licenses`\n- `isVerified`, `isDirectFromDeveloper`, `isNewConstruction`, `isFeatured`, `isPremium`, `isExclusive`, `isPfExclusive`, `isAvailable`, `isNewInsert`, `isPriceDrop`, `isGreatValue`, `isHighDemand`, `isLuxe`, `isSpotlight`, `isUnderOffer`\n- `leadValue`, `listingLevel`, `videoUrl`, `view360Url`, `has360View`\n- `serviceChargePerSqft`, `buildingDetails`\n- `listedDate`, `lastRefreshedAt`, `scrapedAt`\n\n`agentEmail`, `agentPhone` and `agentWhatsapp` are retained for compatibility but are only present when the source itself publishes them; in practice those fields are almost always absent.\n\n### Agent\n\n- `agentId`, `agentName`, `agentProfileUrl`, `agentImage`, `agentSlug`\n- `agentIsSuperAgent`, `agentVerified`, `agentLanguages`\n- `agentExperienceSince`, `agentTotalProperties`, `agentRentCount`, `agentSaleCount`, `agentCommercialRentCount`, `agentCommercialSaleCount`\n- `agentAvgWhatsappResponseTime`, `agentRating`, `agentReviewCount`\n- `brokerName`, `brokerEmail`, `brokerPhone`, `brokerWhatsapp`, `brokerProfileUrl`\n- `contactPhone`, `contactWhatsapp`, `contactOptions`, `country`, `sourceDomain`, `scrapedAt`\n\n### Broker\n\n- `brokerId`, `brokerName`, `brokerProfileUrl`, `brokerLogo`, `brokerSlug`\n- `brokerEmail`, `brokerPhone`, `brokerAddress`\n- `brokerLicenseNumber`, `brokerLicenseLabel`, `brokerLocation`, `brokerDescription`, `brokerVerified`\n- `brokerTotalProperties`, `brokerTotalAgents`, `brokerTotalSuperAgents`, `brokerRentCount`, `brokerSaleCount`\n- `contactEmail`, `contactPhone`, `contactOptions`, `country`, `sourceDomain`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `listings`, `agents` or `brokers` |\n| `country` | string | `ae` | `ae`, `sa`, `qa`, `bh` or `eg` |\n| `city` | string | `dubai` | City, province or governorate; `all` for a country-wide search |\n| `purpose` | string | `buy` | `buy`, `rent`, `commercial-buy` or `commercial-rent` |\n| `propertyType` | string | `any` | Apartment, villa, townhouse, penthouse, duplex, compound, land, whole building, half floor, office, shop, warehouse, factory or showroom |\n| `bedrooms` | string | `any` | `studio`, 1–6, or `7+`; residential searches only |\n| `priceMin` / `priceMax` | integer | – | Asking price in the market's local currency |\n| `furnishing` | string | `any` | `furnished` or `unfurnished` |\n| `completionStatus` | string | `any` | `completed` or `off_plan`; residential sale searches |\n| `maxItems` | integer | `100` | Maximum records (1–100,000) |\n| `includeDetails` | boolean | `true` | Add the full gallery, permit link, licences, floor plans and agent statistics |\n| `startUrls` | array | – | `[{\"url\": ...}]` objects for listing, search, short or sitemap URLs in `mode: listings` |\n| `agentUrls` | array | – | Agent profile URLs or numeric IDs for `mode: agents` |\n| `brokerUrls` | array | – | Broker profile URLs or numeric IDs for `mode: brokers` |\n\n\n**Profile records:** full profile URLs use their own market; `country` is only needed for bare numeric IDs. City is ignored in agent/broker modes.\n\n**Older inputs:** `max_items` and `fetch_full_details` are no longer schema fields but are still honoured, and they take precedence over platform-injected `maxItems`/`includeDetails` defaults. A saved input with `startUrls` plus a legacy key automatically uses `mode: listings`, so old sitemap prefills keep working with their original limit. `max_retries` and `ignore_url_failures` are accepted but ignored.\n\n### Example: Dubai apartments for sale\n\n```json\n{\n  \"mode\": \"search\",\n  \"country\": \"ae\",\n  \"city\": \"dubai\",\n  \"purpose\": \"buy\",\n  \"propertyType\": \"apartment\",\n  \"bedrooms\": \"2\",\n  \"priceMin\": 1000000,\n  \"priceMax\": 2500000,\n  \"maxItems\": 100\n}\n```\n\n### Example: furnished Riyadh rentals\n\n```json\n{\n  \"mode\": \"search\",\n  \"country\": \"sa\",\n  \"city\": \"ar-riyadh\",\n  \"purpose\": \"rent\",\n  \"propertyType\": \"apartment\",\n  \"furnishing\": \"furnished\",\n  \"maxItems\": 50\n}\n```\n\n### Example: scrape specific listing URLs\n\n```json\n{\n  \"mode\": \"listings\",\n  \"startUrls\": [\n    {\"url\": \"https://www.propertyfinder.ae/en/plp/buy/apartment-for-sale-dubai-downtown-dubai-bellevue-towers-bellevue-tower-2-158222918.html\"},\n    {\"url\": \"https://www.propertyfinder.qa/en/rent/doha/apartments-for-rent.html\"}\n  ],\n  \"maxItems\": 20\n}\n```\n\n### Example: collect broker contacts\n\n```json\n{\n  \"mode\": \"brokers\",\n  \"brokerUrls\": [\"https://www.propertyfinder.ae/en/broker/betterhomes-business-bay-2593\"],\n  \"maxItems\": 5\n}\n```\n\n## Use cases\n\n- **Property investors** — compare asking prices, size and price per square foot across Dubai, Riyadh, Doha, Manama and Cairo.\n- **Lead-generation teams** — collect the public broker/listing contact published on each listing, alongside the listing agent's name and profile.\n- **PropTech and valuation teams** — build a fresh inventory snapshot with coordinates, amenities, completion status and permit links.\n- **Market researchers** — track new listings, price bands, furnishing and ready/off-plan supply in a specific community.\n- **Agency analysts** — monitor an agency's active inventory and profile statistics.\n\n## FAQ\n\n### Which countries are supported?\n\nThe UAE (`propertyfinder.ae`), Saudi Arabia (`.sa`), Qatar (`.qa`), Bahrain (`.bh`) and Egypt (`.eg`). Prices are returned in AED, SAR, QAR, BHD or EGP respectively.\n\n### Does it return agent email addresses and mobile numbers?\n\nNot as `agentEmail`/`agentPhone`. Property Finder leaves those source fields empty on listings and public profiles (0/217 listings, 0/40 details and 0/37 agent profiles measured). The actor returns the agent's name, profile and statistics, plus the contact published on the listing: broker email/phone and the listing WhatsApp relay number, which is usually Property Finder's market number rather than the agent's personal number. At small agencies the broker line or email can be the agent's own (for example a Gmail address matching the agent's name). The legacy `agentEmail`/`agentPhone`/`agentWhatsapp` fields are kept for compatibility and omitted when empty.\n\n### Why are some listings missing bedrooms or completion status?\n\nCommercial offices, warehouses and land often have no bedroom count, and completion status is primarily relevant to for-sale listings. Empty values are omitted rather than filled with zero or a placeholder; all-zero placeholder phone numbers such as `+0000000000` are also dropped.\n\n### What permit data is available?\n\nSaudi listings publish an Elan/REGA permit number and validation link. UAE listings usually publish a Trakheesi validation link and the brokerage licence number, while the permit number itself is less often present. Qatar, Bahrain and Egypt do not publish permit links in the listing payload.\n\n### Can I collect every listing for a city?\n\nProperty Finder allows up to 4,000 pages per search, but the last page varies by query: a broad UAE search returned listings on page 4,000, while Dubai apartments for sale ended at page 3,398 on 2026-10-21. Pages carry 25–35 listings. The actor stops at the first 404 or empty page, and an early source cap is not always flagged in the status message, so watch the emitted count. Split by city, property type or bedrooms to cover more; query-string price/furnishing/completion filters are allowed on page 1 only, because adding `page` to those queries is restricted by robots.txt.\n\n### What does `includeDetails` add?\n\nIt opens each listing's detail page to add the full photo gallery, community and tower images, the permit validation link, licences, floor plans, building details and agent ratings. Turn it off for a lighter dataset with the core search-page fields.\n\n### Are duplicates removed?\n\nYes. Listings are deduplicated by Property Finder's numeric listing ID across pages, URLs and sitemaps.\n\n### Do I need a proxy or a Property Finder account?\n\nNo. The actor reads public pages with no login, cookie or API key. It chooses a working connection automatically.\n\n### Is this affiliated with Property Finder?\n\nNo. This is an independent third-party actor. Property Finder's terms prohibit automated scraping and restrict reuse of the content, and its privacy policy applies to contact data. You are responsible for having a lawful basis and for how you use contact details.\n\n### How fresh is the data?\n\nEach run reads live pages. Schedule the actor daily or weekly to track new listings, price changes and delistings.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "property-finder-mena-listings-and-agent-contact",
      "title": "Property Finder MENA Listings & Brokerage Contacts",
      "description": "Scrape Property Finder listings across the UAE, Saudi Arabia, Qatar, Bahrain and Egypt — prices, size, amenities, permits, photos, and public broker and listing contact details.",
      "version": "2.0",
      "buildTag": "latest",
      "input": {
        "title": "Property Finder MENA Listings & Brokerage Contacts Input",
        "description": "Search Property Finder listings across the UAE, Saudi Arabia, Qatar, Bahrain and Egypt, or scrape listing, agent and broker URLs. Returns property details and public brokerage contact data.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to scrape. Search listings by filters, scrape specific listing URLs, or collect agent/broker profiles.",
            "editor": "select",
            "enum": [
              "search",
              "listings",
              "agents",
              "brokers"
            ],
            "enumTitles": [
              "Search listings by filters",
              "Scrape listing or search URLs",
              "Scrape agent profiles",
              "Scrape broker profiles"
            ],
            "default": "search",
            "prefill": "search"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Market to search or the country used for bare agent/broker ids.",
            "editor": "select",
            "enum": [
              "ae",
              "sa",
              "qa",
              "bh",
              "eg"
            ],
            "enumTitles": [
              "United Arab Emirates",
              "Saudi Arabia",
              "Qatar",
              "Bahrain",
              "Egypt"
            ],
            "default": "ae",
            "prefill": "ae",
            "sectionCaption": "Search filters",
            "sectionDescription": "Used with mode=search. Pick a city that belongs to this country, or choose All cities."
          },
          "city": {
            "title": "City / province",
            "type": "string",
            "description": "City, province or governorate to search. Choose All cities for a country-wide search.",
            "editor": "select",
            "enum": [
              "all",
              "dubai",
              "abu-dhabi",
              "sharjah",
              "ajman",
              "ras-al-khaimah",
              "fujairah",
              "umm-al-quwain",
              "al-ain",
              "ar-riyadh",
              "makkah-al-mukarramah",
              "eastern",
              "al-madinah-al-munawwarah",
              "al-qassim",
              "asir",
              "tabuk",
              "hail",
              "najran",
              "jazan",
              "doha",
              "lusail",
              "al-wakra",
              "al-khor",
              "al-daayen",
              "al-shamal",
              "umm-salal-mohammed",
              "dukhan-highway",
              "capital-governorate",
              "northern-governorate",
              "southern-governorate",
              "muharraq-governorate",
              "central-governorate",
              "cairo",
              "giza",
              "alexandria",
              "north-coast",
              "new-capital",
              "asyut",
              "demyat",
              "qalyubia",
              "al-fayum",
              "red-sea",
              "south-sainai",
              "matrouh",
              "port-saeed",
              "suez",
              "sharqia",
              "el-esmailia",
              "al-behera",
              "al-daqahlya",
              "al-gharbeya",
              "al-menofeya"
            ],
            "enumTitles": [
              "All cities (country-wide)",
              "Dubai (AE)",
              "Abu Dhabi (AE)",
              "Sharjah (AE)",
              "Ajman (AE)",
              "Ras Al Khaimah (AE)",
              "Fujairah (AE)",
              "Umm Al Quwain (AE)",
              "Al Ain (AE)",
              "Riyadh (SA)",
              "Makkah (SA)",
              "Eastern Province (SA)",
              "Madinah (SA)",
              "Al Qassim (SA)",
              "Asir (SA)",
              "Tabuk (SA)",
              "Hail (SA)",
              "Najran (SA)",
              "Jazan (SA)",
              "Doha (QA)",
              "Lusail (QA)",
              "Al Wakrah (QA)",
              "Al Khor (QA)",
              "Al Daayen (QA)",
              "Al Shamal (QA)",
              "Umm Salal Mohammed (QA)",
              "Dukhan Highway (QA)",
              "Capital Governorate (BH)",
              "Northern Governorate (BH)",
              "Southern Governorate (BH)",
              "Muharraq Governorate (BH)",
              "Central Governorate (BH)",
              "Cairo (EG)",
              "Giza (EG)",
              "Alexandria (EG)",
              "North Coast (EG)",
              "New Capital (EG)",
              "Asyut (EG)",
              "Damietta (EG)",
              "Qalyubia (EG)",
              "Fayoum (EG)",
              "Red Sea (EG)",
              "South Sinai (EG)",
              "Matrouh (EG)",
              "Port Said (EG)",
              "Suez (EG)",
              "Sharqia (EG)",
              "Ismailia (EG)",
              "Beheira (EG)",
              "Dakahlia (EG)",
              "Gharbia (EG)",
              "Menofia (EG)"
            ],
            "default": "dubai",
            "prefill": "dubai"
          },
          "purpose": {
            "title": "Purpose",
            "type": "string",
            "description": "Buy, rent, or the commercial equivalents.",
            "editor": "select",
            "enum": [
              "buy",
              "rent",
              "commercial-buy",
              "commercial-rent"
            ],
            "enumTitles": [
              "For sale",
              "For rent",
              "Commercial for sale",
              "Commercial for rent"
            ],
            "default": "buy",
            "prefill": "buy"
          },
          "propertyType": {
            "title": "Property type",
            "type": "string",
            "description": "Residential types: apartment, villa, townhouse, penthouse, duplex, compound, land, whole building, half floor. Commercial types: office, shop, warehouse, factory, showroom.",
            "editor": "select",
            "enum": [
              "any",
              "apartment",
              "villa",
              "townhouse",
              "penthouse",
              "duplex",
              "compound",
              "land",
              "whole-building",
              "half-floor",
              "office",
              "shop",
              "warehouse",
              "factory",
              "showroom"
            ],
            "enumTitles": [
              "Any property type",
              "Apartment",
              "Villa",
              "Townhouse",
              "Penthouse",
              "Duplex",
              "Compound",
              "Land",
              "Whole building",
              "Half floor",
              "Office",
              "Shop",
              "Warehouse",
              "Factory",
              "Showroom"
            ],
            "default": "any",
            "prefill": "apartment"
          },
          "bedrooms": {
            "title": "Bedrooms",
            "type": "string",
            "description": "Bedroom filter for residential searches. Studio is supported for apartments and mixed-type searches.",
            "editor": "select",
            "enum": [
              "any",
              "studio",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7+"
            ],
            "enumTitles": [
              "Any bedrooms",
              "Studio",
              "1 bedroom",
              "2 bedrooms",
              "3 bedrooms",
              "4 bedrooms",
              "5 bedrooms",
              "6 bedrooms",
              "7+ bedrooms"
            ],
            "default": "any",
            "prefill": "any"
          },
          "priceMin": {
            "title": "Minimum price",
            "type": "integer",
            "description": "Minimum asking price in the market's local currency (AED, SAR, QAR, BHD or EGP).",
            "minimum": 0,
            "maximum": 1000000000
          },
          "priceMax": {
            "title": "Maximum price",
            "type": "integer",
            "description": "Maximum asking price in the market's local currency.",
            "minimum": 0,
            "maximum": 1000000000
          },
          "furnishing": {
            "title": "Furnishing",
            "type": "string",
            "description": "Furnished or unfurnished. Leave on Any furnishing to include both.",
            "editor": "select",
            "enum": [
              "any",
              "furnished",
              "unfurnished"
            ],
            "enumTitles": [
              "Any furnishing",
              "Furnished",
              "Unfurnished"
            ],
            "default": "any",
            "prefill": "any"
          },
          "completionStatus": {
            "title": "Completion status",
            "type": "string",
            "description": "Ready or off-plan. Applies to residential for-sale searches; ignored for rentals and commercial searches.",
            "editor": "select",
            "enum": [
              "any",
              "completed",
              "off_plan"
            ],
            "enumTitles": [
              "Any completion status",
              "Ready",
              "Off-plan"
            ],
            "default": "any",
            "prefill": "any"
          },
          "maxItems": {
            "title": "Max records",
            "type": "integer",
            "description": "Maximum number of listings or profiles to return.",
            "default": 100,
            "minimum": 1,
            "maximum": 100000,
            "prefill": 2,
            "sectionCaption": "Output",
            "sectionDescription": "The run stops at this many records or when the source runs out."
          },
          "includeDetails": {
            "title": "Include full listing details",
            "type": "boolean",
            "description": "Open each listing page to add the full photo gallery, permit validation link, licences, floor plans and agent ratings. Turn off for a faster, lighter dataset.",
            "default": true,
            "prefill": true
          },
          "startUrls": {
            "title": "Listing or search URLs",
            "type": "array",
            "description": "Property Finder landing, search, listing or short URLs. Used with mode=listings. Sitemap and sitemap-index URLs are also accepted.",
            "editor": "requestListSources",
            "sectionCaption": "URLs",
            "sectionDescription": "Use these instead of the search filters when you already have Property Finder links."
          },
          "agentUrls": {
            "title": "Agent profile URLs or IDs",
            "type": "array",
            "description": "Property Finder agent profile URLs, or bare numeric agent IDs. Used with mode=agents.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "sectionCaption": "Profiles",
            "sectionDescription": "Agent and broker profiles return public profile data and the brokerage's published contact details."
          },
          "brokerUrls": {
            "title": "Broker profile URLs or IDs",
            "type": "array",
            "description": "Property Finder broker/agency profile URLs, or bare numeric broker IDs. Used with mode=brokers.",
            "editor": "stringList",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Property Finder MENA Listings & Brokerage Contacts Output",
        "description": "Dataset of Property Finder listings, agent profiles and brokerages with prices, location, amenities, permit data, media and public broker/listing contact details.",
        "type": "object",
        "properties": {
          "listings": {
            "type": "string",
            "title": "Property Finder records",
            "description": "Listing, agent and broker records produced by this run.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "readme": "# Property Finder MENA Listings & Brokerage Contacts\n\nProperty Finder is the leading real-estate portal across the UAE, Saudi Arabia, Qatar, Bahrain and Egypt. This actor turns its public listing pages into structured property records — prices, rooms, size, location, amenities, permits, photos, floor plans and agent profile details — together with the public contact information that the listing publishes: usually the brokerage's switchboard and email, and at smaller agencies an individual broker's line.\n\nIt works with a city-and-purpose search, with canonical listing URLs you already have, or with agent and broker profile URLs. No login, cookie, API key or proxy setup is required.\n\n## What this actor does\n\n- **Search five markets** — the UAE, Saudi Arabia, Qatar, Bahrain and Egypt, each with local currency and city/province slugs.\n- **Filter by intent** — buy, rent, commercial buy, commercial rent; property type; bedrooms; price range; furnishing; and ready/off-plan for residential sales.\n- **Scrape listing or search URLs** — landing pages, individual listing pages, sitemaps, and search URLs you supply. Canonical detail URLs are robots-allowed; Property Finder's robots.txt disallows `/en/search?*` and `/to/*` short links, so prefer canonical detail URLs.\n- **Collect agent and broker profiles** — agent profiles work in the UAE, Qatar and Bahrain; broker/agency profiles work in all five markets. Saudi and Egyptian agent-profile URLs currently return 404 at the source.\n- **Enrich every listing** — the full photo gallery, community and tower images, permit validation link, licences, floor plans, building facts and agent ratings.\n- **Honest contact data** — Property Finder leaves `agent.email` and `agent.phone` empty (0/217 listings and 0/40 details measured). The actor returns the contact published with the listing: broker email/phone plus the listing's WhatsApp relay number (usually Property Finder's market number, not the agent's personal number). At small agencies the broker line or email can be the agent's own (for example a Gmail address matching the agent's name).\n- **Empty fields are omitted** — a missing value is never replaced with `null` or an empty string. Placeholder numbers published by the source are returned as-is.\n\n## Output per record\n\nEach record has `recordType`: `listing`, `agent` or `broker`.\n\n### Listing\n\n- `id`, `listingId`, `reference`, `rera` / `permitNumber`, `url`, `title`, `description`\n- `purpose` (`sale` / `rent`), `country`, `sourceDomain`\n- `propertyType`, `propertyTypeId`, `offeringType`, `categoryId`\n- `price`, `priceCurrency`, `priceDuration`, `priceHidden`, `pricePerArea`, `pricePerAreaUnit`\n- `bedrooms`, `bedroomsLabel`, `isStudio`, `bathrooms`, `size`, `sizeUnit`, `sizeSqm`\n- `furnished`, `completionStatus`, `completionStatusRaw`\n- `city`, `community`, `subCommunity`, `tower`, `locationFullName`, `locationId`, `locationPath`, `locationTree`\n- `latitude`, `longitude`\n- `coverImage`, `images`, `imagesCount`, `communityImages`, `towerImages`\n- `amenities`, `amenityNames`, `floorPlans`, `floorPlanCount`\n- `agentId`, `agentName`, `agentProfileUrl`, `agentImage`, `agentSlug`, `agentIsSuperAgent`, `agentLanguages`, `agentPosition`, `agentRating`, `agentReviewCount`, `agentYearsOfExperience`, `agentTotalProperties`, `agentTransactionsCount`, `agentLicenseNumber`\n- `brokerId`, `brokerName`, `brokerProfileUrl`, `brokerLogo`, `brokerEmail`, `brokerPhone`, `brokerWhatsapp`, `brokerAddress`, `brokerLicenseNumber`, `brokerSlug`, `clientId`\n- `contactPhone`, `contactEmail`, `contactWhatsapp`, `contactOptions`\n- `permitValidationUrl`, `permitAuthority`, `permitIssuedLicenseNumber`, `zoneName`, `licenses`\n- `isVerified`, `isDirectFromDeveloper`, `isNewConstruction`, `isFeatured`, `isPremium`, `isExclusive`, `isPfExclusive`, `isAvailable`, `isNewInsert`, `isPriceDrop`, `isGreatValue`, `isHighDemand`, `isLuxe`, `isSpotlight`, `isUnderOffer`\n- `leadValue`, `listingLevel`, `videoUrl`, `view360Url`, `has360View`\n- `serviceChargePerSqft`, `buildingDetails`\n- `listedDate`, `lastRefreshedAt`, `scrapedAt`\n\n`agentEmail`, `agentPhone` and `agentWhatsapp` are retained for compatibility but are only present when the source itself publishes them; in practice those fields are almost always absent.\n\n### Agent\n\n- `agentId`, `agentName`, `agentProfileUrl`, `agentImage`, `agentSlug`\n- `agentIsSuperAgent`, `agentVerified`, `agentLanguages`\n- `agentExperienceSince`, `agentTotalProperties`, `agentRentCount`, `agentSaleCount`, `agentCommercialRentCount`, `agentCommercialSaleCount`\n- `agentAvgWhatsappResponseTime`, `agentRating`, `agentReviewCount`\n- `brokerName`, `brokerEmail`, `brokerPhone`, `brokerWhatsapp`, `brokerProfileUrl`\n- `contactPhone`, `contactWhatsapp`, `contactOptions`, `country`, `sourceDomain`, `scrapedAt`\n\n### Broker\n\n- `brokerId`, `brokerName`, `brokerProfileUrl`, `brokerLogo`, `brokerSlug`\n- `brokerEmail`, `brokerPhone`, `brokerAddress`\n- `brokerLicenseNumber`, `brokerLicenseLabel`, `brokerLocation`, `brokerDescription`, `brokerVerified`\n- `brokerTotalProperties`, `brokerTotalAgents`, `brokerTotalSuperAgents`, `brokerRentCount`, `brokerSaleCount`\n- `contactEmail`, `contactPhone`, `contactOptions`, `country`, `sourceDomain`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `listings`, `agents` or `brokers` |\n| `country` | string | `ae` | `ae`, `sa`, `qa`, `bh` or `eg` |\n| `city` | string | `dubai` | City, province or governorate; `all` for a country-wide search |\n| `purpose` | string | `buy` | `buy`, `rent`, `commercial-buy` or `commercial-rent` |\n| `propertyType` | string | `any` | Apartment, villa, townhouse, penthouse, duplex, compound, land, whole building, half floor, office, shop, warehouse, factory or showroom |\n| `bedrooms` | string | `any` | `studio`, 1–6, or `7+`; residential searches only |\n| `priceMin` / `priceMax` | integer | – | Asking price in the market's local currency |\n| `furnishing` | string | `any` | `furnished` or `unfurnished` |\n| `completionStatus` | string | `any` | `completed` or `off_plan`; residential sale searches |\n| `maxItems` | integer | `100` | Maximum records (1–100,000) |\n| `includeDetails` | boolean | `true` | Add the full gallery, permit link, licences, floor plans and agent statistics |\n| `startUrls` | array | – | `[{\"url\": ...}]` objects for listing, search, short or sitemap URLs in `mode: listings` |\n| `agentUrls` | array | – | Agent profile URLs or numeric IDs for `mode: agents` |\n| `brokerUrls` | array | – | Broker profile URLs or numeric IDs for `mode: brokers` |\n\n\n**Profile records:** full profile URLs use their own market; `country` is only needed for bare numeric IDs. City is ignored in agent/broker modes.\n\n**Older inputs:** `max_items` and `fetch_full_details` are no longer schema fields but are still honoured, and they take precedence over platform-injected `maxItems`/`includeDetails` defaults. A saved input with `startUrls` plus a legacy key automatically uses `mode: listings`, so old sitemap prefills keep working with their original limit. `max_retries` and `ignore_url_failures` are accepted but ignored.\n\n### Example: Dubai apartments for sale\n\n```json\n{\n  \"mode\": \"search\",\n  \"country\": \"ae\",\n  \"city\": \"dubai\",\n  \"purpose\": \"buy\",\n  \"propertyType\": \"apartment\",\n  \"bedrooms\": \"2\",\n  \"priceMin\": 1000000,\n  \"priceMax\": 2500000,\n  \"maxItems\": 100\n}\n```\n\n### Example: furnished Riyadh rentals\n\n```json\n{\n  \"mode\": \"search\",\n  \"country\": \"sa\",\n  \"city\": \"ar-riyadh\",\n  \"purpose\": \"rent\",\n  \"propertyType\": \"apartment\",\n  \"furnishing\": \"furnished\",\n  \"maxItems\": 50\n}\n```\n\n### Example: scrape specific listing URLs\n\n```json\n{\n  \"mode\": \"listings\",\n  \"startUrls\": [\n    {\"url\": \"https://www.propertyfinder.ae/en/plp/buy/apartment-for-sale-dubai-downtown-dubai-bellevue-towers-bellevue-tower-2-158222918.html\"},\n    {\"url\": \"https://www.propertyfinder.qa/en/rent/doha/apartments-for-rent.html\"}\n  ],\n  \"maxItems\": 20\n}\n```\n\n### Example: collect broker contacts\n\n```json\n{\n  \"mode\": \"brokers\",\n  \"brokerUrls\": [\"https://www.propertyfinder.ae/en/broker/betterhomes-business-bay-2593\"],\n  \"maxItems\": 5\n}\n```\n\n## Use cases\n\n- **Property investors** — compare asking prices, size and price per square foot across Dubai, Riyadh, Doha, Manama and Cairo.\n- **Lead-generation teams** — collect the public broker/listing contact published on each listing, alongside the listing agent's name and profile.\n- **PropTech and valuation teams** — build a fresh inventory snapshot with coordinates, amenities, completion status and permit links.\n- **Market researchers** — track new listings, price bands, furnishing and ready/off-plan supply in a specific community.\n- **Agency analysts** — monitor an agency's active inventory and profile statistics.\n\n## FAQ\n\n### Which countries are supported?\n\nThe UAE (`propertyfinder.ae`), Saudi Arabia (`.sa`), Qatar (`.qa`), Bahrain (`.bh`) and Egypt (`.eg`). Prices are returned in AED, SAR, QAR, BHD or EGP respectively.\n\n### Does it return agent email addresses and mobile numbers?\n\nNot as `agentEmail`/`agentPhone`. Property Finder leaves those source fields empty on listings and public profiles (0/217 listings, 0/40 details and 0/37 agent profiles measured). The actor returns the agent's name, profile and statistics, plus the contact published on the listing: broker email/phone and the listing WhatsApp relay number, which is usually Property Finder's market number rather than the agent's personal number. At small agencies the broker line or email can be the agent's own (for example a Gmail address matching the agent's name). The legacy `agentEmail`/`agentPhone`/`agentWhatsapp` fields are kept for compatibility and omitted when empty.\n\n### Why are some listings missing bedrooms or completion status?\n\nCommercial offices, warehouses and land often have no bedroom count, and completion status is primarily relevant to for-sale listings. Empty values are omitted rather than filled with zero or a placeholder; all-zero placeholder phone numbers such as `+0000000000` are also dropped.\n\n### What permit data is available?\n\nSaudi listings publish an Elan/REGA permit number and validation link. UAE listings usually publish a Trakheesi validation link and the brokerage licence number, while the permit number itself is less often present. Qatar, Bahrain and Egypt do not publish permit links in the listing payload.\n\n### Can I collect every listing for a city?\n\nProperty Finder allows up to 4,000 pages per search, but the last page varies by query: a broad UAE search returned listings on page 4,000, while Dubai apartments for sale ended at page 3,398 on 2026-10-21. Pages carry 25–35 listings. The actor stops at the first 404 or empty page, and an early source cap is not always flagged in the status message, so watch the emitted count. Split by city, property type or bedrooms to cover more; query-string price/furnishing/completion filters are allowed on page 1 only, because adding `page` to those queries is restricted by robots.txt.\n\n### What does `includeDetails` add?\n\nIt opens each listing's detail page to add the full photo gallery, community and tower images, the permit validation link, licences, floor plans, building details and agent ratings. Turn it off for a lighter dataset with the core search-page fields.\n\n### Are duplicates removed?\n\nYes. Listings are deduplicated by Property Finder's numeric listing ID across pages, URLs and sitemaps.\n\n### Do I need a proxy or a Property Finder account?\n\nNo. The actor reads public pages with no login, cookie or API key. It chooses a working connection automatically.\n\n### Is this affiliated with Property Finder?\n\nNo. This is an independent third-party actor. Property Finder's terms prohibit automated scraping and restrict reuse of the content, and its privacy policy applies to contact data. You are responsible for having a lawful basis and for how you use contact details.\n\n### How fresh is the data?\n\nEach run reads live pages. Schedule the actor daily or weekly to track new listings, price changes and delistings.\n",
      "dockerfile": "../Dockerfile",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "title",
                  "purpose",
                  "price",
                  "priceCurrency",
                  "propertyType",
                  "bedrooms",
                  "bathrooms",
                  "city",
                  "community",
                  "brokerName",
                  "brokerPhone",
                  "isVerified",
                  "url"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "title": {
                    "label": "Title",
                    "format": "text"
                  },
                  "purpose": {
                    "label": "Purpose",
                    "format": "text"
                  },
                  "price": {
                    "label": "Price",
                    "format": "number"
                  },
                  "priceCurrency": {
                    "label": "Currency",
                    "format": "text"
                  },
                  "propertyType": {
                    "label": "Type",
                    "format": "text"
                  },
                  "bedrooms": {
                    "label": "Beds",
                    "format": "number"
                  },
                  "bathrooms": {
                    "label": "Baths",
                    "format": "number"
                  },
                  "city": {
                    "label": "City",
                    "format": "text"
                  },
                  "community": {
                    "label": "Community",
                    "format": "text"
                  },
                  "brokerName": {
                    "label": "Brokerage",
                    "format": "text"
                  },
                  "brokerPhone": {
                    "label": "Broker phone",
                    "format": "text"
                  },
                  "isVerified": {
                    "label": "Verified",
                    "format": "boolean"
                  },
                  "url": {
                    "label": "URL",
                    "format": "link"
                  }
                }
              }
            },
            "detailed": {
              "title": "Detailed",
              "transformation": {
                "fields": [
                  "title",
                  "purpose",
                  "price",
                  "priceCurrency",
                  "priceDuration",
                  "pricePerArea",
                  "pricePerAreaUnit",
                  "propertyType",
                  "offeringType",
                  "bedrooms",
                  "bathrooms",
                  "size",
                  "sizeUnit",
                  "furnished",
                  "completionStatus",
                  "city",
                  "community",
                  "subCommunity",
                  "tower",
                  "agentName",
                  "agentRating",
                  "brokerName",
                  "brokerEmail",
                  "brokerPhone",
                  "brokerWhatsapp",
                  "permitNumber",
                  "permitValidationUrl",
                  "isVerified",
                  "floorPlanCount",
                  "imagesCount",
                  "listedDate",
                  "url"
                ]
              },
              "display": {
                "component": "table"
              }
            },
            "contacts": {
              "title": "Contacts",
              "transformation": {
                "fields": [
                  "recordType",
                  "title",
                  "agentName",
                  "agentProfileUrl",
                  "brokerName",
                  "brokerEmail",
                  "brokerPhone",
                  "brokerWhatsapp",
                  "contactPhone",
                  "contactWhatsapp",
                  "url"
                ]
              },
              "display": {
                "component": "table"
              }
            }
          }
        }
      }
    },
    "buildNumber": "2.0.1",
    "imageDigest": "502767c468ff611b22770025cfe08be90f13d8a26a4926a36246876a019ce7e1",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "2.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.016454444444444445
    }
  }
}