npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

findhomes-cli

v1.0.2

Published

CLI for searching South African residential property listings, historical sales, and market data via the FindHomes API. Supports location resolution, isochrone commute searches, property details, market screening, and investment analysis.

Readme

findhomes-cli

Command-line tool for searching South African residential property listings, historical sales, and market data via the FindHomes API.

Handles location resolution, isochrone commute searches, property details, market screening, and investment analysis — all from the terminal, with results also written to temp JSON files for downstream use.

Install

npm install -g findhomes-cli

Or run ad-hoc without installing:

npx findhomes-cli search --location "Camps Bay" --beds-min 3

Setup

Set your API key as an environment variable:

export FIND_HOMES_X_API_KEY="your-api-key-here"

Requires Node.js 18 or later (uses native fetch, parseArgs, and top-level await).

Commands

| Command | Purpose | Example | |---------|---------|---------| | resolve | Suburb/city names → location IDs | findhomes resolve "Camps Bay, Sea Point" | | search | Find for-sale listings | findhomes search --location "Sea Point" --beds-min 2 --price-max 5000000 | | details | Full property info by ID | findhomes details <uuid1>,<uuid2> | | sales | Historical sale transactions + stats | findhomes sales --location "Wynberg" --date-min 2025-01-01 | | isochrone | Generate commute-time polygon | findhomes isochrone --destination "V&A Waterfront" --minutes 20 | | isochrone-intersect | Intersect two isochrone polygons | findhomes isochrone-intersect --iso1 a.json --iso2 b.json | | screen | Batch market screening (parallel) | findhomes screen --locations "Wynberg,Plumstead,Kenilworth" | | shortlist | Manage property shortlist | findhomes shortlist add <uuid> --notes "love the view" |

Search flags

  • --location <name> or --l-ids <id1,id2> or --polygon-file <path>
  • --beds-min, --beds-max, --baths-min, --price-min, --price-max
  • --sort-by <price|price_per_m2|date_listed> with --sort-direction <asc|desc>
  • --show-por <true|false> — include price-on-request listings (default true)
  • --visual-search-description "..." — rank by visual similarity
  • --limit <n>

When --sort-by is omitted, results are ranked by visual similarity (if a visual description is given) or by date_listed descending.

Example workflows

Simple suburb search

findhomes resolve "Camps Bay"
findhomes search --l-ids <id> --beds-min 3 --price-max 15000000
findhomes details <uuid>

Isochrone (commute-based) search

findhomes isochrone --destination "V&A Waterfront" --minutes 20 -o /tmp/iso.json
findhomes search --polygon-file /tmp/iso.json --beds-min 2

Dual-commute overlap

findhomes isochrone --destination "Place A" --minutes 20 -o /tmp/iso1.json
findhomes isochrone --destination "Place B" --minutes 25 -o /tmp/iso2.json
findhomes isochrone-intersect --iso1 /tmp/iso1.json --iso2 /tmp/iso2.json -o /tmp/overlap.json
findhomes search --polygon-file /tmp/overlap.json

Market screening

findhomes screen --locations "Wynberg,Plumstead,Kenilworth,Bergvliet" --date-min 2025-01-01

Output files

The CLI writes the full JSON payload of most queries to temp files for easy piping into other tools:

  • /tmp/findhomes_results.json — latest search results
  • /tmp/findhomes_sales.json — latest sales query
  • /tmp/findhomes_screen.json — latest screening data
  • /tmp/isochrone.json — latest isochrone polygon (when -o omitted)

Persistent data (~/.findhomes/)

  • suburb_stats.json — cached market stats (7-day TTL; use --no-cache to refresh)
  • search_log.jsonl — append-only log of every search
  • shortlist.json — saved property shortlist with notes

Limitations

  • For-sale only — no rental listings.
  • South Africa only — FindHomes covers SA residential property.
  • GET-only API — extremely large polygons may exceed URL limits. The CLI auto-simplifies, but for very large areas prefer --l-ids.

License

Proprietary — all rights reserved. See LICENSE.

This package is source-available on the public npm registry for convenient installation, but is not open source. You may install and run it for personal or internal use with a valid FindHomes API key. Copying, modifying, redistributing, or building derivative works is not permitted without prior written consent from the author.

For licensing inquiries, contact: [email protected]