# HotPads Rentals Scraper - Apartments & Houses (`parseforge/hotpads-rentals-scraper`) Actor

Scrape apartments and houses for rent on HotPads across 69 rental categories. Rows carry the rent, bedroom range, full address, units available, promotion tag and leasing phone, with optional bathrooms, square footage, unit level rents, amenities, photos, pet policy, schools and fees.

- **URL**: https://apify.com/parseforge/hotpads-rentals-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.23 / 1,000 rental listings

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?

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### HotPads Scraper: Apartments and Houses for Rent Data

**Pull every apartment and house for rent on HotPads, market by market: 32,392 rentals in Austin alone on 8 September 2026, 40 listings per search page, 69 rental categories.** Every row carries the building name, the full street address, the asking rent, the bedroom range, how many units are free right now, the promotion tag, the verified flag, the leasing phone number and the photo. No login, no API key, no HotPads account. Exports to CSV, JSON, Excel and XML.

HotPads has no public API, and its listing pages sit behind PerimeterX, which answers a plain HTTP request with a 403 and a captcha page. Copying rents by hand out of a browser is the usual alternative, and it stops being possible somewhere around the second page. This actor clears the shield with a real browser, then reads HotPads' own server rendered markup, so a market that takes a day to transcribe comes back as a spreadsheet in minutes.

| Who uses it | What they scrape HotPads for |
| --- | --- |
| Multifamily owners and operators | Live competitor rents, concessions and unit level availability in their submarket |
| Real estate investors | Rent comps and gross yield inputs before they underwrite a building |
| Proptech and rental platforms | Listing inventory, photos and amenities to seed or refresh a marketplace |
| Property managers | Which nearby buildings are running a free rent offer and at what price |
| Market researchers and journalists | Median rent by city against the national median, and how inventory moved in 30 days |

### What it does

- 🏢 **Core listing fields.** Name, HotPads URL, listing ID, property type, street address, city, state, ZIP, asking rent, whether it is a starting price, bedroom range, studio flag, units available, promotion tag, verified flag, leasing phone, photo and 3D tour links. 33 fields before a single optional block.
- 🗺️ **69 verified rental categories.** Apartments, houses, condos, townhomes, duplexes, rooms, sublets, student and senior housing, studio through 4 bedroom, pet friendly, furnished, loft, by owner, with pool, gym, parking, laundry, gated entry, air conditioning or heating, and price bands from under $500 to under $3,000. Every one was measured against the HotPads result count before it was published.
- 📍 **Any US market.** Type `austin-tx`, `Austin, TX` or `Austin Texas` and all three resolve to the same HotPads market page. Neighbourhood, county, ZIP and university pages go in as URLs.
- 🔎 **Listing page enrichment.** Bathrooms, square footage, the low and high of the rent range, the description, the neighbourhood, the special offer text and when HotPads last updated the listing.
- 🛏️ **Unit level data.** Every available unit with its number, rent, previous rent when it dropped, move in date and the floor plan beds, baths and square feet. One Austin building returned 19 units.
- 🏊 **Amenities, photos, pet policy, fees, manager, schools.** Each is its own opt in block: the full amenity list, every photo at 1200px, the dog and cat rules with deposits and weight limits, the estimated move in cost, the management company with its office hours, and the assigned schools with grades, distance and rating.
- 📊 **Computed market row.** One extra row per market with the HotPads median rent, the national median it is compared against, the live inventory and its 30 day move. Austin on 8 September 2026: $1,538 against a national $1,469, 4.7% above, inventory up 0.20%.
- 🧹 **No empty columns.** Fields HotPads never publishes on a surface were dropped rather than shipped as permanent nulls. Withheld values come back as `Not Disclosed`, inapplicable ones as `N/A`, booleans as `Yes` or `No`.

### What you can do with HotPads data

**Price a building against its real competitors.** Pull every apartment inside a ZIP with units and floor plans switched on, and you have each competitor's rent per unit type, square footage and move in date. That is the rent comp set an operator normally pays a data vendor for, rebuilt from the public listings on demand.

**Find the concessions before your prospects do.** The promotion tag comes back on the search row for free: `Special Offer`, `Price Drop`, `1 Month Free`, `10 Weeks Free`, `$500 Off`. Filter on it and you have a live list of every building in a market currently buying occupancy, with the exact wording of the offer from the listing page.

