OffplanIndex
Prices on this site were last read 30 July 2026, 64 days ago.New launches added up to 30 September 2026.

Benchmark data licence

The derived tables, in your own systems

Eight tables, joinable on stable ids, delivered as CSV and JSON after every build. 231 communities and 681 developers with medians and the full quartile columns. The 2,962 project index with exact coordinates, which we publish nowhere else. 3,315 payment plans decomposed stage by stage. The handover pipeline by quarter.

Built for CRMs that need a benchmark badge on every listing, and for analysts who need the base counts as columns rather than as footnotes. If you need a live endpoint instead of files, say so at checkout or by email and we switch you to it at no extra cost.

Eight tables, every build

What is in the bundle

TableWhat it holdsGrain
communities.csv / .jsonMedian, p25, p75 AED per sqft, median price, project and unit counts, payment plan medians, pipeline by year, per bedroom breakdownone row per community, 231 rows
developers.csv / .jsonSame measures per developer plus the communities they build in and their share of the Dubai pipelineone row per developer, 681 rows
projects.csv / .jsonProject index with developer, community, city, exact coordinates (published nowhere else, the free pages carry none), delivery quarter, sale and construction status, starting price, price range, median AED per sqft, unit and plan countsone row per project, 4,070 rows: 2,962 off-plan plus 1,083 delivered comparables
payment-plans.csvEvery published plan decomposed into booking, construction, handover and post-handover shares, with pre-handover total and step countone row per qualifying payment plan, Dubai projects only, 3,315 rows
effective-price.csvThe headline price restated in today's money given the payment schedule, with the plan priced, the present value multiplier at three rates, the effective AED per sqft and a confidence gradeone row per priced project, the payment-plan-adjusted price with its confidence grade, 2,859 rows
plan-structures.csvThe plan shapes (80/20, 60/40, post-handover and the rest) with plan, project, developer, community and unit counts per shapeone row per plan structure bucket, 12 rows
pipeline.csvProjects and priced units by delivery quarter and community, 2020 through 2032one row per delivery quarter by community, 1,009 rows
bedroom-benchmarks.csvMedian AED per sqft, price and size per bedroom count, per community and per developerone row per community or developer by bedroom count, 1,012 rows

Sources read to 30 July 2026, corpus merged 18 August 2026, tables built 2 October 2026. Every figure traces to a query over developer-published inventory; the method is public at /methodology, what we will never ship is at /data-policy, and what you may do with the tables is at /licence.

How often it moves. Builds are dated, not scheduled. This one was assembled from sources read to 30 July 2026 and computed on 2 October 2026. A listings watcher reads new launches continuously and the newest of them was read on 30 September 2026, but a handful of fresh records is not allowed to move the “as of” date of everything around them. We do not promise a fixed refresh interval, because the build is run by a person and a promise nobody schedules is not a promise. Instead the licence carries the term below: a calendar month with no newly dated bundle is credited on request.

Real columns from the sample bundle

The actual columns

slug,name,city,n_projects,n_units,psf_median,psf_p25,psf_p75,price_median,pre_handover_median
jumeirah,Jumeirah,Dubai,16,57,6951,6152,7391,36557000,60.0
fahid-island,Fahid Island,Abu Dhabi,15,66,3984,3652,4243,7610800,65.0
business-bay,Business Bay,Dubai,68,1458,3188,2650,3664,3612017,60.0
sobha-siniya-island,Sobha Siniya Island,Umm Al Quwain,3,291,2799,2749,2800,1831845,60.0
dubai-islands,Dubai Islands,Dubai,184,2309,2492,2139,2962,3407000,50.0

The head of OffplanIndex-sample-communities.csv, printed from the same sample file linked below. The licensed table has the same columns and every community row, not a slice. An engineer can load it before anyone in your firm has to approve a card.

Free, same schema as the licensed tables

Sample files

Four sampled CSVs so your team can test the schema before subscribing: rows are taken evenly across each table, so they span the ranking rather than the top of it. Same columns as the licensed bundle, a fraction of the rows.

8 tables, 13,189 rows, 108 documented fields

The literal contents, before you ask for a key

Schema v1Sources read to 30 July 2026Build 2 October 2026

