Homes.com Scraper & API - Homes For Sale & Rentals
Pricing
from $2.00 / 1,000 per-run start fees
Homes.com Scraper & API - Homes For Sale & Rentals
Homes.com scraper for any US city or filtered search URL. Get one row per listing: address, asking price or rent, beds, baths, square feet, price per square foot, open-house time and listing type. For investors, agents, proptech and housing analysts.
Pricing
from $2.00 / 1,000 per-run start fees
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 days ago
Last modified
Categories
Share
Homes.com Scraper & API: Homes For Sale and Rentals
This Homes.com scraper turns any US city or filtered Homes.com search into a clean table of property listings: the full address, the asking price or monthly rent, the bed and bath counts, the floor area, the price per square foot, and the open-house window when one is advertised. It is built for investors, agents, proptech teams and housing analysts who need Homes.com listings in a spreadsheet or pipeline instead of a browser tab.
It takes Homes.com's own slug, like new-york-ny or austin-tx, and walks the result pages for
you. It also takes a full search URL, so if you have already narrowed a search in the browser to
three bedrooms under $800,000, paste that URL and every filter in it is respected.
Both sides of the market come back the same way. listing_type says for sale or for rent on
every row, taken from the page rather than guessed from the price, so a mixed search stays
sortable.
What the Homes.com scraper does
- Reads Homes.com search results for any city slug or search URL, homes for sale and rentals alike.
- Returns one row per listing, with the same columns for every location you enter.
- Works out
price_per_sqftfor you, and keeps missing values asnullinstead of zero. - Records how many listings the search matched in total, so you know what share of a market you hold.
- Exports to JSON, CSV, Excel or any integration Apify supports, or runs through the Apify API.
Input
The required search list accepts Homes.com city slugs and complete filtered search URLs.
| Field | Type | Default | Meaning |
|---|---|---|---|
search | list of strings | ["new-york-ny"] in the form | City slugs such as new-york-ny, or full search URLs such as https://www.homes.com/austin-tx/homes-for-rent/ |
maxItems | integer | 100 | Maximum listings across all locations (1 to 5,000) |
maxPages | integer | 10 | Maximum result pages for each location (1 to 50) |
Example input:
{"search": ["new-york-ny", "https://www.homes.com/austin-tx/homes-for-rent/"],"maxItems": 100,"maxPages": 10}
Locations are collected in the order you enter them. If a city cannot be read, other cities are still processed, and any listings already collected remain available. Free users receive up to ten listings per run.
Run sizes and paging
Result pages hold forty listings each. Maximum listings caps the run across every location and trims the last page. Fetching 50 or 80 listings reads two result pages; listing charges apply only to the rows delivered. Maximum pages per location stops one large city from consuming a whole run, and applies to each location separately rather than to the run as a whole.
A hundred listings takes a few seconds. There is no second request per listing: everything below is on the search page already, so a run is one page load per forty rows and nothing more.
Output
Each listing is one row in the default dataset. Fields per listing:
address,url,property_key,listing_keyprice,beds,baths,sqftprice_per_sqft, worked out for youlisting_type,open_housesearch,search_page,position_on_page,position, andresult_count
Here is a real row from a run on new-york-ny (October 2026):
{"property_key": "4b215f8nkz79f","listing_key": "lfbykfb6tllzk","url": "https://www.homes.com/property/1563-merry-ave-bronx-ny/4b215f8nkz79f/","address": "1563 Merry Ave, Bronx, NY 10461","listing_type": "for sale","price": 785000,"beds": 3,"baths": 2,"sqft": 1595,"price_per_sqft": 492.16,"open_house": null,"position_on_page": 1,"search": "new-york-ny","search_page": 1,"result_count": 23424,"position": 1,"source": "homes-com-scraper","platform": "homes","fetched_at": "2026-10-05T22:29:53.098Z","offer_type": "for_sale","listing_id": "4b215f8nkz79f","query": "new-york-ny","currency": "USD","country_code": "US","bedrooms": 3,"bathrooms": 2,"living_area": 1595,"living_area_unit": "sqft"}
And a rental from https://www.homes.com/austin-tx/homes-for-rent/ in the same week (selected fields):
{"property_key": "2yhhshc4wj0d6","listing_key": "5kq1qr39t4h4y","url": "https://www.homes.com/property/the-watson-austin-tx/2yhhshc4wj0d6/?l=5kq1qr39t4h4y","address": "11901 Burnet Rd, Austin, TX 78758","listing_type": "for rent","price": 1615,"beds": 3,"baths": null,"sqft": null,"price_per_sqft": null,"open_house": null,"result_count": 25870,"offer_type": "for_rent"}
price_per_sqft is the first thing anyone computes and the easiest to get subtly wrong across a
mixed set, so it is done once, here. It is null rather than zero whenever either input is missing.
result_count is the total the search itself reports, which is much larger than what any run
returns. New York reports over twenty thousand listings. Having both numbers on the row tells you
what share of a market you are holding.
Output compatibility
All sixteen original dataset fields remain present. Missing values are JSON null, rather than zero
or an empty string. listing_type keeps the original values for sale and for rent. The
additional offer_type uses for_sale and for_rent for integrations that need a standard
category. fetched_at records the UTC collection time. source, platform, listing_id,
query, currency, country_code, bedrooms, bathrooms, living_area and
living_area_unit make the listings easier to combine with other property datasets. These fields
are added alongside the original names.
For rental communities, price is the starting monthly rent, and beds is the numeric bedroom
count shown in the card, which may be the upper end of a range. A studio without a numeric bedroom
label has a null bedroom count. The full source URL lets you inspect the original offer.
Summary and errors
The summary key-value record contains the listing totals, how many have a price or floor area,
and how many are for sale. A location that fails becomes an entry in the errors record rather
than a missing set of rows:
| Code | Meaning |
|---|---|
bad_input | No location supplied |
no_results | The location was read and genuinely has no listings |
fetch_failed | A result page could not be read after several attempts |
no_results and fetch_failed are deliberately different. An empty city and a page that would
not load look identical if you only count rows, and only one of them is worth rerunning. When a
location has no listings, the run succeeds with an empty dataset and a no_results entry. If a
run returns fetch_failed for every location where it worked last week, re-run once; if it
persists, let us know through the Issues tab.
Use cases for Homes.com data
- Investors screen a city by price per square foot and spot listings priced below the local median.
- Agents and brokers track new inventory and open houses in their farm area every morning.
- Rental analysts compare asking rents across Homes.com rentals in several cities with one run.
- Proptech and data teams feed a real estate data API or dashboard without maintaining a scraper.
- Researchers follow housing supply over time using
result_countper city.
How it compares
| This Homes.com scraper | Copying from the site | Zillow, Redfin or MLS data | |
|---|---|---|---|
| Homes for sale and rentals | Both, labelled per row | One page at a time | Depends on the source |
| Price per square foot | Computed, null when unknown | Manual | Varies |
| Filtered search URLs | Respected as entered | Yes | Different filters per site |
| Setup | None | None | Feed agreements or another scraper |
Homes.com does not publish an open API for its search listings, so a scraper is the practical way to get it in bulk. For US rentals specifically, use Apartments.com Scraper. For homes for sale with MLS numbers and sold history, use Redfin Scraper or Zillow Scraper. For the UK market, use Rightmove Scraper.
Pricing
The existing price is unchanged: $0.002 per valid run plus $0.0003 per listing delivered. A run that delivers 100 listings costs $0.032 in actor events. A valid search with no results has only the start fee and no listing fee. Invalid input has no start fee. Platform usage is billed separately by Apify according to your plan. Listings beyond the free-user limit are neither delivered nor charged as listing events.
Frequently asked questions
Can I scrape Homes.com rental listings as well as homes for sale?
Yes. Paste a Homes.com search URL with the rental filter already applied. Each row keeps its original listing type, so mixed location lists can still be filtered after collection.
Is there a Homes.com API I can call instead?
You can call this actor as an API: start a run through the Apify API with the same input and read the dataset as JSON or CSV. That gives you a Homes.com listings API without writing a scraper.
How is the price per square foot calculated?
It is the asking price divided by the interior floor area, rounded to two decimals. When either the price or the floor area is missing, the value is null rather than zero.
Are the default limits different from the original actor?
No. The default maximum is 100 listings across all locations and ten pages for each location. A smaller item limit trims the last result page. A page limit applies separately to each location, rather than reducing the entire run to that number of pages.
Does an empty search fail the run or charge for missing listings?
A location with no properties produces a successful empty run and an entry in the errors record.
There is no listing charge for absent data. The existing valid-run start fee still applies. If an
individual location cannot be read, inspect fetch_failed before retrying.
Will existing integrations need new field names?
No. All original field names remain present, with their original JSON types. The new standard
fields are additional columns, and the original summary record remains available. You can continue
using property_key, search, beds, baths and sqft in existing code.