**Underwrite a market in an afternoon.** The market summary row gives the median rent, the national comparison and the 30 day inventory move for each city and category you scrape. Run it across twenty markets and you have a rent index nobody had to type.

**Feed a rental search product.** 33 base fields plus photos, amenities, coordinates and available units is enough to populate listing cards, map pins and filters. Rerun the same input daily and diff on `listingId` to track what came on market, what changed price and what disappeared.

### Why choose this scraper

| | What you get |
| --- | --- |
| Gets past PerimeterX | HotPads answers plain HTTP with a 403 captcha page on every listing path. This actor clears it with a real browser and rotates the exit node when a session gets burnt, up to 12 times. |
| Reads the source, not a guess | Rows come from HotPads' own schema.org markup and server rendered cards, so a redeployed CSS class does not silently empty a column. |
| Filters that actually filter | All 69 categories were measured against the HotPads result count. Four that returned the unfiltered total were dropped rather than shipped as decoration. |
| Pay for what you take | 16 separate events. The headline row is $0.007. Amenities, photos, units, schools, pet policy and the rest are billed only when they came back with data. |
| Cheap bandwidth, so cheap rows | After the first page clears, everything but the document is blocked. 24 fully enriched listings plus a market row moved 6.7 MB of residential proxy. |
| Free plan preview | 10 rows on a free Apify account, with the same fields as a paid run. |

### How it compares

There are eight HotPads actors on the Apify Store. Most of them return one flat row type at $0.003 per item and stop at the search card, which means no bathrooms, no square footage, no unit level rents and no amenities. `one-api/hotpads-scraper` and `tangerine_loom/Hotpads-Scraper` both sit at $0.003 with two events; `hello.datawizards/hotpads-urls-script` charges $0.008 per item plus a $0.05 start fee. This actor is more than double the cheapest of them on the headline row, and the difference buys the listing page: 63 fields instead of a card, 69 measured category filters instead of a free text search, and a market summary row that none of them produce. If all you need is a name and an asking rent, the $0.003 actors are the better buy and this README will not pretend otherwise.

| Actor | Price per row | Events | Listing page data | Category filters |
| --- | --- | --- | --- | --- |
| **parseforge/hotpads-rentals-scraper** | **$0.007** | **16** | **Units, amenities, photos, pets, fees, schools, manager** | **69 measured** |
| one-api/hotpads-scraper | $0.003 | 2 | No | No |
| tangerine\_loom/Hotpads-Scraper | $0.003 | 2 | No | No |
| hello.datawizards/hotpads-urls-script | $0.008 plus $0.05 start | 2 | No | No |
| sian.agency/hotpads-property-scraper | Not published | 4 | Partial | No |

### What a rental listing looks like

One unedited row from the verified run of 8 September 2026, trimmed only where a long array repeats itself:

```json
{
  "rowType": "rental-listing",
  "listingId": "23vd5xk",
  "name": "The Vaughan",
  "url": "https://hotpads.com/the-vaughan-austin-tx-78754-23vd5xk/pad",
  "propertyType": "Apartment building",
  "streetAddress": "12601 Innovar Cir",
  "city": "Austin",
  "state": "TX",
  "zipCode": "78754",
  "country": "US",
  "fullAddress": "12601 Innovar Cir, Austin, TX 78754",
  "priceText": "$1,486+ /mo",
  "priceMin": 1486,
  "priceIsStartingAt": "Yes",
  "priceCurrency": "USD",
  "isTotalPrice": "Yes",
  "bedsText": "1 - 3 beds",
  "bedsMin": 1,
  "bedsMax": 3,
  "isStudio": "No",
  "unitsAvailable": 32,
  "listingTag": "New Today",
  "isVerified": "Yes",
  "phone": "(737) 345-4353",
  "photoUrl": "https://photos.zillowstatic.com/fp/66a07a554e987c954667bc6db19595c4-rentals_medium_500_500.webp",
  "tourCount": 5,
  "tourUrls": ["https://viewer.tourbuilder.com/?themeId=631a1e44d8f0fe1df521d8db&tour=633349d46578507ebe66749f"],
  "searchLocation": "austin-tx",
  "searchCategory": "apartments-for-rent",
  "searchUrl": "https://hotpads.com/austin-tx/apartments-for-rent",
  "pageNumber": 1,
  "positionOnPage": 1,
  "detailUrl": "https://hotpads.com/the-vaughan-austin-tx-78754-23vd5xk/pad",
  "propertyTypeDetailed": "Apartments",
  "priceRangeText": "$1,486 - $2,171/mo",
  "priceLow": 1486,
  "priceHigh": 2171,
  "bedsMinDetail": 1,
  "bedsMaxDetail": 3,
  "bathsMin": 1,
  "bathsMax": 2,
  "sqftMin": 815,
  "sqftMax": 1439,
  "lastUpdatedText": "Updated 2 hours ago",
  "specialOffer": "Lease today and receive up to 12 weeks FREE base rent! *Minimum lease term applies. Other costs and fees excluded.",
  "neighborhood": "Pioneer Crossing",
  "description": "Apartments Near EastVillage - Move In TODAY! You are sure to fall in love with the The Vaughan apartment homes.",
  "latitude": 30.379540250531,
  "longitude": -97.627589084926,
  "amenities": ["Bicycle Storage", "Club House", "EV Charging Stations", "Fitness Center", "Pet Park", "Swimming Pool", "Year Built: 2022"],
  "amenityCount": 26,
  "photos": ["https://photos.zillowstatic.com/fp/66a07a554e987c954667bc6db19595c4-rentals_large_1200_1200.webp"],
  "photoCount": 5,
  "units": [
    { "unit": "2303", "price": 1486, "previousPrice": null, "isNew": "No", "availableFrom": "Now", "floorPlan": "1 Bed • 1 bath • 824 sqft", "beds": 1, "baths": 1, "sqft": 824 },
    { "unit": "6411", "price": 1490, "previousPrice": null, "isNew": "Yes", "availableFrom": "11/12/2026", "floorPlan": "1 Bed • 1 bath • 824 sqft", "beds": 1, "baths": 1, "sqft": 824 }
  ],
  "unitCount": 19,
  "petPolicy": [
    { "petType": "Dogs", "allowed": "Yes", "deposit": 250, "oneTimeFee": 350, "monthlyFee": 25, "numberAllowed": 2, "weightLimitLbs": 100, "notes": "We welcome 2 pets per apartment, there is a $350 pet fee and a $250 pet deposit." }
  ],
  "propertyManager": {
    "managerName": "Greystar",
    "managerPhone": "(737) 345-4353",
    "officeHours": ["Sunday 1:00 PM to 5:00 PM", "Monday 9:00 AM to 6:00 PM"],
    "websiteUrl": "https://hotpads.com/renter-hub/clickRedirect?alias=451tgvdperfpf&r=HotPads&mobileFriendly=true"
  },
  "nearbySchools": [
    { "name": "Pioneer Crossing Elementary School", "type": "Public", "grades": "PK - 5", "distanceMiles": 2.1, "rating": 2, "district": "Manor Independent School District" }
  ],
  "demand": { "viewsText": "Viewed 3 times this past week.", "contactText": "No one has contacted this listing." },
  "scrapedAt": "2026-09-08T17:45:58.148Z"
}
```

The market summary row is a second row type, flagged with `"rowType": "market-summary"`:

```json
{
  "rowType": "market-summary",
  "market": "Austin, TX Apartments for Rent",
  "searchLocation": "austin-tx",
  "searchCategory": "apartments-for-rent",
  "listingsAvailable": 32392,
  "medianRent": 1538,
  "nationalMedianRent": 1469,
  "medianVsNationalPct": 4.7,
  "inventoryChange30dPct": 0.2
}
```

### Configure the run

Give it one or more markets and a category, and it paginates until it hits your row limit. Locations take the HotPads slug or a plain city and state. Everything past the base row is a checkbox that is off until you tick it, and each one is billed only when it returned something.

Every apartment in Austin, headline fields only:

```json
{
  "searchLocations": ["austin-tx"],
  "category": "apartments-for-rent",
  "maxItems": 1000,
  "maxPagesPerSearch": 25
}
```

Rent comps across three Texas markets, with units, square footage, amenities and coordinates:

```json
{
  "searchLocations": ["Austin, TX", "Dallas, TX", "Houston, TX"],
  "category": "2-bedroom-apartments-for-rent",
  "maxItems": 3000,
  "includeDetails": true,
  "includeUnits": true,
  "includeAmenities": true,
  "includeGeo": true,
  "includeMarketSummary": true
}
```

Every building in a market currently running a concession, with the offer text and the leasing contact:

```json
{
  "searchLocations": ["denver-co"],
  "category": "apartments-for-rent",
  "listingTagFilter": "Free",
  "minPrice": 1200,
  "maxPrice": 2500,
  "maxItems": 500,
  "includeDetails": true,
  "includeContact": true,
  "includeFees": true
}
```

### Pricing

Pay per event. Nothing is charged for a block that came back empty.

| Event | Price | Charged when |
| --- | --- | --- |
| Actor start | $0.005 per GB | Once per run. The actor runs at 4 GB, so $0.02. |
| Rental listing | $0.007 | One rental from a search page, 33 fields |
| Search page scanned | $0.010 | One search page paginated, up to 40 listings |
| Market summary row | $0.010 | One market row, when HotPads published the numbers |
| Listing page opened | $0.006 | The extra page load every block below reads |
| Units and floor plans | $0.004 | Per listing whose available units were extracted |
| Property manager | $0.004 | Company, phone, office hours, website |
| Amenities | $0.003 | Full amenity list |
| Photo gallery | $0.003 | Every photo at 1200px |
| Pet policy | $0.003 | Dog and cat rules, deposits, weight limits |
| Costs and fees | $0.003 | Move in cost, monthly fees, one time fees |
| Nearby schools | $0.003 | District and assigned schools |
| Listing FAQ | $0.003 | Question and answer pairs |
| Coordinates | $0.002 | Latitude and longitude |
| Demand signals | $0.002 | Views and contacts this week |
| Similar rentals | $0.002 | Comparable rentals from the listing page |

| Rows | Headline fields only | Every block ticked |
| --- | --- | --- |
| 100 | $0.75 | up to $4.55 |
| 1,000 | $7.27 | up to $45.27 |
| 10,000 | $72.52 | up to $452.52 |

Volume tiers apply automatically: Bronze takes 3.8% off, Silver 7.4%, Gold and above 11%.

### Free users