A new bundle is cut every time the corpus is rebuilt. Builds are dated, not scheduled: there is no cron job, so the freshness promise is the date stamped on the bundle, not a fixed interval.

TableGrainRowsRefresh
communities.csv / communities.jsonone row per community231Every data build
developers.csv / developers.jsonone row per developer681Every data build
projects.csv / projects.jsonone row per project, off-plan plus delivered comparables4,070Every data build
payment-plans.csvone row per qualifying payment plan, Dubai projects only3,315Every data build
effective-price.csvone row per priced project, the payment-plan-adjusted price with its confidence grade2,859Every data build
plan-structures.csvone row per plan structure bucket12Every data build
pipeline.csvone row per delivery quarter by community1,009Every data build
bedroom-benchmarks.csvone row per community or developer by bedroom count1,012Every data build
communities 10 fields, one-line description each
FieldTypeWhat it is
slugtextstable key for the community, safe to join on
nametextcommunity name as we publish it
citytextDubai, Abu Dhabi, Sharjah, Ras Al Khaimah, Ajman, Umm Al Quwain, Fujairah
n_projectsintegertracked off-plan projects in the community
n_unitsintegervalidated priced unit records behind the medians
psf_medianinteger, AEDmedian asking price per sqft over unit records
psf_p25integer, AED25th percentile asking price per sqft
psf_p75integer, AED75th percentile asking price per sqft
price_medianinteger, AEDmedian asking price of a unit
pre_handover_mediandecimal, percentmedian share of the price due before handover
developers 9 fields, one-line description each
FieldTypeWhat it is
slugtextstable key for the developer, safe to join on
nametextdeveloper name, canonicalised across sources
n_projectsintegertracked off-plan projects by this developer
n_unitsintegervalidated priced unit records behind the medians
psf_medianinteger, AEDmedian asking price per sqft over unit records
psf_p25integer, AED25th percentile asking price per sqft
psf_p75integer, AED75th percentile asking price per sqft
price_medianinteger, AEDmedian asking price of a unit
pre_handover_mediandecimal, percentmedian share of the price due before handover
projects 24 fields, one-line description each
FieldTypeWhat it is
idtextsite URL slug, can change when duplicates merge; joins payment-plans.project_id, but store opi_id
opi_idtextstable OffplanIndex project id, the key to store; id is a URL slug and can change when duplicates merge
titletextproject name as published
developertextdeveloper name
developer_slugtextjoin key into developers.slug
communitytextcommunity name
community_slugtextjoin key into communities.slug
subcommunitytextsub area where the source states one, often empty
citytextemirate level city
latdecimallatitude, WGS84, empty when the source gives no point
lngdecimallongitude, WGS84
delivery_quartertextdeveloper stated handover quarter, format Q3 2027
delivery_yearintegeryear part of delivery_quarter
sale_statustexton_sale, out_of_stock, presale, announced, unknown
construction_statustextunder_construction, completed, unknown
property_typestextcomma separated, for example apartment,townhouse
starting_priceinteger, AEDdeveloper published from price
price_mininteger, AEDlowest asking price observed in our unit records
price_maxinteger, AEDhighest asking price observed in our unit records
psf_medianinteger, AEDmedian asking price per sqft across the project
n_priced_unitsintegervalidated priced unit records for this project
n_plansintegerpublished payment plans for this project
pre_handover_pctdecimal, percentcheapest plan's share due before handover
post_handover_pctdecimal, percentshare due after handover on the same plan
payment-plans 15 fields, one-line description each
FieldTypeWhat it is
project_idtextsite URL slug, joins projects.id; can change, so store opi_id
project_titletextproject name, repeated for readability
developertextdeveloper name
plan_nametextplan label as published, for example 80/20
plan_idxinteger0 based index of the plan within the project
booking_pctdecimal, percentdue at booking
construction_pctdecimal, percentdue during construction
handover_pctdecimal, percentdue on handover
post_handover_pctdecimal, percentdue after handover
pre_handover_pctdecimal, percentbooking plus construction: the share paid before the handover payment, which is handover_pct
total_pctdecimal, percentsum of the steps, kept inside 90 to 110
n_stepsintegerinstalment steps in the published plan
has_post_handoverinteger, 0 or 11 when any instalment falls after handover
structuretexttaxonomy bucket, join key into plan-structures.structure: 80-20, 60-40, post-handover, paid-before-handover
opi_idtextstable OffplanIndex project id, joins projects.opi_id, the key to store
effective-price 26 fields, one-line description each
FieldTypeWhat it is
opi_idtextstable OffplanIndex project id, the key to store
project_idtextjoin key into projects.id (site slug)
titletextproject name
developertextdeveloper name
citytextthe emirate the project sits in
community_slugtextjoin key into communities.slug
confidencetexthigh, medium or low; only high and medium are published in rankings
headline_priceinteger, AEDthe starting price the schedule is priced against
plan_nametextthe plan we priced: of the plans that sum to 100 percent, the one that defers the most money; cash-discount plans are excluded
plan_idxintegerindex of that plan within the project, joins payment-plans.plan_idx
n_priced_plansintegerplans that qualified for pricing on this project
months_to_handoverdecimalmonths from the valuation date (the bundle build date) to the stated handover
handover_basistextdate, quarter, year, past or unknown: how precise the handover date was
pv_multiplierdecimalpresent value of the schedule as a fraction of the headline price, at 5 percent a year
effective_priceinteger, AEDthe headline price restated in today's money given the payment schedule: headline_price times pv_multiplier
plan_discount_pctdecimal, percentwhat the schedule is worth to the buyer, as a share of the headline price: 100 times (1 minus pv_multiplier)
psf_medianinteger, AEDmedian asking price per sqft over the project's validated units
effective_psfinteger, AEDpsf_median times pv_multiplier
booking_pctdecimal, percentdue at booking on the priced plan
pre_handover_pctdecimal, percentdue before keys on the priced plan
post_handover_pctdecimal, percentdue after keys on the priced plan
tail_monthsdecimallength of the post-handover tail, stated or assumed (see flags)
plan_spread_pctdecimal, percentdiscount gap between the project's best and worst qualifying plans
pv_multiplier_at_3pctdecimalthe same multiplier at 3 percent a year, for sensitivity testing
pv_multiplier_at_8pctdecimalthe same multiplier at 8 percent a year, for sensitivity testing
flagstextcomma separated caveats: tail_assumed_24m, handover_quarter_only, handover_year_only, handover_past, plan_total_out_of_band
plan-structures 10 fields, one-line description each
FieldTypeWhat it is
structuretextthe plan shape, the join key from payment-plans.structure
labeltextdisplay label, for example 80/20
kindtexthow the shape is defined: split (share before and after handover), tail (a run of instalments after handover), cadence (payment frequency), or residual (everything else, counted but not broken out)
headlinetextone sentence definition
n_plansintegerqualifying plans in the bucket
n_projectsintegerprojects with at least one plan in the bucket
n_developersintegerdevelopers with at least one plan in the bucket
n_communitiesintegercommunities with at least one plan in the bucket
n_unitsintegervalidated priced unit records behind those projects
has_pageinteger, 0 or 11 when the bucket has enough plans for us to publish it on offplanindex.com
pipeline 6 fields, one-line description each
FieldTypeWhat it is
delivery_quartertextdeveloper stated handover quarter, format Q3 2027
communitytextcommunity name
community_slugtextjoin key into communities.slug
citytextemirate level city
n_projectsintegeroff-plan projects due that quarter in that community
n_priced_unitsintegerbenchmark unit records across those projects (validated, not size-flagged)
bedroom-benchmarks 8 fields, one-line description each
FieldTypeWhat it is
group_kindtextcommunity or developer
group_slugtextjoin key into communities.slug or developers.slug
group_nametextdisplay name of the community or developer
bedroomtextStudio, 1 BR, 2 BR, 3 BR, 4 BR or 5+ BR
n_recordsintegerbenchmark unit records behind this row (validated, off-plan, not size-flagged), minimum 10
psf_medianinteger, AEDmedian asking price per sqft for this bedroom count
price_medianinteger, AEDmedian asking price for this bedroom count
size_medianinteger, sqftmedian unit size for this bedroom count

