Housesigma icon

Housesigma

From $1/1K. Scrape housesigma.com listings across Ontario, BC, and Alberta. Search by city or paste URLs to extract prices, addresses, photos, room…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Housesigma at a glance

Housesigma is a ready-to-run Apify actor from abotapi for collecting real estate data. Its documented output includes url, address, city, community and status, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.20 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Real Estate, Developer Tools, Automation
Pricing
$2.20 per 1,000 results (Free plan), from $1.50 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
34 options

From $1/1K. Scrape housesigma.com listings across Ontario, BC, and Alberta. Search by city or paste URLs to extract prices, addresses, photos, room dimensions, school scores, price history, HouseSigma estimates, and sold statistics.

What Housesigma $1💰 Property Listings, Sold History & Agents can do

  • Five modes, not one. Search by filters, scrape pasted links, fetch listing details by ID, browse the agent directory, or pull community sold-price statistics, all from one actor.
  • Rich detail per property. Turn on full details and get every photo, the virtual tour link, all rooms with dimensions, key facts, property features, full price history, nearby school scores, the HouseSigma price estimate and community sold trends.
  • Filters applied at the source. Status, property type, price, bedrooms, bathrooms, garage spaces, size, listing age, assignment or resale, community and sort order all narrow the search before a single result page is fetched.
  • Stable, structured output. Every listing comes back as the same flat field set, so a layout change on the site does not reshape your data.
  • Built for recurring monitoring. Incremental mode tracks one search across scheduled runs and returns only what is new or changed, and a separate resume option continues one interrupted run without re-scraping what it already saved.
  • Optional export to the apps you use. Pipe results into Notion, Linear or Airtable through MCP connectors, on top of the regular dataset.

Choose what to collect

These inputs let you configure Housesigma $1💰 Property Listings, Sold History & Agents. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredWhat to scrape. 'search' uses the filters below. 'url' takes HouseSigma listing or area links. 'detail' takes listing IDs/links. 'agent' lists the agent directory. 'community' returns sold-price stats for a community.

Choices: search, url, detail, agent, community

provincestringCanadian province to search. HouseSigma currently covers Ontario, British Columbia and Alberta.

Choices: ON, BC, AB

locationsarrayCity or community names to search, e.g. ['Toronto', 'Mississauga']. Each is resolved automatically. Leave empty to search the whole province. Used by 'search' and 'community' modes.
statusarrayWhich listing states to include.
propertyTypesarrayFilter by property type. Leave empty for all types.
minPriceintegerMinimum price (CAD).
maxPriceintegerMaximum price (CAD).
Show 27 more inputs
More input fields
InputWhat it controls
minBedroomsintegerMinimum bedrooms.
maxBedroomsintegerMaximum bedrooms (5 = 5+).
minBathroomsintegerMinimum bathrooms.
minGarageintegerMinimum garage spaces.
minSqftintegerMinimum interior size in square feet.
maxSqftintegerMaximum interior size in square feet.
soldDaysintegerFor 'sold' / 'leased' / 'de-listed' status: only include records from the last N days.
listingDaysintegerOnly listings first listed within the last N days (0 or empty = any age).
listingTypestringAll listings, only pre-construction assignment sales, or only resale.

Choices: all, assignment, resale

communitystringNarrow a city search to one community/neighbourhood, e.g. 'Alliance' with location 'Barrie'. Resolved automatically; if not found the whole city is searched.
sortBystringResult ordering.

Choices: newest, price-asc, price-desc

