Web Scraping Layers for AI & Automation

back to blog

How to scrape Trulia and HouseSigma for real estate comps

ParseBird·12 Sep 2026

Key Takeaways

Why scrape Trulia instead of going straight to Zillow? Trulia's listing data includes a zpid field — Zillow's own property ID — directly in the output, since Trulia and Zillow are both owned by Zillow Group and share the same underlying listing data. That means a Trulia scrape gets you Zillow's own identifier for free, useful for cross-referencing without a separate Zillow lookup.

Does HouseSigma cover the same US markets as Trulia? No — HouseSigma is Canada-only, covering Ontario, British Columbia, and Alberta specifically. It's the complementary source for Canadian comps, not an alternative to Trulia for US markets.

What's the difference between HouseSigma's "feeds" and a normal property search? HouseSigma structures data around curated feeds — Newly Listed, Just Sold, Best for Schools, High Growth — rather than an open keyword search. You point the scraper at a feed URL and a province, not a search query.

Two Markets, Two Data Shapes

TruliaHouseSigma
CoverageUnited StatesOntario, British Columbia, Alberta
InputSearch URL or location + buy/rentFeed URL (newly-listed, just-sold, etc.)
Cross-reference IDzpid (Zillow property ID)mlsNumber (when public)

Trulia: US Listings With a Zillow Cross-Reference Built In

The Trulia Property Scraper walks Trulia's search results for a state, city, or a pasted search URL:

{
  "price": "$559,000",
  "priceValue": 559000,
  "listing_status": "Active for sale",
  "property_type": "SINGLE_FAMILY_HOME",
  "beds": 3,
  "baths": 2,
  "sqft": 1450,
  "city": "San Leandro",
  "state": "CA",
  "latitude": 37.6851,
  "longitude": -122.156,
  "zpid": "12345678",
  "tags": ["NEW", "OPEN SAT"]
}

listing_type set to "buy" or "rent" — a single toggle covers both for-sale and rental comps from the same actor. feature_highlights and tags surface Trulia's own callouts (FORECLOSURE, OPEN SAT, NEW) directly in the data, which is faster than re-deriving distress signals from price history alone. zpid is worth keeping even if you never call Zillow directly — it's a stable cross-platform key if you ever need to reconcile a Trulia dataset against a Zillow-sourced one later.

HouseSigma: Canadian Feeds, Province by Province

The HouseSigma Scraper reads the province and feed straight from the URL path you give it — housesigma.com/on/listings/newly-listed/ for Ontario's newest listings, for example:

{
  "address": "42 Example St, Toronto, ON",
  "price": "$899,000",
  "priceValue": 899000,
  "bedrooms": "3+1",
  "bathrooms": "2",
  "propertyType": "Detached",
  "propertyStyle": "2-Storey",
  "municipality": "Toronto",
  "daysOnMarket": 4,
  "mlsNumber": "C1234567"
}

Supported feeds go beyond plain search: newly-listed, just-sold, sold-below-bought (homes that sold for less than the owner originally paid — a distress signal Trulia's tags don't have an equivalent for), best-for-schools, and high-growth. Scheduling the newly-listed feed daily catches every new listing in a province the day it posts, which matters in fast-moving Canadian markets where a good comp can be gone within days.

Building a Cross-Border Comp Set

async function getComps(usCity, canProvince) {
  const [usListings, canListings] = await Promise.all([
    runActor("trulia-property-scraper", { location: usCity, listing_type: "buy", results_wanted: 50 }),
    runActor("housesigma-scraper", { startUrl: `https://housesigma.com/${canProvince}/listings/newly-listed/`, results_wanted: 50 }),
  ]);

  return {
    usMedianPrice: median(usListings.map((l) => l.priceValue)),
    canMedianPrice: median(canListings.map((l) => l.priceValue)),
  };
}

Useful for anyone benchmarking a cross-border portfolio, or a relocation service comparing cost of living between, say, Buffalo and nearby Ontario markets across the border.

FAQ

Do either of these require an MLS login or real estate license? No — both read publicly listed data from Trulia's and HouseSigma's own consumer-facing pages, no login or license required.

Can you get sold (closed) prices, not just active listings, from either? Yes for HouseSigma directly via its just-sold and sold-below-bought feeds. Trulia's listing_status field distinguishes active from other statuses when present, but its main strength is active inventory rather than a dedicated sold-comps feed.

For US distressed-property and skip-tracing data specifically, see Finding Distressed Property Leads Before They Hit the MLS and How to Find Skip Tracing Data for Real Estate Wholesaling.