A median in any of these tables is a computed asking-price statistic, not a transaction price: see /methodology for what each figure is and is not measuring. Schema version 1 is bumped only when a field is renamed or removed, never when one is added.

First 10 rows, real values, same columns as the licensed table

A sample of every table, no key required

communities.csv 10 of 231 rows
slugnamecityn_projectsn_unitspsf_medianpsf_p25psf_p75price_medianpre_handover_median
academic-cityAcademic CityDubai4460166015781851493650060.0
ajmal-makan-city-sharjah-waterfrontAjmal Makan City - Sharjah WaterfrontSharjah00n/an/an/an/an/a
ajman-downtownAjman DowntownAjman2155572569575113717441.0
ajman-uptownAjman UptownAjman115378362398418000100.0
al-aliaAl AliaAjman31344640445031324560.0
al-ameera-villageAl Ameera VillageAjman110454649855967161741.0
al-amerahAl AmerahAjman8322511504517622500100.0
al-arqoubAl ArqoubRas Al Khaimah00n/an/an/an/a100.0
al-aweerAl AweerSharjah2610069671149367500040.0
al-bahiaAl BahiaAbu Dhabi40n/an/an/an/an/a
developers.csv 10 of 681 rows
slugnamen_projectsn_unitspsf_medianpsf_p25psf_p75price_medianpre_handover_median
20-2020/2000n/an/an/an/a40.0
4direction4Direction00n/an/an/an/an/a
77-shades-of-green77 Shades of Green10n/an/an/an/a70.0
7th-key7th Key112177317081864209450070.0
a-j-g-jaddaf-l-l-cA J G Jaddaf L. L. C10n/an/an/an/an/a
aa-hmbAA & HMB10n/an/an/an/a60.0
aaaAAA144225621782310289256940.0
aabarAabar00n/an/an/an/a20.0
aarkAARK323141013443194170000050.0
abAB352100210021003108714100.0
projects.csv 10 of 4,070 rows
idopi_idtitledeveloperdeveloper_slugcommunitycommunity_slugsubcommunitycitylatlngdelivery_quarterdelivery_yearsale_statusconstruction_statusproperty_typesstarting_priceprice_minprice_maxpsf_mediann_priced_unitsn_planspre_handover_pctpost_handover_pct
4direction-haven-views-1opi-cfc7169604Haven Views 14Direction4directionDubai Land Residence Complexdubai-land-residence-complexHaven Views 1Dubain/an/aQ1 20262026n/an/an/a686000.0686000.0n/an/a00n/an/a
7th-key-nexara-toweropi-c6c4a81b87Nexara Tower7th Key7th-keyJumeirah Village Circlejumeirah-village-circleNexara TowerDubai25.0587677160593755.211747690389494Q2 20282028on_saleunder_constructionapartment,duplex1100000.01100000.03300000.0177312250.00.0
a-j-g-jaddaf-l-l-c-lumiere-heightsopi-663a003505Lumiere HeightsA J G Jaddaf L. L. Ca-j-g-jaddaf-l-l-cCulture Villageculture-villageLumiere HeightsDubain/an/aQ2 20272027n/an/an/a700000.0700000.0n/an/a00n/an/a
aa-and-hmb-real-estate-development-havelock-residencesopi-b23a2deec9Havelock ResidencesAA & HMBaa-hmbAl Furjanal-furjann/aDubai25.049662798455.13977545661Q4 20262026sold_outunder_constructionapartment625000.062500000.0190000000.0n/a0160.00.0
aaa-ocean-toweropi-1dfe7f89efOcean TowerAAAaaaDubai Islandsdubai-islandsOcean TowerDubai25.2853929091452555.296984539487255Q1 20272027on_saleunder_constructionn/a1847819.01847819.0n/a225644140.00.0
aabar-properties-lamar-residencesopi-4c26f5e64cLamar ResidenceAabaraabarAl Raha Beachal-raha-beachAl SeefAbu Dhabi24.44552254.583944Q3 20232023sold_outcompletedapartment,duplex1200000.01200000.0n/an/a0120.00.0
aark-developers-aark-residencesopi-bc86698899Aark ResidencesAARKaarkDubai Land Residence Complexdubai-land-residence-complexn/aDubai25.08836114405879855.38216584069708Q4 20242024out_of_stockcompletedapartment842856.0842856.01303658.0109010120.00.0
aark-developers-aark-terracesopi-8f90cffaa1Aark TerracesAARKaarkDubai Land Residence Complexdubai-land-residence-complexn/aDubai25.08470868249470355.38319524935598Q4 20272027on_saleunder_constructionapartment980888.0980888.01412391.0134615235.040.0
aark-developers-karl-lagerfeld-beach-residencesopi-1ef0b01e26Karl Lagerfeld Beach ResidencesAARKaarkAl Marjan Islandal-marjan-islandKarl Lagerfeld Beach Residences by AarkRas Al Khaimah25.67568474092905455.739658738216136Q2 20282028presaleunder_constructionapartment2800000.02800000.04200000.035324250.00.0
aark-developers-sora-beach-residencesopi-fe7410ada8Sora Beach ResidencesAARKaarkAl Marjan Islandal-marjan-islandSora Beach ResidencesRas Al Khaimah25.6759947147255.74016438176Q4 20262026availableunder_constructionapartment,villa2755000.02754888.013955888.034964160.00.0
payment-plans.csv 10 of 3,315 rows
project_idproject_titledeveloperplan_nameplan_idxbooking_pctconstruction_pcthandover_pctpost_handover_pctpre_handover_pcttotal_pctn_stepshas_post_handoverstructureopi_id
7th-key-nexara-towerNexara Tower7th KeyPayment Plan 50/50020.030.050.00.050.0100.03050-50opi-c6c4a81b87
7th-key-nexara-towerNexara Tower7th Key30 Months Post Handover Paymen Plan120.070.010.00.090.0100.04090-10opi-c6c4a81b87
aa-and-hmb-real-estate-development-havelock-residencesHavelock ResidencesAA & HMBStandard020.040.040.00.060.0100.03060-40opi-b23a2deec9
aaa-ocean-towerOcean TowerAAAPayment Plan020.020.060.00.040.0100.03040-60opi-1dfe7f89ef
aark-developers-aark-residencesAark ResidencesAARKPayment Plan020.00.080.00.020.0100.02020-80opi-bc86698899
aark-developers-aark-terracesAark TerracesAARKPayment Plan010.025.065.00.035.0100.03040-60opi-8f90cffaa1
aark-developers-aark-terracesAark TerracesAARK3 Years PH Payment Plan110.040.010.040.050.0100.041post-handoveropi-8f90cffaa1
ab-developers-ab-cavalierAB CavalierABPayment Plan0100.00.00.00.0100.0100.010paid-before-handoveropi-a09e219b53
ab-developers-ab-cleoAB CleoABPayment Plan010.040.050.00.050.0100.03050-50opi-9070487ba6
ab-developers-bayview-boulevardBayview Boulevard By ABABPayment Plan010.030.060.00.040.0100.03040-60opi-3548de78c9
effective-price.csv 10 of 2,859 rows
opi_idproject_idtitledevelopercitycommunity_slugconfidenceheadline_priceplan_nameplan_idxn_priced_plansmonths_to_handoverhandover_basispv_multipliereffective_priceplan_discount_pctpsf_medianeffective_psfbooking_pctpre_handover_pctpost_handover_pcttail_monthsplan_spread_pctpv_multiplier_at_3pctpv_multiplier_at_8pctflags
opi-c6c4a81b877th-key-nexara-towerNexara Tower7th KeyDubaijumeirah-village-circlehigh110000030 Months Post Handover Paymen Plan1218.5date0.928310211537.21773164620.050.040.030.02.30.95590.8896n/a
opi-b23a2deec9aa-and-hmb-real-estate-development-havelock-residencesHavelock ResidencesAA & HMBDubaial-furjanhigh625000Standard013.0date0.99196199130.8n/an/a20.060.00.00.00.00.99510.987n/a
opi-1dfe7f89efaaa-ocean-towerOcean TowerAAADubaidubai-islandshigh1847819Payment Plan016.0date0.982518154261.82256221720.040.00.00.00.00.98940.9722n/a
opi-4c26f5e64caabar-properties-lamar-residencesLamar ResidenceAabarAbu Dhabial-raha-beachlow1200000Standard010.0past1.012000000.0n/an/a20.020.00.00.00.01.01.0handover_past
opi-bc86698899aark-developers-aark-residencesAark ResidencesAARKDubaidubai-land-residence-complexlow842856Payment Plan010.0past1.08428560.01090109020.020.00.00.00.01.01.0handover_past
opi-8f90cffaa1aark-developers-aark-terracesAark TerracesAARKDubaidubai-land-residence-complexhigh9808883 Years PH Payment Plan1215.0date0.92949116087.11346125110.050.040.036.02.30.95650.8911n/a
opi-1ef0b01e26aark-developers-karl-lagerfeld-beach-residencesKarl Lagerfeld Beach ResidencesAARKRas Al Khaimahal-marjan-islandhigh2800000Payment Plan0220.9date0.936226214316.4353233070.050.00.00.00.40.96110.9004n/a
opi-fe7410ada8aark-developers-sora-beach-residencesSora Beach ResidencesAARKRas Al Khaimahal-marjan-islandhigh2755000Standard012.0date0.993127359170.7349634720.060.00.00.00.00.99580.989n/a
opi-a09e219b53ab-developers-ab-cavalierAB CavalierABDubaijumeirah-village-circlelow610000Payment Plan010.0past1.06100000.011661166100.0100.00.00.00.01.01.0handover_past
opi-9070487ba6ab-developers-ab-cleoAB CleoABDubaijebel-alihigh708000Payment Plan018.9date0.97376893512.6n/an/a10.050.00.00.00.00.98410.9583n/a
plan-structures.csv 10 of 12 rows
structurelabelkindheadlinen_plansn_projectsn_developersn_communitiesn_unitshas_page
90-1090/10splitnine tenths of the price is due before keys, the rest on handover8074263511921
80-2080/20splitfour fifths before keys, a fifth on handover352318386237471
70-3070/30splitseventy before keys, thirty on handover2772385961104391
60-4060/40splitsixty before keys, forty on handover614580171100170071
50-5050/50splithalf before keys, half on handover46743018889167641
40-6040/60splitforty before keys, sixty on handover3533321547961241
30-7030/70splitthirty before keys, seventy on handover1971771016281641
20-8020/80splita fifth before keys, four fifths on handover7571443128681
post-handoverPost-handovertailan instalment still due after the keys are handed over48039215778112361
1-percent-monthly1% monthlycadencethe price paid down at one percent a month rather than in stage payments11788493145241
pipeline.csv 10 of 1,009 rows
delivery_quartercommunitycommunity_slugcityn_projectsn_priced_units
Q3 2025Al Furjanal-furjanDubai123
Q3 2025Al Jaddafal-jaddafDubai10
Q3 2025Al Reem Islandal-reem-islandAbu Dhabi10
Q3 2025Dubai Hills Estatedubai-hills-estateDubai10
Q3 2025Dubai Land Residence Complexdubai-land-residence-complexDubai111
Q3 2025Dubai Media Citydubai-media-cityDubai13
Q3 2025Dubai Studio Citydubai-studio-cityDubai111
Q3 2025Jumeirah Golf Estatesjumeirah-golf-estatesDubai13
Q3 2025Jumeirah Parkjumeirah-parkDubai10
Q3 2025Jumeirah Village Circlejumeirah-village-circleDubai541
bedroom-benchmarks.csv 10 of 1,012 rows
group_kindgroup_sluggroup_namebedroomn_recordspsf_medianprice_mediansize_median
communityacademic-cityAcademic City3 BR18154137000002400
communityacademic-cityAcademic City4 BR223158944200002775
communityacademic-cityAcademic City5+ BR219185162570003700
communityajman-downtownAjman Downtown2 BR15557211371741996
communityal-ameera-villageAl Ameera Village1 BR555586502281165
communityal-ameera-villageAl Ameera Village2 BR494989701941948
communityal-amerahAl Amerah1 BR2475116160001197
communityal-amerahAl Amerah2 BR725046636151179
communityal-bahyaAl Bahya4 BR79197589354664309
communityal-bahyaAl Bahya5+ BR142100111673845318

