Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

happyendpoint-cli

Query real-time UAE property data from your terminal. Listings, recorded transactions, and rental yields, as tables or JSON.

npx happyendpoint-cli yields jvc "dubai marina" "palm jumeirah"
Gross and net rental yield, 1 bed apartments
Area                           Gross  Net    Median sale    Median rent  Sample
-----------------------------  -----  -----  -------------  -----------  ------
Jumeirah Village Circle (JVC)  7.87%  4.64%  AED 890,000    AED 69,999   50
Dubai Marina                   6%     3.49%  AED 1,500,000  AED 90,000   50
Palm Jumeirah                  3.78%  1.97%  AED 3,700,000  AED 140,000  50

Asking prices, not transactions. Net uses default holding costs.

Built by Happy Endpoint on the happyendpoint client.


Setup

export RAPIDAPI_KEY=your_key

Get a key at rapidapi.com/user/happyendpoint. There is a free tier.

Run without installing:

npx happyendpoint-cli search "dubai marina" --beds 1

Or install globally:

npm install -g happyendpoint-cli
happyendpoint search "dubai marina" --beds 1

Node 18 or newer.


Commands

search

happyendpoint search "dubai marina" --beds 1 --max 1500000
Dubai Marina (id 5003)
365 matching, showing 25, median AED 1,249,000
Title                                       Price          Bed  Area     Per sqm     Verified
------------------------------------------  -------------  ---  -------  ----------  --------
Incredible Value | Unfurnished | Vacant No  AED 1,230,000  1    55sqm    AED 22,364  yes
EMAAR | High ROI | Partially Upgraded       AED 1,500,000  1    78.2sqm  AED 19,176  yes

Rentals with --rent. Prices are annual.

happyendpoint search jvc --rent --beds 2

yields

Gross and net rental yield, ranked. Defaults to the main Dubai investment areas if you name none.

happyendpoint yields
happyendpoint yields jvc "business bay" --beds 2

transactions

What property actually sold for, unlike search which shows asking prices.

happyendpoint transactions jvc --period 12m
20 transactions over 12m

Date        Amount         Area    Bed  Per sqm     Type
----------  -------------  ------  ---  ----------  ----------
2026-08-11  AED 623,618    45sqm   0    AED 13,724  First Sale
2026-08-11  AED 1,050,000  68sqm   1    AED 15,360  First Sale
2026-08-11  AED 620,000    60sqm   1    AED 10,411  Resale

"First Sale" is a developer selling new stock. "Resale" is an owner selling on.

locations

happyendpoint locations "business bay"
Name                                          ID     Listings
--------------------------------------------  -----  --------
Business Bay                                  5093   23,949
Peninsula                                     19212  1,142
Aykon City                                    8692   1,018

You rarely need this. Every other command takes an area name and resolves it.

agents

happyendpoint agents "dubai marina"

apis

Lists the available APIs and where to subscribe. The only command that needs no key.

happyendpoint apis

Flags

Flag Meaning
--beds N Bedrooms. 0 is a studio
--min / --max Price range in AED. Underscores and commas allowed
--type apartments, villas, townhouses
--rent Rentals instead of sales
--period 3m, 6m, 12m, 24m. Transactions only
--page N Result page
--limit N Max results, locations only
--json Machine-readable output

JSON output

Every command takes --json, so it composes with jq and friends:

happyendpoint yields jvc --json
[
  {
    "area": "Jumeirah Village Circle (JVC)",
    "locationId": "5416",
    "medianSalePrice": 890000,
    "medianAnnualRent": 69999,
    "grossYieldPct": 7.87,
    "sampleSize": 50,
    "netYieldPct": 4.64
  }
]
# Highest-yielding area, name only
happyendpoint yields --json | jq -r '.[0].area'

# Everything under AED 1M with a verified listing
happyendpoint search jvc --json | jq '.properties[] | select(.price < 1000000 and .verified)'

# Price per sqm, as CSV
happyendpoint transactions jvc --json | jq -r '.[] | [.date, .pricePerSqm] | @csv'

Areas, not IDs

The underlying API takes numeric location ids, and a wrong one returns a different area rather than an error. Every command here takes a name, resolves it, and prints what it matched:

Dubai Marina (id 5003)

If the name is ambiguous it picks the busiest match, which is almost always the community rather than a building sharing the name. Use locations to see the alternatives.


FAQ

Do I need a paid plan?

No. The free RapidAPI tier covers normal use. A full yields run makes two requests per area.

Why is the net yield so much lower than the gross?

Because gross ignores service charges, management, maintenance, and vacancy. In Dubai those typically remove 2 to 3 percentage points. The defaults here are realistic rather than flattering.

Which number should I trust for valuation?

transactions. search shows asking prices, which run higher than what property actually sells for.

Are rental prices monthly?

No, annual. These portals quote yearly rent.

Can I use this in a script?

Yes, that is what --json is for. Exit code is non-zero on failure.


Related repos


Disclaimer

Happy Endpoint is an independent provider. This project is not affiliated with, endorsed by, sponsored by, or connected to any of the websites, platforms, retailers, or marketplaces referenced here or reachable through the underlying APIs.

All product names, brands, trademarks, and registered trademarks are the property of their respective owners. Any reference to them is descriptive only, to identify the subject matter of the data, and does not imply any association or endorsement.

Users are responsible for ensuring their use of any data complies with applicable laws and the terms of service of the relevant source.


About Happy Endpoint

Happy Endpoint builds and maintains real-time data APIs for property portals, retailers, and marketplaces. All APIs are available on RapidAPI with a free tier.

Licence

MIT. See LICENSE.

About

Command-line tool for real-time UAE property data: listings, transactions, and rental yields from your terminal.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages