# Har Property Search Scraper (`alexist/har-property-search-scraper`) Actor

Automate real estate data collection from HAR.com with this powerful scraper. Extract 100+ property fields including prices, MLS numbers, agent details, and coordinates — perfect for real estate investors, wholesalers, and market analysts.

- **URL**: https://apify.com/alexist/har-property-search-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## HAR.com Property Scraper: Extract Houston Real Estate Listings Fast

***

### What Is HAR.com?

HAR.com is Houston's largest real estate platform, connecting buyers, sellers, and agents across the Greater Houston area. It hosts thousands of active listings with detailed property information, market data, and agent contacts. Whether you're tracking market trends, building a lead database, or conducting competitive analysis, the **HAR.com Property Scraper** automates data extraction, transforming search results into structured, actionable records.

***

### Overview

The **HAR.com Property Scraper** extracts comprehensive property listings from HAR search results pages, capturing 100+ data points per property. It is ideal for:

- **Real estate investors** identifying deals and tracking market trends
- **Wholesalers** building targeted acquisition lists
- **Market analysts** studying pricing patterns and inventory trends
- **Lead generation platforms** aggregating Houston property data
- **Developers** integrating MLS data into custom applications

Key advantages include flexible search URL customization, high-volume extraction (up to 200+ properties per URL), and robust error handling to ensure reliable runs.

***

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://www.har.com/search/dosearch?for_sale=1&mp_term_years=30&mp_mortgage_rate=6.55&mp_down_payment_rate=20&sort=listdate%20desc&view=map"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Parameter | Description |
|---|---|
| `urls` | HAR.com search result pages with applied filters (price, property type, location, status). Copy the full URL from your browser. |
| `max_items_per_url` | Maximum properties extracted per search URL (default: `500`, typical: `200`). Higher values collect more data but increase runtime. |
| `ignore_url_failures` | If `true`, skips failed URLs and continues scraping. Recommended for large batches. |

> **Tip:** Create filtered search URLs on HAR.com (e.g., "For Sale," price range, city) and paste them here. Each URL can yield different property sets based on your filters.

***

### Output Format

**Sample output**

```json
{
  "forsale": "1",
  "proptypeid": "1",
  "taxamount": 3887,
  "maintenancefee": null,
  "harid_count": 1,
  "vt3d": null,
  "memberphoto": null,
  "mlsnum": "LAORTX-202609962",
  "listingid": 11087899,
  "lastreduced": null,
  "listpriceori": 235000,
  "liststatus": "A",
  "streetnum": "3408",
  "streetname": "58th Street",
  "listprice": 235000,
  "proptype": "Residential",
  "proptypename": "Single Family",
  "bedroom": 3,
  "bedroommax": null,
  "bathhalf": 0,
  "photoprimary": "http://lh.rdcpix.com/0578ec661261cb7c4e347180872401edl-f2152462142r.jpg",
  "bathfull": 2,
  "acres": 0.22,
  "agentlistname": "Melissa Sharkey",
  "agentlistid": "LAORTX-812021647",
  "bldgsqft": 1972,
  "bldgsqftsrc": null,
  "keymap": null,
  "lotsize": 9583.2,
  "lotsizesrc": null,
  "lotsizeunit": "acre",
  "stories": 1,
  "subdivision": null,
  "yearbuilt": 1962,
  "city": "Lubbock",
  "zip": "79413",
  "hasprivatepool": false,
  "garagenum": 0,
  "garagedesc": null,
  "architecturestyle": "Other",
  "officelistname": "Realty Refined",
  "officelistid": "LAORTX-109",
  "officelistphone": "8067994200",
  "officeemail": "jeremyreed@realty-refined.com",
  "newconstruction": null,
  "numunits": null,
  "propsubtype": "Single Family Residence",
  "roadfrontage": null,
  "hashouse": null,
  "parkingspace": null,
  "improvement": null,
  "restriction": null,
  "hasopenhouse": false,
  "latitude": 33.541808,
  "longitude": -101.888793,
  "salespricerange": null,
  "closeddate": "",
  "agentsell": null,
  "officesell": null,
  "showaddressonline": 1,
  "state": "TX",
  "fullstreetaddress": "3408 58th Street",
  "marketarea": null,
  "landuse": null,
  "property_class_id": 1,
  "salesprice": null,
  "harid2": null,
  "mlsorgid": null,
  "modified": null,
  "harmodified": null,
  "daysonmarket": null,
  "address_on_url": null,
  "videocount": null,
  "photocount": null,
  "isforeclosure": null,
  "colistagentmlsid": null,
  "colistofficemlsid": null,
  "cosellingagentmlsid": null,
  "cosellingofficemlsid": null,
  "floorplanlink": null,
  "pricepersqft": null,
  "concessioninprice": null,
  "agentlistwebsite": null,
  "agent_photo": "https://content.harstatic.com/media/icons/agent_placeholder.svg",
  "bio_url": "/melissa-sharkey/agent_laortx-812021647",
  "agent_premium": null,
  "broker_bio_url": "/realty-refined/broker_LAORTX-109",
  "agent_photo_num": null,
  "doh": null,
  "dom": null,
  "sdate": null,
  "formattedcloseddate": null,
  "show_regular": null,
  "subdivision_html": null,
  "liststatus_class": null,
  "listpriceorigin": null,
  "liststatus_text": null,
  "liststatus_lbl": null,
  "listprice_html": null,
  "bldgsqft_format": null,
  "lotsize_format": null,
  "web_url": "/homedetail/3408-58th-st-lubbock-tx-79413/7699956",
  "property_url": "/homedetail/3408-58th-st-lubbock-tx-79413/7699956",
  "bookmarked": null,
  "from_url": "https://www.har.com/search/dosearch?for_sale=1&mp_term_years=30&mp_mortgage_rate=6.55&mp_down_payment_rate=20&sort=listdate%20desc&view=map"
}
```

Each property record includes 100+ detailed fields organized by category:

#### Identification & MLS Data

| Field | Meaning |
|---|---|
| `MLS Number` | Unique MLS identifier for the property |
| `Listing ID` | HAR's internal listing ID |
| `Harid Count` | HAR system identifier |
| `Harid2` | Secondary HAR identifier |
| `MLS Org ID` | MLS organization code |
| `Property URL` | Direct link to the property listing on HAR.com |
| `Web URL` | Full web address of the listing page |

#### Property Address & Location

| Field | Meaning |
|---|---|
| `Full Street Address` | Complete mailing address |
| `Street Number` | Property street number |
| `Street Name` | Property street name |
| `City` | City name (e.g., Houston, The Woodlands) |
| `State` | State abbreviation (e.g., TX) |
| `ZIP Code` | Postal code |
| `Market Area` | HAR market designation |
| `Subdivision` | Community or subdivision name |
| `Displayed Location` | Location as shown to buyers |
| `Latitude` | Geographic latitude coordinate |
| `Longitude` | Geographic longitude coordinate |

#### Property Characteristics

| Field | Meaning |
|---|---|
| `Property Type` | General category (e.g., Residential, Commercial) |
| `Property Type Name` | Descriptive property type |
| `Property Subtype` | Detailed classification (e.g., Single Family, Condo) |
| `Bedrooms` | Number of bedrooms |
| `Max Bedrooms` | Maximum bedroom capacity (if flexible) |
| `Full Baths` | Count of full bathrooms |
| `Half Baths` | Count of half bathrooms |
| `Building Sq Ft` | Total interior square footage |
| `Building Sq Ft Source` | Source of square footage data |
| `Lot Size` | Land area measurement |
| `Lot Size Source` | Source of lot size information |
| `Lot Size Unit` | Measurement unit (acres, sq ft) |
| `Acres` | Property acreage |
| `Year Built` | Construction year |
| `Architecture Style` | Architectural design style |
| `Stories` | Number of stories/floors |
| `Number of Units` | Count of units (for multi-family) |
| `Land Use` | Zoning or land use classification |
| `Property Class ID` | Property classification code |

#### Pricing & Financial

| Field | Meaning |
|---|---|
| `List Price` | Current asking price |
| `Sales Price` | Actual sale price (after closing) |
| `Sales Price Range` | Price range bucket |
| `Original List Price` | Initial listing price |
| `Last Reduced` | Most recent price reduction |
| `Price Per Sq Ft` | Price per square foot calculation |
| `Tax Amount` | Annual property tax estimate |
| `Maintenance Fee` | HOA or maintenance costs (if applicable) |
| `Concession In Price` | Seller concessions included |

#### Features & Amenities

| Field | Meaning |
|---|---|
| `Has Private Pool` | Boolean flag for pool presence |
| `Has House` | Whether structure is a house |
| `Garage Spaces` | Number of parking spaces in garage |
| `Garage Description` | Garage type details (e.g., "2-car attached") |
| `Parking Spaces` | Total parking availability |
| `Road Frontage` | Street-facing measurement |
| `Has Open House` | Whether open house is scheduled |
| `Improvement` | Property improvements or renovations |
| `Restriction` | HOA restrictions or deed restrictions |
| `New Construction` | Boolean flag for new builds |

#### Listing Status & Timeline

| Field | Meaning |
|---|---|
| `List Status` | Current status code (Active, Pending, Sold) |
| `List Status Text` | Human-readable status |
| `List Status Label` | Formal status label |
| `List Status Class` | Status classification |
| `Forsale` | Boolean indicating "for sale" status |
| `Days On Market` | DOM count since listing |
| `Start Date` | When listing became active |
| `Closed Date` | Sale completion date |
| `Formatted Closed Date` | Formatted closure date |
| `Modified` | Last modification timestamp |
| `Har Modified` | HAR system last update time |
| `DOH` | Date on hold (if applicable) |
| `DOM` | Days on market metric |