An empty cell means the value is unknown, never zero. These ten rows are the head of the same file the licensed bundle ships, in the same column order, taken in id or slug order rather than ranked, so nothing here is cherry picked toward the expensive end of the table.

One signed request, one real response, before you pay

The sync contract

Every call is signed HMAC-SHA256 over the method, the path, the sorted query string and the timestamp, using the secret issued with the key. The signature goes in x-opi-signature, the key id in x-opi-key-id, and the timestamp used in the signature in x-opi-timestamp.

x-opi-key-id:opi_live_4f2a9c
x-opi-timestamp:1788512000
x-opi-signature:HMAC-SHA256(secret, "GET\n" + path + "\n" + sortedQuery + "\n" + timestamp)

Example request, obviously fake secret

GET https://offplanindex.com/api/v1/sync?limit=500&since=b3Q9MTAw

x-opi-key-id: opi_live_4f2a9c
x-opi-timestamp: 1788512000
x-opi-signature: b3f1c9a7d4e6082f1a5c7e9b0d2f4681c3e5a7091f2b4d6c8e0a1b3c5d7e9f01

Secret shown: sk_EXAMPLE_NOT_A_REAL_SECRET_00000000, a placeholder. A real key is issued per organisation and never appears on this page.

Example response, three real projects

{
  "data": {
    "records": [
      {
        "id": "marquis-elegance-20-20",
        "title": "Marquis Elegance",
        "developer": "20/20",
        "developer_slug": "20-20",
        "community": "Arjan",
        "community_slug": "arjan",
        "city": "Dubai",
        "starting_price": 1055634,
        "delivery_quarter": "Q2 2025",
        "delivery_year": 2025,
        "sale_status": "sold_out",
        "construction_status": "completed",
        "property_types": "apartment",
        "bedrooms": "1,2,3",
        "n_units": 8,
        "n_plans": 1,
        "updated_at": "2026-09-04",
        "content_hash": "7a1e9c3f5b2d8061"
      },
      {
        "id": "wellington-ocean",
        "title": "Wellington Ocean",
        "developer": "Wellington",
        "developer_slug": "wellington",
        "community": "Dubai Islands",
        "community_slug": "dubai-islands",
        "city": "Dubai",
        "starting_price": 2152750,
        "delivery_quarter": "Q4 2026",
        "delivery_year": 2026,
        "sale_status": "on_sale",
        "construction_status": "under_construction",
        "property_types": "apartment,duplex",
        "bedrooms": "1,2",
        "n_units": 14,
        "n_plans": 1,
        "updated_at": "2026-09-04",
        "content_hash": "e4b6081a2c9f7d35"
      },
      {
        "id": "nifco-esplora",
        "title": "Esplora",
        "developer": "NiFCO",
        "developer_slug": "nifco",
        "community": "Jumeirah Village Circle",
        "community_slug": "jumeirah-village-circle",
        "city": "Dubai",
        "starting_price": 695000,
        "delivery_quarter": "Q4 2025",
        "delivery_year": 2025,
        "sale_status": "on_sale",
        "construction_status": "completed",
        "property_types": "apartment",
        "bedrooms": "0,1,2",
        "n_units": 20,
        "n_plans": 1,
        "updated_at": "2026-09-04",
        "content_hash": "1f6a3e8c5d9b0247"
      }
    ],
    "tombstones": [
      "al-marasi-tower-b"
    ],
    "next_cursor": "b3Q9NjAw",
    "schema_version": 1,
    "build_date": "2026-10-02"
  },
  "meta": {
    "license": "See /data-policy. Aggregate data only, no listing text or images."
  }
}

