Hotpads Scraper
Pricing
Pay per usage
Hotpads Scraper
Scrape rental listings from HotPads.com. Extract price, beds, baths, address, photos, amenities, pet policy, nearby schools and more. Supports apartments, houses, condos and rooms across any US city. Fast mode or full detail mode.
Pricing
Pay per usage
Rating
5.0
(1)
Developer
wallace
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
HotPads.com Rental Listings Scraper
Extract structured rental listing data from HotPads.com — prices, unit details, amenities, agent contacts, photos, and more — without writing a single line of code. Works for apartments, houses, condos, townhouses, and rooms across any US city or neighbourhood.
Try it on any HotPads search URL: apartments, houses, condos, or filtered searches by price, beds, or neighbourhood.
What does HotPads Scraper do?
HotPads Scraper loads HotPads.com search result pages and, optionally, visits each listing's detail page to extract the full data. It outputs one dataset row per listing — apartment buildings include a nested units array with every available unit's price, sqft, beds, baths, and availability date.
Run it on Apify's infrastructure with automatic proxy rotation, scheduling, API access, and integrations to Google Sheets, Airtable, Make, Zapier, and hundreds of other tools.
Why use HotPads Scraper?
- Real estate market research — track rent prices across neighbourhoods over time
- Investment analysis — compare rental yields and vacancy rates by area
- Relocation research — gather listings across multiple cities for comparison
- Property management — monitor competitor pricing and availability
- Lead generation — build contact lists of landlords and property managers
- Academic research — compile rental market datasets for housing studies
How to use HotPads Scraper
- Find a search URL on HotPads.com — navigate to any city, filter by property type, price range, or beds, then copy the URL from your browser (e.g.
https://hotpads.com/san-francisco-ca/apartments-for-rent?orderBy=score) - Open this Actor and click Try for free
- Paste the URL into the Start URLs field
- Set your limits — use
Max Itemsto cap results andMax Pagesto control how many search pages to follow - Choose a mode — enable Include Details (default) to visit each listing page and get the full dataset — descriptions, per-unit breakdowns, lease terms, fees, pet deposits, and all search-page fields. Disable it for fast mode — search-page data only, ~10× faster, no detail page visits
- Click Start and wait for results to appear in the Output tab
- Download in JSON, CSV, Excel, or HTML — or connect via API
Input
| Field | Type | Default | Description |
|---|---|---|---|
| Start URLs | URL list | — | One or more HotPads search page URLs |
| Max Items | integer | 0 (unlimited) | Stop after this many listings (0 = scrape all) |
| Max Pages | integer | 40 | Search result pages to follow per URL (max 40 — HotPads hard cap) |
| Include Details | boolean | true | When true (default): visits each listing's detail page — returns the full dataset including description, per-unit breakdown, fees, lease terms, and all search-page fields. When false (fast mode): uses search page data only — ~10× faster, fewer compute units, no detail page visits |
| Proxy Configuration | proxy | Apify Residential US | Proxy settings — residential proxies are required to avoid blocks |
Example input:
{"startUrls": [{ "url": "https://hotpads.com/san-francisco-ca/apartments-for-rent?orderBy=score" }],"maxItems": 100,"maxPages": 3,"includeDetails": true}
Output
Results appear in the Output tab. You can download the dataset in JSON, CSV, Excel, or HTML format.
Apartment building (includeDetails: true)
One row per building with a units array containing every available unit:
{"url": "https://hotpads.com/nema-san-francisco-ca-94103-247tudg/pad","display_name": "NEMA","street_address": "8 10th St","city": "San Francisco","state": "CA","zip": "94103","neighborhood": "South of Market","latitude": 37.7761933,"longitude": -122.4174695,"property_type": "large","listing_type": "rental","is_apartment_building": true,"price_min": 3605,"price_max": 8091,"price_display": "$3,605 - $8,091","bedrooms_min": 0,"bedrooms_max": 2,"bathrooms_min": 1,"bathrooms_max": 2,"sqft_min": 463,"sqft_max": 1482,"description": "San Francisco's original lifestyle pioneer...","lease_terms": "12","total_units_in_building": 754,"special_offers": "Move-in incentives available on select residences.","pet_policy": "Cats and Dogs Allowed","laundry": "In Unit, Shared","parking": "Garage, Detached Garage","gym": true,"pool": true,"security": "Doorman, Gated Entry","dishwasher": true,"listed_by_name": "NEMA Leasing Agent","listed_by_company": "CH Management Services LLC","listed_by_phone": "1-707-368-5750","posted_date": "2018-08-08T15:37:28.458Z","updated_date": "2026-05-06T12:05:50.052Z","listing_source": "hotpads.com","units": [{"unit_number": "0829","floorplan_name": "SA1","floorplan_id": "fp-sa1","beds": 0,"baths": 1,"sqft": 476,"price": 3605,"availability_date": null,"is_new_unit": false,"has_price_dropped": true,"price_drop": 145}]}
Single-unit listing (house, condo, townhouse, room)
{"url": "https://hotpads.com/1559-pershing-dr-a-san-francisco-ca-94129-xyz/pad","display_name": "1559 Pershing Dr #A","unit": "A","street_address": "1559 Pershing Dr","city": "San Francisco","state": "CA","zip": "94129","neighborhood": "Presidio","property_type": "townhouse","listing_type": "rental","is_apartment_building": false,"price": 4950,"bedrooms": 2,"bathrooms": 1,"sqft": 835,"availability_date": "2026-05-08","pet_policy": "Cats and Dogs Allowed","laundry": "Washer/Dryer Hookups","parking": "Off Street","dishwasher": true,"listed_by_name": "Baker Beach Apartment Homes","listed_by_company": "The Presidio Residences","posted_date": "2026-05-06T11:40:39.784Z","listing_source": "hotpads.com","units": null}
Data fields
All fields below are present in both modes unless marked. Detail mode (includeDetails: true) is a strict superset — it returns every fast-mode field plus the detail-only fields.
| Field | Type | Mode | Description |
|---|---|---|---|
url | string | both | Direct link to the HotPads listing |
display_name | string | both | Listing name or address |
street_address | string | both | Street address |
city | string | both | City |
state | string | both | State abbreviation (e.g. "CA") |
zip | string | both | ZIP code |
neighborhood | string | both | Neighbourhood name |
latitude / longitude | number | both | GPS coordinates |
property_type | string | both | "large", "house", "condo", "townhouse", etc. |
listing_type | string | both | "rental" or "room" |
unit | string | both | Unit identifier for single-unit listings (e.g. "A", "302") — null for apartment buildings |
is_apartment_building | boolean | both | true for multi-unit buildings |
price | number | both | Monthly rent — single-unit listings only |
price_min / price_max | number | both | Price range — apartment buildings only |
price_display | string | both | Formatted price string (e.g. "$3,605 - $8,091") |
bedrooms / bathrooms / sqft | number | both | Single-unit dimensions |
bedrooms_min/max / bathrooms_min/max / sqft_min/max | number | both | Range — apartment buildings |
availability_date | string | both | Available from date (ISO 8601) or null = available now |
unit_count | number | both | Currently available units in this building |
rental_application_status | string | both | "accepted", "undecided", or "unaccepted" |
student_housing | boolean | both | Listing is targeted at student renters |
senior_housing | boolean | both | Age-restricted senior housing |
military_housing | boolean | both | Military housing |
income_restricted | boolean | both | Income-restricted / affordable housing |
has_special_offers | boolean | both | Listing has active move-in promotions |
special_offer_label | string | both | Short offer text e.g. "1 month free" |
price_drop_count | number | both | Number of recent price drops on this listing |
new_unit_count | number | both | Number of newly added units |
room_is_furnished | boolean | both | Room listing is furnished (room listings only) |
has_private_bath | boolean | both | Room has private bathroom (room listings only) |
updated_display | string | both | Last updated — human-readable e.g. "2h", "3 days ago" |
pet_policy | string | both | Pet policy summary e.g. "Cats and Dogs Allowed" |
laundry | string | both | e.g. "In Unit", "In Unit, Shared" |
parking | string | both | e.g. "Garage", "Off Street" |
hvac | string | both | e.g. "Central A/C" |
gym / pool | boolean | both | On-site gym / pool |
security | string | both | e.g. "Doorman, Gated Entry" |
dishwasher | boolean | both | Dishwasher available |
has_3d_tour | boolean | both | 3D virtual tour available |
photos | string[] | both | Array of photo URLs |
photo_count | number | both | Total photo count |
listed_by_name | string | both | Agent or landlord name |
listed_by_company | string | both | Property management company |
listed_by_phone | string | both | Contact phone number |
is_broker_listing | boolean | both | Listed by a broker |
posted_date | string | both | Original listing date (ISO 8601) |
listing_source | string | both | Always "hotpads.com" |
description | string | detail only | Full listing description |
lease_terms | string | detail only | Lease length and terms |
fees_and_deposits | array | detail only | Fee/deposit objects if provided |
total_units_in_building | number | detail only | Total units in building (apartment buildings) |
website | string | detail only | Property management website |
special_offers | string | detail only | Full move-in offer text |
cat_allowed / dog_allowed | boolean | detail only | Per-pet-type allowance |
cat_deposit / dog_deposit | number | detail only | Pet deposit amount |
updated_date | string | detail only | Last updated — ISO 8601 timestamp |
nearby_schools | array | detail only | Nearby schools — each has name (string) and type ("primaryschool", "middleschool", "highschool", "mixedschool") |
units | array | detail only | Available units — apartment buildings only |
How much does it cost to scrape HotPads?
This actor is currently free to use. You only pay for Apify platform compute and proxy usage from your own account credits.
Apify offers a free tier with $5 of platform credits per month. With residential proxies enabled, typical costs are:
| Listings | Mode | Estimated platform cost |
|---|---|---|
| 100 | Fast | ~$0.05 |
| 100 | Detail | ~$0.50 |
| 1,000 | Fast | ~$0.20 |
| 1,000 | Detail | ~$3–5 |
Fast mode (includeDetails: false) is ~10× cheaper since it skips detail page visits — ideal for large-scale price monitoring where description and per-unit breakdowns are not needed.
To control costs: set maxItems to cap results and maxPages to limit search depth.
Tips
- Multiple neighbourhoods: add several search URLs to the Start URLs field — the scraper will process them all in one run
- Property type filtering: use HotPads's own filters in the URL —
houses-for-rent,condos-for-rent,rooms-for-rentall work - Price range filtering: filter on HotPads first (e.g.
?price=2000-4000) to target the listings you need - Keep data fresh: use Apify's built-in scheduler to run the actor daily or weekly and maintain an up-to-date dataset
- Large cities: HotPads caps at 40 pages × 40 listings = 1,600 results per search URL. For dense markets like NYC or SF, filter by neighbourhood or price band to stay within the window
FAQ, disclaimers, and support
Is scraping HotPads legal? This actor collects publicly available listing data for personal or business research. Always comply with HotPads's Terms of Service and applicable data protection laws in your jurisdiction. Do not use this tool to harvest personal data without a lawful basis.
Some fields are null — why?
HotPads does not always provide every field for every listing. A null value means the data was not available on the page, not that the scraper failed.
The scraper got blocked — what should I do?
Ensure the proxy is set to Apify Residential US proxies. Avoid very high concurrency settings. If blocks persist, try reducing maxConcurrency or contact support.
Can you build a custom version? Yes — open an issue on the Issues tab or contact us directly for a custom data extraction solution tailored to your needs.