Free Apify accounts get 10 rows per run as a preview, with exactly the same fields a paid run returns. Every filter, category and optional block works on the free plan; only the row count is capped. Paid plans go to 1,000,000 rows per run. [Upgrade here](https://console.apify.com/billing?fpr=vmoqkp).

### Run it

1. Create a free Apify account. It comes with $5 of platform credit, which is enough for roughly 680 headline rows.
2. Open the actor, type your market into **Locations** and pick a **Rental category**.
3. Set **Max Items**, tick any listing page blocks you want, and press **Start**.
4. Download the dataset as CSV, JSON, Excel or XML, or pull it from the API at `https://api.apify.com/v2/datasets/{datasetId}/items`.

### Use with AI agents (MCP)

```
claude mcp add apify --transport http https://mcp.apify.com -H "Authorization: Bearer YOUR_APIFY_TOKEN"
```

Then ask your agent in plain language:

- "Get me every 2 bedroom apartment for rent in Denver under $2,000, with square footage and amenities."
- "Which buildings in Austin are running a free rent concession right now, and what is the offer?"
- "Compare the median rent in Austin, Dallas and Houston against the national median."

### Troubleshooting

**No results at all.** The market slug is probably wrong. HotPads addresses a city as `city-state`, so `austin-tx`, not `austin` or `texas`. Typing `Austin, TX` works too. If a category returns nothing for a small market, that category genuinely has no inventory there: `sublets` in Austin had 15 listings on 8 September 2026 and several categories have single digits.

**Fewer rows than I asked for.** Three causes, in order of likelihood. You are on a free plan, which caps a run at 10 rows. Your filters removed rows after the page was read, which is what `minPrice`, `maxPrice`, `minBeds`, `maxBeds`, `listingTagFilter`, `verifiedOnly` and `withPhoneOnly` do. Or `maxPagesPerSearch` ran out: HotPads returns 40 listings per page, so 25 pages is 1,000 listings per market and you need to raise it for more.

**A field came back empty.** `Not Disclosed` means HotPads does not publish it for that listing, and `N/A` means it does not apply. Bathrooms, square footage, amenities, units and schools only exist on the listing page, so they stay empty unless **Open each listing page** is ticked. `costs` is genuinely absent on most listings: 14 of 24 in the verified run published a fee breakdown, and `petPolicy` 23 of 24.

**The run is slow.** A search page is one browser navigation and yields 40 rows; a listing page is one more navigation each. The verified run did 24 fully enriched listings plus a market row in 96 seconds, about 16 rows a minute once the browser is up. Headline rows alone are far faster: 10 rows came back in 30 seconds, and one page load yields 40. Untick blocks you do not need.

**The log says it rotated the exit node.** That is PerimeterX blocking a residential IP, and the actor handling it. It retries the same URL on a fresh exit up to 12 times per run. A handful of rotations in a long run is normal and costs you nothing extra.

### FAQ

| Question | Answer |
| --- | --- |
| Do I need a HotPads account or an API key? | No. Everything it reads is public and anonymous. HotPads has no public API. |
| How many rentals are there per market? | Austin had 32,392 apartment rentals on 8 September 2026. Big metros run into the tens of thousands; small markets and narrow categories are much smaller. |
| How many listings does one search page return? | 40, and the actor follows the next page link until your row limit or page limit stops it. |
| Can I scrape a neighbourhood, ZIP or county? | Yes. Paste the HotPads URL into the **HotPads URLs** field; the location plus category pair only covers city level pages. |
| Which filters run on HotPads and which run here? | The rental category runs on HotPads and changes the result count. Rent, bedrooms, tag, verified and phone are applied to the row after the page is read. The "under $X" categories are a source side price filter. |
| Why are bathrooms and square footage empty? | They are not on the search card. Tick **Open each listing page**. |
| Does it return individual units or just the building? | Both. The row is the building; tick **Available units and floor plans** for each unit with its own rent, size and move in date. |
| How fresh is the data? | It is read live at run time. Listings carry `lastUpdatedText` from HotPads, which was "Updated 2 hours ago" on the sample row. |
| Can I run it on a schedule? | Yes. Use Apify Schedules and diff on `listingId` between runs to track new listings, price changes and removals. |
| Why is it more expensive than the other HotPads actors? | They return the search card only. This one opens the listing page for bathrooms, square footage, unit level rents, amenities, pet policy, fees, schools and the manager, and it is priced per block so you pay for the ones you tick. |
| Is scraping HotPads legal? | It collects only public listing data, no logins and no personal accounts. You are responsible for how you use it, including GDPR, CCPA and PIPL obligations where they apply. |

### Related actors

- [Apartments.com Scraper](https://apify.com/parseforge/apartments-com-scraper?fpr=vmoqkp)
- [Zillow Rentals Scraper](https://apify.com/parseforge/zillow-rentals-scraper?fpr=vmoqkp)
- [Trulia Scraper](https://apify.com/parseforge/trulia-scraper?fpr=vmoqkp)
- [Realtor.com Scraper](https://apify.com/parseforge/realtor-com-scraper?fpr=vmoqkp)
- [Redfin Property Listings Scraper](https://apify.com/parseforge/redfin-property-listings-scraper?fpr=vmoqkp)

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

Disclaimer: this is an unofficial tool and is not affiliated with, endorsed by or connected to HotPads or Zillow Group. It collects only publicly available listing data, with no login and no access to private accounts. You are responsible for using the output in line with GDPR, CCPA, PIPL and any other regulation that applies to you.

# Actor input Schema

## `searchLocations` (type: `array`):

US markets to scrape, one per line. Accepts the HotPads slug (austin-tx), the city and state (Austin, TX) or the spelled out state (Austin Texas); all three resolve to the same market page.

## `category` (type: `string`):

Which HotPads category page to paginate for every location. Each value is a real HotPads URL segment and applies the filter on the source side, so the row counts change with it.

## `startUrls` (type: `array`):

Optional. Paste HotPads search URLs to scrape them exactly as given, including neighbourhood, county, zip and university pages that the location plus category pair cannot express. When set, the locations above are still scraped as well.

## `maxItems` (type: `integer`):

Free users: limited to 10 items (preview). Paid users: up to 1,000,000.

## `maxPagesPerSearch` (type: `integer`):

How deep to paginate each location and category pair. HotPads returns 40 listings per page, so 25 pages is 1,000 listings per market.

## `minPrice` (type: `integer`):

Drop listings whose starting rent is below this many US dollars per month.

## `maxPrice` (type: `integer`):

Drop listings whose starting rent is above this many US dollars per month.

## `minBeds` (type: `integer`):

Keep listings that offer at least this many bedrooms. Studios count as 0.

## `maxBeds` (type: `integer`):

Keep listings whose smallest floor plan is at most this many bedrooms. Studios count as 0.

## `listingTagFilter` (type: `string`):

Keep only listings carrying a promotion tag that contains this text, for example "Price Drop", "New Today", "Special Offer" or "Month Free".

## `verifiedOnly` (type: `boolean`):

Keep only listings HotPads marks as Verified.

## `withPhoneOnly` (type: `boolean`):

Keep only listings that publish a leasing phone number on the search card.

## `includeMarketSummary` (type: `boolean`):

Add one extra row per market with the HotPads median rent, the national median it is compared against, the live inventory count and its 30 day move. Read from page one of the search; it is not on later pages.

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

Open every listing page to add bathrooms, square footage, the low and high of the rent range, the property description, the neighbourhood, the special offer text and when HotPads last updated it. Required by every block below, and it costs one extra page load per listing.

## `includeUnits` (type: `boolean`):

Add every currently available unit: unit number, rent, previous rent when it dropped, availability date, and the floor plan bedrooms, bathrooms and square footage.

## `includeAmenities` (type: `boolean`):

Add the full building amenity list as HotPads publishes it, typically 10 to 30 entries covering parking, pets, security, pool, gym and year built.

## `includePhotoGallery` (type: `boolean`):

Add every listing photo URL at 1200px, not just the thumbnail carried on the search row.

## `includeGeo` (type: `boolean`):

Add the latitude and longitude of the building.

## `includePetPolicy` (type: `boolean`):

Add the dog and cat policy: allowed or not, deposit, one time fee, monthly fee, how many pets and the weight limit.

## `includeFees` (type: `boolean`):

Add the estimated total move in cost, the monthly rent and fees range and the one time fees total.

## `includeContact` (type: `boolean`):

Add the management company, its phone number, the office hours by day and the outbound website link.

## `includeSchools` (type: `boolean`):

Add the assigned school district and the nearby schools with type, grade range, distance in miles and GreatSchools rating.

## `includeDemand` (type: `boolean`):

Add how many times the listing was viewed in the past week and how many renters have contacted it.

## `includeFaq` (type: `boolean`):

Add the question and answer pairs HotPads publishes on the listing page, including the unit counts and starting rents per bedroom count.

## `includeSimilar` (type: `boolean`):

Add the comparable rentals HotPads shows on the listing page, each with its name and city.

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

Proxy used for every browser session. Leave the default unless you have a reason to change it.

## Actor input object example

```json
{
  "searchLocations": [
    "austin-tx"
  ],
  "category": "apartments-for-rent",
  "maxItems": 10,
  "maxPagesPerSearch": 25,
  "verifiedOnly": false,
  "withPhoneOnly": false,
  "includeMarketSummary": false,
  "includeDetails": false,
  "includeUnits": false,
  "includeAmenities": false,
  "includePhotoGallery": false,
  "includeGeo": false,
  "includePetPolicy": false,
  "includeFees": false,
  "includeContact": false,
  "includeSchools": false,
  "includeDemand": false,
  "includeFaq": false,
  "includeSimilar": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `csv` (type: `string`):

No description

## `runLog` (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 = {
    "searchLocations": [
        "austin-tx"
    ],
    "category": "apartments-for-rent",
    "maxItems": 10,
    "maxPagesPerSearch": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/hotpads-rentals-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 = {
    "searchLocations": ["austin-tx"],
    "category": "apartments-for-rent",
    "maxItems": 10,
    "maxPagesPerSearch": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/hotpads-rentals-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 '{
  "searchLocations": [
    "austin-tx"
  ],
  "category": "apartments-for-rent",
  "maxItems": 10,
  "maxPagesPerSearch": 25
}' |
apify call parseforge/hotpads-rentals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/hotpads-rentals-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/1JysmD4Dm6RW1VCet/builds/Ffbi4gls1gU5bZEEv/openapi.json