next_cursor is opaque and always points just past the last entry returned. The walk is finished when a page comes back with empty records and empty tombstones; keep that cursor and send it again on the next schedule, and new data lands after it. A record listed in tombstones has left the off-plan book (sold out and delisted, or merged into another id) and should be deleted from the client’s own store, not merely skipped. A record absent from both records and tombstones on a given page is simply outside that page’s cursor window, not gone. schema_version only changes when a field is renamed or removed, so a client can trust it holds across an ordinary refresh.

A 14 day key, issued on request, scoped so it cannot become the product

Try it first

  • 14 days. The key stops working at the end of day 14, evaluation or not.
  • Scoped to sync. The key only opens GET /v1/sync, not the full /v1 surface.
  • 500 records per call. Same page size cap as the paid licence, so an evaluation client is tested against the real pagination.
  • A total cap for the 14 days. Enough calls to page the whole corpus more than once, not enough to run a production integration on for free.

Issued by hand, not self-serve: say what you are integrating and we send a key scoped exactly as above.

What we have instead of testimonials

Why you can check us instead of trusting us

We have no customers to quote, and we are not going to invent one.

This is a new product. There is no logo wall here, no “trusted by” strip and no testimonial, because there is nothing true to put in one yet. What follows is the argument we would rather you judged us on anyway: you can check the numbers instead of trusting them.