urlsarrayListing links (/home//), city or area pages (//-real-estate/, optionally ?page=N to start at that result page), province map pages (//map/), agent profiles (//agents//) or the legacy agents directory (/h5/en/agents). Used by 'url' mode. Left untouched, it scrapes one example of each of these shapes.
listingsarrayListing IDs (e.g. aQmD7zn5m8Z7J9Bo) or full listing links. Used by 'detail' mode.
agentsarrayAgent profile links (.../agents//) or bare slugs (e.g. matthew-schlotzhauer). In 'agent' mode each returns the agent's profile (bio, stats, top cities, property-type mix) plus their listings. Leave empty to scrape the whole province agent directory instead.
agentCategorystringWhich of an agent's listings to pull in 'agent' mode.

Choices: sold, active, toured

fetchDetailsbooleanOpen each listing's detail page for all photos, rooms, schools, price history, community stats and the HouseSigma estimate. Turn off for a faster, lighter run that returns the rich search-card fields only.
maxItemsintegerStop after this many records. 0 = no limit.
maxPagesintegerMaximum result pages (20 listings each) to walk per location. Leave empty (or 0) to walk every result page, up to a hard cap of 200 pages per location; higher values are clamped to 200.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a full-catalogue walk across separate runs. Records already collected there (matched by listing/agent/community id) are skipped, so this run only saves the new ones. Leave empty for a normal fresh run. For recurring daily/weekly monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching records as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED records. A record is UPDATED when any output field changed (price, status, dates, photos, rooms, estimate price and so on, listed in changedFields), except days on market and its text, the added/listed/ended day counters, the estimate popularity score and date, per-card scores and anything you list under Ignore fields, which never trigger an update (they stay in the output). Records are never marked EXPIRED from a partial scan (capped, truncated, failed page or unresolved location). Turn on "Emit unchanged" or "Emit expired" only when you also want those records returned (and billed). State is kept separately per search (mode, locations, filters, fetchDetails); use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search mode, locations and filters, different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return records that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max results capped it, Max pages truncated it, or Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayOptional. Field names to leave out of UPDATED change detection, in addition to the built-in handling. Use a dotted path for a nested field (for example estimate.confidence, or rooms.size for every room). Days on market and its text, the added/listed/ended day counters, the estimate popularity score and date, and the per-card scores never trigger UPDATED on their own. Ignored fields are still present in the output; they just cannot make a record count as changed.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. Notion gets a page per item; other connectors receive a best-effort write/digest. Leave empty to skip, this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

urlURL (link)
addressAddress
municipalityCity
communityCommunity
statusStatus
propertyTypeType
priceListedList Price
priceSoldSold Price
bedroomsBeds
bathroomsBaths
sizeTextSize
latitudeLat
Show 41 more fields
longitudeLng
dateListedListed
mlNumMLS #
photoPhoto (image)
changeTypeChange type (incremental mode) (text)
changedFieldsChanged fields (incremental mode) (text)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
sizeSqftSize (sqft)
taxAnnualAnnual tax
maintenanceFeeMaintenance fee
daysOnMarketDays on market
parkingparking
postalCodePostal code
brokeragebrokerage
listAgentNameListing agent
estimateestimate
keyFactsKey facts
roomsrooms
schoolsschools
priceHistoryPrice history
photosphotos
virtualTourvirtualTour
namename
titletitle
languageslanguages
provinceprovince
aboutabout
statsstats
topCitiesTop cities
propertyTypeDistributionProperty types
avataravatar (image)
agentIdAgent ID
slugslug
agentSlugAgent
scoresscores
offMarketDateOff-market date
idCommunityCommunity ID
idMunicipalityMunicipality ID
detaildetail
soldPriceStatsSold price stats

Ways to use this data

  • Home buyers and agents: track new listings and price changes across specific cities or filters as soon as they appear.
  • Market research and appraisal: pull recent sold prices, days on market and community statistics to price a property or a neighborhood.
  • Real estate investors: screen large areas for detached homes, condos or land in a price and size range, then rank by price or recency.
  • Lead generation: build a directory of agents by city with their listing volume, property-type mix and active inventory.
  • Data teams and dashboards: schedule recurring pulls of the same search and receive only new, updated or expired listings on each run.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Housesigma return?

The documented output for Housesigma includes url, address, city, community, status, type, list price and sold price. Availability of each field depends on the source page and the selected mode.

How much does Housesigma cost?

It costs $2.20 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated records, and unchanged ones are not billed. Turning on emitExpired also reports listings that dropped out of the tracked search, but only once a run has fully scanned it, and only a record that was previously marked EXPIRED this way can later come back as REAPPEARED.

What's the difference between Resume and Incremental mode?

Resume (resumeFromRunId) continues one specific interrupted run so it doesn't re-scrape what it already saved. Incremental mode is for running the same search again and again on a schedule and getting a diff each time. Turning both on together only works to bootstrap a brand-new monitoring campaign from a resumed dataset; if incremental state already exists for that search, the run fails with a clear message asking you to drop resumeFromRunId or pick a different stateKey.

Why did my run fail instead of returning an empty dataset?

The run fails immediately, with a clear message, if it cannot open a session with HouseSigma at all, or if resumeFromRunId doesn't point to a run or dataset your account can read, or if Incremental mode and Resume are combined in a way that would conflict with existing saved state. Once a session is open, an individual request that gets refused is retried and, if it still fails, skipped with a warning instead of failing the whole run, so a search that partially succeeds returns whatever it could read rather than nothing at all.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Housesigma?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.