Furas Radar — Saudi Municipal Investment Opportunities (فرص) avatar

Furas Radar — Saudi Municipal Investment Opportunities (فرص)

Pricing

from $10.00 / 1,000 opportunity delivereds

Go to Apify Store
Furas Radar — Saudi Municipal Investment Opportunities (فرص)

Furas Radar — Saudi Municipal Investment Opportunities (فرص)

Saudi municipal investment and rental opportunities from Furas (فرص), the Ministry of Municipalities and Housing platform. Clean JSON: type, activity, amana, baladya, city, area, booklet price in SAR, sell and envelope-opening dates, contract duration, coordinates and a link to the opportunity page.

Pricing

from $10.00 / 1,000 opportunity delivereds

Rating

0.0

(0)

Developer

Dottti

Dottti

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Get Saudi municipal investment and rental opportunities from Furas (فرص) as clean JSON, CSV or Excel. Furas is the platform of the Ministry of Municipalities and Housing.

Each record gives you the site, the activity, the amana and municipality, the area, the price in SAR, the key dates, the contract length and the map coordinates. It also links to the opportunity page on Furas.

Who uses this

  • Retail and F&B chains find kiosks, cafés, restaurant plots and mobile-cart sites in the cities they target.
  • Real-estate investors track land and building opportunities by area, region and contract length.
  • Site-selection firms load opportunities with coordinates straight into a map or GIS tool.

Looking for government tenders as well? See Etimad Tender Radar.

What you get

One record per opportunity. This record came from a live run on 20 October 2026. It was checked against its page on Furas: area 1000 m², contract 24 months, booklet price 500, envelopes open 2026-12-23.

{
"opportunityId": "01-26-008203-7005",
"url": "https://furas.momah.gov.sa/opportunity/01-26-008203-7005?type=Investment",
"description": "انشاء و تشغيل و صيانة كشك تقديم اطعمه ومشروبات - الأنشطة التجارية - كشك - كشك",
"status": "Announced",
"isOpenForPurchase": true,
"daysUntilLastRfpSellDate": 64,
"opportunityTypeId": "01",
"opportunityType": "Investment",
"opportunityTypeAr": "الفرص الاستثمارية",
"activityType": "الأنشطة التجارية",
"subActivityType": "أخرى",
"amanaId": "008",
"amana": "أمانة منطقة القصيم",
"baladya": "بلدية محافظة المذنب",
"region": "منطقة القصيم",
"district": "منتزهات خرطم",
"latitude": 25.878197957999987,
"longitude": 44.231771611,
"areaSqm": 1000,
"currency": "SAR",
"rfpPriceSar": 500,
"pricePerSqmSar": null,
"durationValue": 24,
"durationUnit": "months",
"durationYears": 2,
"announcedDate": "2026-10-20",
"lastRfpSellAt": "2026-12-23T04:00:00.000Z",
"lastRfpSellDate": "2026-12-23",
"envelopesOpenDate": "2026-12-23",
"isInvitation": false,
"isInvestmentCenter": false,
"raw": {
"OPPORTUNITYID": "01-26-008203-7005",
"RFPPRICE": "500",
"TOTALSPACEINMETERS": "1000.0",
"LASTRFPSELLDATE": 1797998400000,
"DURATION": 24
}
}

The example is shortened. A full record has about 60 keys, and raw holds every original field from the source.

Notes on the fields

  • Dates come twice. ...At is ISO-8601 in UTC. ...Date is the calendar date in Saudi Arabia (UTC+3). Use the ...Date keys. The source stores dates at different times of day, so the time in the ...At keys carries no meaning.
  • Money is in Saudi riyals (currency: "SAR"). For investment opportunities, rfpPriceSar is the booklet price (سعر الكراسة). For temporary rentals (type 02), the same source field is the price per square metre (سعر المتر), so it goes in pricePerSqmSar. A value of 0 is kept as 0. The Furas map shows 0 as "متغير" (variable).
  • Contract length is in months for investment opportunities and in days for temporary rentals. durationUnit says which.
  • Coordinates are WGS84 latitude and longitude.
  • url follows the pattern the Furas map uses. It was checked on four live opportunities.
  • raw keeps the original fields exactly as published, so you can trace any value back to the source. Two fields hold staff usernames (CREATED_USER, LAST_EDITED_USER). Those two are removed.
  • Empty source fields come back as null. Nothing is guessed.