Load the schema before you pay for it.

The sample files on this page carry the licensed columns, so the shape is testable in ten minutes.

Most of the corpus is already published, free, on this site.

168 community pages and 392 developer pages are built from the same tables the paid products ship. Pick a community you know well and check the median against your own comparables before you spend anything.

Every figure states the base it was computed on.

A median taken over thirty records and a median taken over three thousand are not the same claim, so the count sits next to the number rather than being left out of it. A thin sample is visible instead of hidden, and anything under the evidence floor is not ranked at all.

The method is written down, including what is wrong with it.

Methodology names the validation bands, the exclusions and the known gaps. The data policy names what we will never publish and why. Both were written to be argued with.

The corpus is countable, and its dates are on the page.

4,045 records across 231 communities and 681 developers, of which 52,882 priced unit records clear every plausibility check and are allowed inside a published benchmark. Sources read to 30 July 2026, merged 18 August 2026, built 2 October 2026.

The terms, where the decision is made

What you are risking

  • The schema is testable before the first charge. The sample files on this page are the licensed columns on a slice of the rows, taken evenly across each table rather than off the top of it.
  • First month refunded in full, for 14 days. If the bundle does not match the published schema, or the tables are materially not as described here.
  • A month with no new build is credited if you ask for it. The data build is run by hand, so we do not promise a fixed refresh interval. Instead: if a calendar month passes and no newly dated bundle appeared, tell us and we credit that month. Every bundle carries its three dates, so this is checkable from your side rather than ours.
  • Cancel any month. Access to new bundles ends at the end of the paid month. What you may keep doing with bundles you already hold is written down on the licence page, in full, for the person in your firm who has to read it.
  • Who answers. One person reads hello@offplanindex.com and answers within one business day. There is no ticket system and no queue.

