# Homes.com Scraper (`parsebird/homes-com-scraper`) Actor

Scrape Homes.com listings for sale, for rent and recently sold by city, ZIP, coordinates or URL: price, beds, baths, sqft, photos, MLS number, public records, features and listing agent contacts. Search agents too.

- **URL**: https://apify.com/parsebird/homes-com-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 properties

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Homes.com Scraper

**Homes.com Scraper** extracts real estate data from [Homes.com](https://www.homes.com): homes for sale, rentals and recently sold properties with price, beds, baths, square footage, address and coordinates, photos, MLS number, features, price history, tax and purchase records, and listing agent contacts. It also finds real estate agents and pulls their full profiles, as clean JSON, CSV or Excel.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Nine operations in one actor: search by city, neighborhood, ZIP code, map coordinates or Homes.com URL, get full property dossiers with every feature and public records, find agents by name or area and pull their sales stats, license and contact details.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/homes-com-scraper. Scrapes US real estate data from Homes.com (listings for sale, for rent, recently sold; full property details; real estate agents). Call via ApifyClient: client.actor("parsebird/homes-com-scraper").call(run_input={"operation": "searchByLocation", "location": "Austin, TX", "searchType": "FOR_SALE", "maxResults": 100}). Inputs: operation (searchByLocation | searchByZip | searchByCoordinates | searchByUrl | detailsById | detailsByUrl | agentSearch | agentDetails | autocomplete; default searchByLocation), location (string, "City, ST", neighborhood "Mueller, Austin, TX", county, metro, state; several on separate lines), zipCode (string, 5-digit US ZIP, comma-separated for several), latitude / longitude / radius (strings, radius in miles, default 1), url (Homes.com search URL, property URL https://www.homes.com/property/.../{id}/ or agent URL https://www.homes.com/real-estate-agents/{name}/{id}/; several on separate lines), id (property ID = propertyId of a search row), name (agent name for agentSearch, nationwide), agentId (agentId of an agentSearch row), searchType (FOR_SALE | FOR_RENT | SOLD, default FOR_SALE), propertyType (array: house, townhouse, condo, multi_family, apartment, land, mobile, coop, other), priceMin / priceMax (integer USD), bedsMin / bathsMin (integer), includeDetails (boolean, default false: full details for every search row), maxResults (integer, default 100), generateReport (boolean, default true: report.html market KPIs in the key-value store). Output rows carry rowType: property (propertyId, listingKey, url, status, statusTags, propertyType, address{street, city, state, zipCode, full}, location{latitude, longitude}, pricing{price, value, originalPrice, priceChange, pricePerSqFt, rentMin, rentMax, hoaFee}, specs{beds, baths, floorSpace, livingAreaSqFt, lotSize, yearBuilt}, listing{listedDate, soldDate, daysOnMarket, mls}, media{primaryPhoto, photos, photoCount, has3DTour}, agents[{agentId, name, phone, office}], highlights, openHouses), property-detail (all property fields plus propertyDescription, listing{mlsNumber, mlsSource, estimatedPayment, totalViews}, facts{lotSize, parking, hoaFee, estimatedAnnualTaxes}, features, mlsDetails, priceHistory, publicRecords{taxHistory, purchaseHistory, mortgageHistory}, floorPlans, agents with email and license), agent (agentId, name, office, phone, totalSales, url), agent-detail (office{name, address}, phone, email, license{number, state}, bio, yearsOfExperience, stats, transactionHistory, specialties, awards, website, socialLinks, areasServed, activeListingUrls, soldListingCount), location-suggestion (category, name, type, url). Pricing: pay per event: property (search row, agent search row or suggestion), details (property detail row), agent-profile (agent detail row). Full API spec: https://apify.com/parsebird/homes-com-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What is Homes.com Scraper?

**Homes.com Scraper** turns [Homes.com](https://www.homes.com) search results, property pages and agent profiles into a structured dataset. Type a location such as **"Austin, TX"**, pick **For sale**, **For rent** or **Recently sold**, and click **Start**. On October 21, 2026, Homes.com showed 6,659 homes for sale, 4,958 rentals and 12,527 recently sold homes in Austin, and the actor reads searches of that size end to end.

It works as a **Homes.com API alternative**: no account, API key or browser needed. You can also set up a search on Homes.com in your browser, copy the URL and paste it in.

### What can Homes.com Scraper do?

- 🔎 **Search by location.** City and state, neighborhood, county, metro area or a whole state, with listing type, property type, price, bedroom and bathroom filters.
- 📮 **Search by ZIP code.** One or several 5-digit US ZIP codes.
- 📍 **Search by coordinates.** A latitude/longitude point and a radius in miles; results outside the circle are dropped.
- 🔗 **Search by Homes.com URL.** Paste any Homes.com search page; its location and filters are kept.
- 🏠 **Full property details.** By property ID or URL, or for every search result: full description, MLS number and source, all Homes.com and MLS feature lists, price history, tax history with assessments, purchase and mortgage records, open houses, estimated payment, page views, apartment floor plans and listing agent email, phone and license number.
- 🧑‍💼 **Agent search.** Find agents by name across the US, or list the agents serving a city or neighborhood, with office, phone and total sales.
- 📇 **Agent profiles.** Office and address, phone, email, license number and state, bio, years of experience, 1-, 2- and 5-year seller and buyer deal stats, specialties, awards, website and social links, areas served and active listing URLs.
- 💬 **Location autocomplete.** Turn free text into Homes.com places, neighborhoods, agents, buildings and new-home communities with their URLs.
- 📊 **Market report.** Each search run saves a KPI report (median and average price, price per square foot, breakdowns by property type, status, bedrooms and ZIP code) as `report.html`.
- 📈 **Past the 700-listing window.** Homes.com returns up to 700 listings per search; the actor splits larger searches into price ranges so a whole city can be read.
- 📅 **Scheduling.** Run daily or weekly with [Apify Schedules](https://docs.apify.com/platform/schedules) to track new listings and price drops.
- 🔌 **API and integrations.** Use the [Apify API](https://docs.apify.com/api/v2), or send results to Google Sheets, Zapier, Make, Slack or webhooks with [Apify integrations](https://docs.apify.com/platform/integrations). Export as JSON, CSV, Excel, XML or HTML.

### What data can you extract from Homes.com?

Every row has a `rowType`: `property` (search results), `property-detail` (full property details), `agent` (agent search results), `agent-detail` (full agent profiles) or `location-suggestion` (autocomplete).

| Field | Description |
|-------|-------------|
| `propertyId`, `listingKey`, `url` | Homes.com property ID, listing key and listing URL |
| `status`, `statusTags` | For Sale, For Rent, Recently Sold, Pending, Under Contract, Coming Soon; tags such as "$35K PRICE DROP" or "Open Sat 12PM - 2PM" |
| `propertyType` | Single Family, Townhouse, Condo, Multi-Family, Apartment, Land, Mobile / Manufactured, Co-op |
| `address`, `location` | Street, city, state, ZIP, full address (neighborhood on detail rows); latitude and longitude |
| `pricing` | Display price, numeric value, original price, price change, price per sq ft, rent range, HOA fee |
| `specs` | Beds, baths, floor space, living area, lot size, year built, garages, stories, units |
| `listing` | Listed date, sold date, days on market, MLS; on detail rows also MLS number, MLS source, estimated payment and page views |
| `media` | Primary photo, all photos, photo count, 3D tour flag |
| `agents` | Listing agents with ID, name, phone, office; on detail rows also email, license and brokerage phone |
| `openHouses`, `highlights` | Scheduled open houses; highlight badges (schools, views, parks, features) |
| `propertyDescription` | Full listing description (detail rows) |
| `facts` | Home type, lot, parking, HOA fee, estimated annual taxes (detail rows) |
| `features`, `mlsDetails` | Homes.com feature lists by category and all MLS fields by section (detail rows) |
| `priceHistory` | Listing events with date, price and change (detail rows) |
| `publicRecords` | Tax history (tax paid, assessment, land and improvement value), purchase history (deed type, sale price), mortgage history (detail rows) |
| `floorPlans` | Apartment floor plans with price range, beds, baths, sq ft, deposit and available units (detail rows) |
| `name`, `agentId`, `office`, `phone`, `email`, `license` | Agent identity and contacts (agent and agent-detail rows) |
| `stats`, `transactionHistory` | Closed sales, total value, price range, average price; seller and buyer deals over 1, 2 and 5 years (agent-detail rows) |

### How to scrape Homes.com

1. Open [Homes.com Scraper](https://apify.com/parsebird/homes-com-scraper) in Apify Console and click **Try for free**.
2. Pick an **Operation**. Keep **Search by location** to start.
3. Fill in the field the operation uses: a **Location** like "Austin, TX", a **ZIP code**, **Latitude/Longitude** and a **Radius**, a **Homes.com URL**, a **Property ID**, an **Agent name** or an **Agent ID**.
4. For searches, choose a **Listing type** (for sale, for rent, recently sold) and, optionally, property types, a price range and minimum beds and baths. Turn on **Scrape full property details** if you want the full dossier for each result.
5. Set **Max results** and click **Start**.
6. Download the data as JSON, CSV, Excel or HTML from the **Output** tab, and open `report.html` in the run's key-value store for the market summary.

Tip: run **Agent search** first, then pass the `agentId` values to **Agent details**. Run a search first, then pass `propertyId` values to **Property details by ID**.

### How much does it cost to scrape Homes.com?

Homes.com Scraper uses pay-per-event pricing. You pay for the rows saved to your dataset; compute and proxy costs are included in the event price.

| Event | What counts | Free | Bronze | Silver | Gold |
|-------|-------------|------|--------|--------|------|
| `property` | Each search row (location, ZIP, coordinates, URL), agent search row or autocomplete suggestion | $1.99 / 1,000 | $1.49 / 1,000 | $1.29 / 1,000 | $0.99 / 1,000 |
| `details` | Each full property detail row | $10.99 / 1,000 | $8.99 / 1,000 | $7.99 / 1,000 | $6.99 / 1,000 |
| `agent-profile` | Each full agent profile row | $17.99 / 1,000 | $14.99 / 1,000 | $11.99 / 1,000 | $9.99 / 1,000 |

Example: 1,000 Austin listings from a location search cost $1.99 on the Free plan. The same 1,000 listings with **Scrape full property details** turned on are charged as 1,000 `details` events instead ($10.99 on Free, $6.99 on Gold). Apify's free plan includes monthly platform credits you can use to try the actor. The run stops by itself when your spending limit is reached.

### Input

Pick an operation and fill the field it uses. Example: rentals in Austin.

```json
{
    "operation": "searchByLocation",
    "location": "Austin, TX",
    "searchType": "FOR_RENT",
    "maxResults": 100
}
```

Full property dossiers:

```json
{
    "operation": "detailsByUrl",
    "url": "https://www.homes.com/property/7516-windrush-dr-austin-tx/x5zewgn876r6t/"
}
```

Find an agent, then pull the full profile:

```json
{ "operation": "agentSearch", "name": "John Smith", "maxResults": 25 }
```

```json
{ "operation": "agentDetails", "agentId": "w9enbmj" }
```

See every field on the [Input tab](https://apify.com/parsebird/homes-com-scraper/input-schema).

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `operation` | string | **Yes** | `searchByLocation` | Which lookup to run (see the list above) |
| `location` | string | For location search, agent search by area, autocomplete | — | City and state, neighborhood, county, metro area or state |
| `zipCode` | string | For ZIP search | — | 5-digit US ZIP code(s) |
| `latitude`, `longitude` | string | For coordinate search | — | Center point |
| `radius` | string | No | `1` | Radius in miles for coordinate search |
| `url` | string | For URL search, details by URL, agent details | — | Homes.com search, property or agent profile URL(s) |
| `id` | string | For details by ID | — | Property ID(s) from search rows (`propertyId`) |
| `name` | string | For agent search by name | — | Agent name, e.g. John Smith |
| `agentId` | string | For agent details | — | Agent ID(s) from agent search rows |
| `searchType` | string | No | `FOR_SALE` | `FOR_SALE`, `FOR_RENT` or `SOLD` |
| `propertyType` | array | No | all | `house`, `townhouse`, `condo`, `multi_family`, `apartment`, `land`, `mobile`, `coop`, `other` |
| `priceMin`, `priceMax` | integer | No | — | Price range (monthly rent for rentals) |
| `bedsMin`, `bathsMin` | integer | No | — | Minimum bedrooms and bathrooms |
| `includeDetails` | boolean | No | `false` | Full property details for every search row |
| `maxResults` | integer | No | `100` | Max rows per run |
| `generateReport` | boolean | No | `true` | Save `report.html` market KPIs for search runs |

### Output example

Listing row (`property`):

```json
{
    "rowType": "property",
    "propertyId": "x5zewgn876r6t",
    "listingKey": "7qqz3lwfp9jpw",
    "url": "https://www.homes.com/property/7516-windrush-dr-austin-tx/x5zewgn876r6t/",
    "status": "For Sale",
    "statusTags": [
        "$35K PRICE DROP"
    ],
    "transactionType": "Sale",
    "propertyType": "Single Family",
    "name": null,
    "address": {
        "street": "7516 Windrush Dr",
        "city": "Austin",
        "state": "TX",
        "zipCode": "78729",
        "full": "7516 Windrush Dr, Austin, TX 78729",
        "isHidden": false
    },
    "location": {
        "latitude": 30.451128,
        "longitude": -97.754989
    },
    "pricing": {
        "price": "$549,000",
        "value": 549000,
        "originalPrice": 584000,
        "priceChange": "$35K PRICE DROP",
        "pricePerSqFt": 190,
        "hoaFee": null
    },
    "specs": {
        "beds": 4,
        "baths": 2.5,
        "bedsLabel": "4 Beds",
        "bathsLabel": "2.5 Baths",
        "floorSpace": "2,884 Sq Ft",
        "livingAreaSqFt": 2884,
        "lotSize": "5,296 Sq Ft",
        "lotSizeSqFt": 5296,
        "lotSizeAcres": 0.12,
        "yearBuilt": 1990
    },
    "listing": {
        "listedDate": "2026-06-25",
        "soldDate": null,
        "daysOnMarket": null,
        "mls": "ACTRIS MLS",
        "summary": "This move-in ready and updated home features new paint and flooring, quick access to trails, and refreshed bathrooms! A morning stroll on the Rattan Creek trail..."
    },
    "media": {
        "primaryPhoto": "https://images.homes.com/listings/115/7265341894-089973722/7516-windrush-dr-austin-tx-primaryphoto.jpg",
        "photos": [
            "https://images.homes.com/listings/115/7265341894-089973722/7516-windrush-dr-austin-tx-primaryphoto.jpg",
            "https://images.homes.com/listings/115/2965341894-089973722/7516-windrush-dr-austin-tx-buildingphoto-2.jpg"
        ],
        "photoCount": 34,
        "has3DTour": true
    },
    "agents": [
        {
            "agentId": "y96h0cv",
            "name": "Ashley Jackson",
            "phone": "(512) 555-0100",
            "office": "Compass RE Texas, LLC",
            "profileUrl": "https://www.homes.com/real-estate-agents/x/y96h0cv/",
            "photo": "https://imagescdn.homes.com/i2/d-9HEIVelhDzTZad8xTEUAk4GZ-E-KUo1NLYHIG1Fy0/104/image.jpg?t=p&p=1",
            "role": "Listing Agent",
            "isHomesMember": true
        }
    ],
    "highlights": [
        "Near a Park",
        "Open Floorplan",
        "Mature Trees",
        "Living Room with Fireplace"
    ],
    "openHouses": [],
    "builder": null,
    "propertyManager": null,
    "scrapedAt": "2026-10-21T12:30:00.000Z"
}
```

Property detail row (`property-detail`, shortened; agent contact values masked):

```json
{
    "rowType": "property-detail",
    "propertyId": "x5zewgn876r6t",
    "url": "https://www.homes.com/property/7516-windrush-dr-austin-tx/x5zewgn876r6t/",
    "status": "For Sale",
    "propertyDescription": "This move-in ready and updated home features new paint and flooring, quick access to trails, and refreshed bathrooms! A morning stroll on the Rattan Creek trail starts just a few doors down from this ...",
    "listing": {
        "listedDate": "2026-06-25",
        "soldDate": null,
        "daysOnMarket": null,
        "mls": "ACTRIS MLS",
        "price": "$549,000",
        "status": "For Sale",
        "statusLabel": "$35K PRICE DROP",
        "mlsNumber": "9487189",
        "mlsSource": "Unlock MLS (Austin Board of REALTORS®)",
        "pricePerSqFt": 190,
        "estimatedPayment": "$3,975/month",
        "totalViews": 265031,
        "lastUpdated": "2026-10-01T11:57:22.952"
    },
    "facts": {
        "beds": 4,
        "baths": 2.5,
        "floorSpace": "2,884 Sq Ft",
        "lotSize": "5,296 Sq Ft",
        "lotFeatures": [
            "5",
            "East Facing Home",
            "Wood Fence",
            "Interior Lot",
            "Mature Trees",
            "Private Yard"
        ],
        "yearBuilt": 1990,
        "propertyType": "Single Family",
        "homeType": "Single Family",
        "parking": "2 Car Attached Garage, Inside Entrance, Parking Accessed On Kitchen Level, Front Facing Garage, Multiple Garage Doors, Driveway",
        "hoaFee": null,
        "estimatedAnnualTaxes": 8898
    },
    "priceHistory": [
        {
            "date": "2026-07-31",
            "event": "Price Changed",
            "price": 549000,
            "change": "-3.5%"
        },
        {
            "date": "2026-07-16",
            "event": "Price Changed",
            "price": 569000,
            "change": "-2.6%"
        }
    ],
    "publicRecords": {
        "taxHistory": [
            {
                "year": 2025,
                "taxPaid": 10304,
                "assessment": 504396,
                "landValue": 100500,
                "improvementValue": 403896
            }
        ],
        "purchaseHistory": [
            {
                "date": "2009-12-28",
                "type": "Vendors Lien",
                "salePrice": null
            }
        ],
        "mortgageHistory": [
            {
                "date": "2009-12-28",
                "status": "Open",
                "loanAmount": 159206
            }
        ]
    },
    "agents": [
        {
            "agentId": "y96h0cv",
            "name": "Ashley Jackson",
            "phone": "(512) 555-0100",
            "office": "Compass RE Texas, LLC",
            "profileUrl": "https://www.homes.com/real-estate-agents/x/y96h0cv/",
            "role": "Listing Agent",
            "isHomesMember": true,
            "email": "agent@example.com",
            "license": "0000000",
            "brokeragePhone": "512-555-0101"
        }
    ],
    "features": [
        {
            "category": "Home Details",
            "name": "Parking",
            "values": [
                "2 Car Attached Garage",
                "Inside Entrance",
                "Parking Accessed On Kitchen Level",
                "Front Facing Garage",
                "Multiple Garage Doors",
                "Driveway"
            ]
        }
    ],
    "mlsDetails": {
        "Interior Features": {
            "Interior Amenities": "Ceiling Fan(s), Ceiling-High, Ceiling-Vaulted, Double Vanity, Interior Steps, Multiple Dining Areas, Multiple Living Areas, Open Floorplan, Soaking Tub, Track Lighting, Walk-In Closet(s)",
            "View": "None",
            "Flooring": "Carpet, Tile, Vinyl"
        }
    }
}
```

Download the dataset in JSON, CSV, Excel, XML or HTML, or read it with the [Apify API](https://docs.apify.com/api/v2/dataset-items-get).

### Use the Homes.com Scraper API

Python ([apify-client](https://docs.apify.com/api/client/python/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/homes-com-scraper").call(run_input={
    "operation": "searchByLocation",
    "location": "Austin, TX",
    "searchType": "FOR_SALE",
    "propertyType": ["house"],
    "priceMax": 600000,
    "maxResults": 200,
})
for home in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(home["url"], home["pricing"]["price"], home["specs"]["beds"])
```

JavaScript ([apify-client](https://docs.apify.com/api/client/js/)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/homes-com-scraper').call({
    operation: 'agentSearch',
    location: 'Austin, TX',
    maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((agent) => console.log(agent.name, agent.office, agent.phone));
```

### Use cases

- **Real estate investors:** screen a city or ZIP code by price, beds and price per square foot, then pull tax and purchase records for the shortlist.
- **Agents and brokerages:** watch new listings, price drops and open houses in your farm area on a schedule.
- **Recruiting and lead generation:** list the agents active in a market with their office, phone, email, license and closed sales.
- **PropTech and data teams:** feed listing, MLS and public-record data into valuation models, dashboards or CRMs through the API.
- **Market research:** compare median prices, rents and inventory across cities, neighborhoods and ZIP codes with the built-in market report.
- **Rental analysis:** collect rent ranges, floor plans, available units and property managers for apartment communities.

### FAQ

**How fresh is the data?**
Every run reads Homes.com live, so you get the listings, prices and statuses shown on the site at that moment. Use [Apify Schedules](https://docs.apify.com/platform/schedules) to refresh daily or weekly.

**How many listings can I get from one search?**
Homes.com returns up to 700 listings per search. When a search has more, the actor splits it into price ranges and keeps going until it reaches **Max results** or the end of the search. Listings without a price (for example "Call for Price") can be missed in very large searches that need splitting.

**What is the difference between a property row and a property-detail row?**
A `property` row comes from search results: price, beds, baths, size, address, photos, listing agents and a short summary. A `property-detail` row adds the full property page: full description, MLS number, full feature lists, price history, public records, apartment floor plans and agent emails and licenses.

**How many agents can I get for one area?**
Homes.com's agent directory shows up to 624 agents (13 pages of 48) per city, neighborhood or state. To cover more, run several neighborhoods or nearby cities, or search agents by name.

**Can I search agents by name in one city?**
Name search covers the whole US and returns the closest matches first. To list the agents of one area, leave the name empty and set a location.

**Why do some rows have empty fields?**
Homes.com only shows what the listing source provides. Rentals often have no MLS number, new-construction homes may have no public records yet, and some MLSs hide listing agent emails.

**Does it work for addresses?**
Search operations need an area (city, neighborhood, ZIP, county). For a single home, use **Property details by URL** or **Property details by ID**.

**Can I use it with Make, Zapier or Google Sheets?**
Yes. Use [Apify integrations](https://docs.apify.com/platform/integrations) or the [API](https://apify.com/parsebird/homes-com-scraper/api) to send results anywhere.

**Something doesn't work?**
Open an issue on the [Issues tab](https://apify.com/parsebird/homes-com-scraper/issues) with your run link.

### Is it legal to scrape Homes.com?

Homes.com Scraper only collects data that Homes.com shows publicly to every visitor without logging in. Agent contact details are published by the agents for business purposes; personal data is still protected by laws such as GDPR and CCPA, so only collect and use it with a legitimate purpose. Check the [Homes.com terms of use](https://www.homes.com/about/homesterms-of-use/) and consult a lawyer if you are unsure. Read more in Apify's post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other real estate scrapers

| Actor | What it does |
|-------|--------------|
| [Realtor.com Scraper](https://apify.com/parsebird/realtor-scraper) | Realtor.com listings for sale, rent and sold, schools and climate risk |
| [Trulia Property Scraper](https://apify.com/parsebird/trulia-property-scraper) | Trulia homes for sale and rent |
| [Apartments.com Scraper](https://apify.com/parsebird/apartments-com-scraper) | Apartments.com rentals, floor plans and fees |
| [RentCafe Scraper](https://apify.com/parsebird/rentcafe-scraper) | RentCafe apartment listings |
| [LoopNet Commercial Property Scraper](https://apify.com/parsebird/loopnet-scraper) | LoopNet commercial real estate for sale and lease |
| [Realtor.ca Property Scraper](https://apify.com/parsebird/realtor-ca-scraper) | Canadian listings from Realtor.ca |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/homes-com-scraper/changelog.md

# Actor input Schema

## `operation` (type: `string`):

Choose what to look up. Each operation uses the fields listed in its name: location, ZIP code, coordinates, URL, property ID, agent name or agent ID.

## `location` (type: `string`):

Enter a city and state ("Austin, TX"), a neighborhood ("Mueller, Austin, TX"), a county ("Travis County, TX"), a metro area or a whole state ("Vermont"). Used by Search by location, Agent search and Location autocomplete. Put several locations on separate lines to run them one after another.

## `zipCode` (type: `string`):

Enter a 5-digit US ZIP code for Search by ZIP code, e.g. 78724. Separate several ZIP codes with commas.

## `latitude` (type: `string`):

Center point latitude for Search by coordinates, e.g. 30.2672.

## `longitude` (type: `string`):

Center point longitude for Search by coordinates, e.g. -97.7431.

## `radius` (type: `string`):

Search radius around the coordinates, in miles (0.1–50). Default: 1.

## `url` (type: `string`):

Paste a Homes.com URL copied from your browser: a search page (https://www.homes.com/austin-tx/homes-for-rent/) for Search by URL, a property page (https://www.homes.com/property/...) for Property details by URL, or an agent profile (https://www.homes.com/real-estate-agents/...) for Agent details. Put several URLs on separate lines.

## `id` (type: `string`):

Homes.com property ID for Property details by ID: the propertyId of a search row, or the last part of a property URL (e.g. x5zewgn876r6t). Separate several IDs with commas.

## `name` (type: `string`):

Real estate agent name for Agent search, e.g. John Smith. Name search covers the whole US.

## `agentId` (type: `string`):

Homes.com agent ID for Agent details: the agentId of an Agent search row (e.g. w9enbmj). Separate several IDs with commas.

## `searchType` (type: `string`):

Homes for sale, homes for rent, or recently sold homes. Applies to location, ZIP and coordinate searches (a search URL keeps its own listing type).

## `propertyType` (type: `array`):

Limit the search to one or more property types. Leave empty for all types.

## `priceMin` (type: `integer`):

Lowest list price (or monthly rent for rentals).

## `priceMax` (type: `integer`):

Highest list price (or monthly rent for rentals).

## `bedsMin` (type: `integer`):

Only homes with at least this many bedrooms.

## `bathsMin` (type: `integer`):

Only homes with at least this many bathrooms.

## `includeDetails` (type: `boolean`):

Open each property page found by a search and add the full description, MLS number, full feature lists, price history, tax and purchase records, open houses and agent emails. Search rows are then charged as property details instead of basic listings.

## `maxResults` (type: `integer`):

Maximum number of rows to save in this run (listings, property details, agents or suggestions).

## `generateReport` (type: `boolean`):

For searches, save a market KPI report (median price, price per sq ft, breakdowns by property type, beds and ZIP code) to the key-value store as report.html and REPORT.

## `proxyConfiguration` (type: `object`):

Optional. Route requests through Apify Proxy or your own proxies.

## Actor input object example

```json
{
  "operation": "searchByLocation",
  "location": "Austin, TX",
  "searchType": "FOR_SALE",
  "includeDetails": false,
  "maxResults": 20,
  "generateReport": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "operation": "searchByLocation",
    "location": "Austin, TX",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/homes-com-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "operation": "searchByLocation",
    "location": "Austin, TX",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/homes-com-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "operation": "searchByLocation",
  "location": "Austin, TX",
  "maxResults": 20
}' |
apify call parsebird/homes-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/homes-com-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7N5JpveNWNSkIhMbH/builds/yWSiYGXuOgpdhtL3T/openapi.json