#### Listing & Selling Agent Information

| Field | Meaning |
|---|---|
| `Listing Agent Name` | Agent listing the property |
| `Listing Agent ID` | MLS ID of listing agent |
| `Listing Office Name` | Brokerage firm name |
| `Listing Office ID` | MLS office identifier |
| `Listing Office Phone` | Brokerage contact number |
| `Office Email` | Brokerage email address |
| `Selling Agent` | Agent who sold the property |
| `Selling Office` | Selling brokerage name |
| `Co-list Agent MLS ID` | Secondary listing agent ID |
| `Co-list Office MLS ID` | Secondary office MLS ID |
| `Co-selling Agent MLS ID` | Secondary selling agent ID |
| `Co-selling Office MLS ID` | Secondary selling office ID |
| `Agent Website` | Agent's professional website |
| `Agent Photo` | Agent photo URL |
| `Agent Photo Number` | Photo identifier |
| `Agent Premium` | Premium agent flag |
| `Member Photo` | Member profile photo |
| `Bio URL` | Agent biography link |
| `Broker Bio URL` | Brokerage biography link |

#### Media & Visual Content

| Field | Meaning |
|---|---|
| `Primary Photo` | Main listing image URL |
| `Photo Count` | Total photos in listing |
| `Video Count` | Number of property videos |
| `VT3D` | 3D virtual tour flag |
| `Floor Plan Link` | URL to floor plan document |

#### Additional Data

| Field | Meaning |
|---|---|
| `Proptypeid` | Property type internal ID |
| `Key Map` | Map key reference |
| `Show Address Online` | Privacy setting for address display |
| `Show Regular` | Regular showing availability flag |
| `Address On URL` | URL-encoded address |
| `Subdivision HTML` | Subdivision formatted HTML |
| `List Price Origin` | How list price was determined |
| `List Price HTML` | Formatted price HTML |
| `Building Sq Ft Format` | Formatted square footage display |
| `Lot Size Format` | Formatted lot size display |
| `Bookmarked` | User bookmark flag |

***

### How to Use

1. **Build your search** — On HAR.com, apply filters (price range, property type, city, status) to narrow results.
2. **Copy the search URL** — From your browser's address bar, copy the full HAR search URL (e.g., `dosearch?for_sale=1&...`).
3. **Configure the scraper** — Paste the URL(s) into the `urls` array. Set `max_items_per_url` to your desired limit (e.g., `200` for moderate runs, `500` for exhaustive collection).
4. **Run the scraper** — Start the actor and monitor progress. Enable `ignore_url_failures` for uninterrupted runs.
5. **Export results** — Download data as JSON, CSV, or Excel, then import into your database or spreadsheet.

**Best practices:**

- Use specific filters (neighborhood, price tier) to get relevant results faster.
- Test with a small `max_items_per_url` (e.g., 50) first to preview data quality.
- For large-scale runs, split searches by price range or city to improve performance.

***

### Use Cases & Business Value

- **Investment analysis:** Identify undervalued properties, analyze price trends by neighborhood
- **Lead generation:** Build buyer lists for off-market deals or cash offers
- **Wholesaling:** Track comps, estimate after-repair value, and find acquisition targets
- **Market intelligence:** Monitor competitor listings, average days-on-market, price per sq ft by area
- **Real estate websites:** Aggregate Houston inventory for comparison portals

The HAR.com Property Scraper eliminates hours of manual browsing, delivering MLS-grade data that fuels smarter investment decisions and faster business workflows.

***

### Conclusion

The **HAR.com Property Scraper** is the fastest way to extract Houston real estate data at scale. With 100+ fields capturing everything from coordinates to agent details, it's built for investors, wholesalers, and analytics teams who need reliable, structured property data. Start scraping today and unlock competitive advantage in Houston's dynamic market.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.har.com/search/dosearch?for_sale=1&mp_term_years=30&mp_mortgage_rate=6.55&mp_down_payment_rate=20&sort=listdate%20desc&view=map"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 500
}
```

# 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 = {
    "urls": [
        "https://www.har.com/search/dosearch?for_sale=1&mp_term_years=30&mp_mortgage_rate=6.55&mp_down_payment_rate=20&sort=listdate%20desc&view=map"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/har-property-search-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 = {
    "urls": ["https://www.har.com/search/dosearch?for_sale=1&mp_term_years=30&mp_mortgage_rate=6.55&mp_down_payment_rate=20&sort=listdate%20desc&view=map"],
    "ignore_url_failures": True,
    "max_items_per_url": 500,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/har-property-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.har.com/search/dosearch?for_sale=1&mp_term_years=30&mp_mortgage_rate=6.55&mp_down_payment_rate=20&sort=listdate%20desc&view=map"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 500
}' |
apify call alexist/har-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=alexist/har-property-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Xg09G7j8mBSNgeJ1m/builds/L1jUI5sXOJEfw0BTp/openapi.json