The same terms in legal form are on the terms page, and the licence itself is at /licence. If the two ever disagree, the more generous one applies.

Before you subscribe

Questions

What exactly do we receive?

The eight derived tables listed on this page as CSV and JSON, delivered as a dated bundle you download the moment checkout completes, from a receipt page that serves the newest build there is. The bundle currently served is the 2026-10 build. An HTTPS endpoint returning the same JSON is available on request at no extra cost.

How often is it refreshed?

Builds are dated, not scheduled. The corpus is rebuilt by a person rather than by a cron job, so we will not claim a fixed interval we have nothing to enforce. Every bundle carries the date its sources were read, the date the corpus was merged and the date the tables were computed, so you can always see what you are holding. If a calendar month passes with no newly dated bundle, tell us and we credit that month.

Is this a copy of a portal database?

No. Every table is an aggregate or a project-level fact table computed by us. There are no listing records, no descriptions, no images and no portal URLs in the bundle. See the data policy.

Can we publish the numbers?

Use inside your organisation and inside your own products is included, with attribution. Redistributing or reselling the tables as data is not, and neither is serving them row by row through your interface until someone outside your organisation holds the table. The full terms, including what survives cancellation, are on the licence page.

What if the data is not what we need?

Check before you pay: the sample files on this page have the same columns as the licensed tables, so your engineer can load them and see the shape in ten minutes. If you subscribe and the delivered bundle does not match that schema, or the tables are materially not what this page describes, write to hello@offplanindex.com within 14 days of the first charge and we refund that month in full. After the first month, cancel any time from the billing portal: access to new bundles stops at the end of the paid month, and the licence to use bundles you already hold is set out on the licence page rather than being left to a sentence in an FAQ.

How do we cancel?

Any time from the Stripe billing portal link on your receipt. Access to new bundles ends at the end of the paid month. What you may keep doing with bundles you already hold is clause 8 of the licence.

Only need the numbers once? The Q3 2026 report ships the same tables as a one-off CSV bundle with the PDF, 79 USD. The full terms for the licence are at /licence.