Furas Radar — Saudi Municipal Investment Opportunities (فرص)
Pricing
from $10.00 / 1,000 opportunity delivereds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
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.
...Atis ISO-8601 in UTC....Dateis the calendar date in Saudi Arabia (UTC+3). Use the...Datekeys. The source stores dates at different times of day, so the time in the...Atkeys carries no meaning. - Money is in Saudi riyals (
currency: "SAR"). For investment opportunities,rfpPriceSaris the booklet price (سعر الكراسة). For temporary rentals (type 02), the same source field is the price per square metre (سعر المتر), so it goes inpricePerSqmSar. 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.
durationUnitsays which. - Coordinates are WGS84 latitude and longitude.
urlfollows the pattern the Furas map uses. It was checked on four live opportunities.rawkeeps 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
| Field | What it does |
|---|---|
status | open (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. |
amanaIds | One or more amanas, for example 004 Riyadh, 005 Jeddah, 006 Eastern Province. The input form lists all 17. |
opportunityTypeIds | 01 Investment, 02 Temporary Rental, 05 Qualifying, 07 Direct Rental. |
cityContains | Text in the city, municipality, district or region name. Example: الرياض. |
activityContains | Text in the activity, sub-activity or location type. Examples: التجارية, العربات المتنقلة. |
keywords | Words in the description, activity, location type, municipality, city, district or street. Example: مطعم, مقهى. |
matchMode | any (default) or all keywords. |
minArea / maxArea | Site area in square metres. |
publishedAfter | YYYY-MM-DD. Keeps opportunities announced on or after this date. |
sortBy | newest (default) or closingSoon. |
maxItems | Hard cap on delivered opportunities. Default 100. This is also your cost cap. |
includeGeometry | Latitude 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
- Set your filters. Set
publishedAfterto yesterday's date, or setsortBytonewestwith a smallmaxItems. - Click Save as a new task. Then add a daily schedule to the task.
- 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
amanaIdsfilter 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
rawobject shows exactly what the source holds. - Documents. Booklets (كراسة الشروط) are not downloaded. Use the
urlto 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 installnpm test # unit tests on saved live responsesapify run --purge # local run, reads storage/key_value_stores/default/INPUT.json