Filters

FieldWhat it does
statusopen (default): announced opportunities whose booklet can still be bought. This is the Furas map's own default. announced: every announced opportunity. all: every record, including cancelled and old ones.
amanaIdsOne or more amanas, for example 004 Riyadh, 005 Jeddah, 006 Eastern Province. The input form lists all 17.
opportunityTypeIds01 Investment, 02 Temporary Rental, 05 Qualifying, 07 Direct Rental.
cityContainsText in the city, municipality, district or region name. Example: الرياض.
activityContainsText in the activity, sub-activity or location type. Examples: التجارية, العربات المتنقلة.
keywordsWords in the description, activity, location type, municipality, city, district or street. Example: مطعم, مقهى.
matchModeany (default) or all keywords.
minArea / maxAreaSite area in square metres.
publishedAfterYYYY-MM-DD. Keeps opportunities announced on or after this date.
sortBynewest (default) or closingSoon.
maxItemsHard cap on delivered opportunities. Default 100. This is also your cost cap.
includeGeometryLatitude and longitude. On by default.

Arabic text filters ignore common spelling differences. مقهي matches مقهى. الانشطه matches الأنشطة.

The status, amana, type and date filters run on the Furas server. The text and area filters run after download. A narrow text search over a large status can therefore read many records before it finds matches.

Example: cafés and restaurants in Riyadh, closing soonest first

{
"status": "open",
"amanaIds": ["004"],
"keywords": ["مطعم", "مقهى", "كوفي"],
"sortBy": "closingSoon",
"maxItems": 50
}

Example: land of 5,000 m² or more announced since 1 October 2026

{
"status": "open",
"activityContains": "الاراضي",
"minArea": 5000,
"publishedAfter": "2026-10-01",
"maxItems": 200
}

Daily alert in 3 steps

  1. Set your filters. Set publishedAfter to yesterday's date, or set sortBy to newest with a small maxItems.
  2. Click Save as a new task. Then add a daily schedule to the task.
  3. Open the Integrations tab and connect the task to email, Slack or Google Sheets. New opportunities then arrive every morning.

Pricing

$0.01 per opportunity delivered to your dataset ($10 per 1,000). You pay only for opportunities that pass your filters and are stored. maxItems caps the cost of every run. A run that delivers 100 opportunities costs $1.00.

Size of the source

Counts from 20 October 2026:

  • About 202,000 records in total, across all statuses.
  • About 80,000 marked Announced.
  • About 6,500 open for purchase (the default filter).

Limits

  • Access from outside Saudi Arabia. The data comes from the public map service that the Furas website uses. The ministry's firewall may refuse requests from some countries or from data-centre IP addresses. When that happens, the run stops with a clear error. Nothing is delivered and nothing is charged.
  • Pacing. The Actor waits 1 second between requests by default. It retries network errors and server errors with exponential backoff.
  • Amana codes. A small share of records carry no amana code, and a few carry a code that does not match their amana name. The amanaIds filter uses the code, so those records are left out of an amana-filtered run.
  • Source data quality. Values are passed through as published. Some records have a blank city, an area of 0, or a price that looks wrong (for example 0.0004 SAR per m²). The raw object shows exactly what the source holds.
  • Documents. Booklets (كراسة الشروط) are not downloaded. Use the url to open the opportunity page, where they are listed.
  • No login. The Actor uses only the public map query service. It uses no account, token or credential.

Development

npm install
npm test # unit tests on saved live responses
apify run --purge # local run, reads storage/key_value_stores/default/INPUT.json