Hotpads Scraper With Agents | Fast & Reliable avatar

Hotpads Scraper With Agents | Fast & Reliable

Pricing

from $0.70 / 1,000 property listings

Go to Apify Store
Hotpads Scraper With Agents | Fast & Reliable

Hotpads Scraper With Agents | Fast & Reliable

Extract HotPads rental listings at scale with unlimited coverage, deep listing detail, owner and contact data, flexible filters, and broad market coverage. Built for enterprise-grade rental intelligence, lead generation, and automated analytics pipelines.

Pricing

from $0.70 / 1,000 property listings

Rating

0.0

(0)

Developer

Fatih Tahta

Fatih Tahta

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Hotpads Scraper

Slug: fatihtahta/hotpads-scraper

Overview

Hotpads Scraper collects structured rental listing records, including listing identifiers, rental URLs, titles, property types, pricing, bedrooms, bathrooms, square footage, media, amenities, contact details, policies, timestamps, and location attributes. HotPads is a public rental marketplace where apartment, condo, house, townhouse, room, sublet, and corporate housing availability can provide useful signals for rental-market analysis. The actor turns selected HotPads search criteria into repeatable Apify datasets that can be used in analytics, enrichment, monitoring, and reporting workflows. It is designed for recurring data acquisition where consistent JSON output, predictable input controls, and operational repeatability matter. Results reflect the public data available at run time and should be validated against your target market, filters, and downstream requirements.

Why Use This Actor

  • Market research and analytics teams: collect structured rental data for market intelligence, pricing analysis, inventory tracking, and neighborhood-level reporting.
  • Product and content teams: populate rental experiences, internal directories, comparison tools, or content operations with normalized listing attributes and media metadata.
  • Developers and data engineering teams: feed downstream systems with repeatable JSON records suitable for ETL jobs, data warehouses, APIs, and dataset normalization.
  • Lead generation and enrichment teams: identify rental listings, owner-listed units, contact signals, amenities, and listing context for enrichment pipelines and operational review.
  • Monitoring and competitive tracking teams: schedule recurring runs to track pricing, availability, listing recency, geographic coverage, and market movement over time.

Common Use Cases

  • Market intelligence: monitor rental supply, pricing bands, availability, bedroom mix, amenities, and location movement across supported HotPads markets.
  • Lead generation: build targeted prospect lists from public rental listings that match owner-listed, amenity, price, or geographic criteria.
  • Competitive monitoring: track changes across neighborhoods, property types, special offers, and recently published listings.
  • Catalog and directory building: populate internal rental databases with structured public records, addresses, images, pricing, and feature metadata.
  • Data enrichment: add current public rental attributes to existing CRM, BI, underwriting, or analytics datasets.
  • Recurring reporting: schedule periodic runs for dashboards, alerts, market snapshots, and trend analysis.

Quick Start

  1. Enter a supported location, such as a city, neighborhood, borough, ZIP code, or address.
  2. Add optional filters such as property_type, min_price, max_price, bedroom, min_bedroom, min_bathroom, amenities, pets, or publication recency.
  3. Set a small limit for your first validation run.
  4. Run the actor in Apify Console.
  5. Inspect the first dataset records to confirm that the output shape, market, and filters match your use case.
  6. Increase limit, adjust filters, enable broader coverage with maximize_coverage, or schedule the actor once the output is verified.

Input Parameters

Hotpads Scraper requires a supported location; all other inputs refine scope, ordering, coverage, or output volume.

ParameterTypeDescriptionDefault
locationstringSupported HotPads location to search. Use a city, neighborhood, borough, ZIP code, or address, such as San Francisco, CA, SoHo, New York, 10001, or 90210. Statewide searches are not supported in this flow.
min_priceintegerMinimum monthly rent to include, in USD. Leave empty for no lower price requirement.
max_priceintegerMaximum monthly rent to include, in USD. Leave empty for no upper price requirement.
property_typearray of stringsProperty categories to include. Allowed values: apartment, condo, duplex, house, townhouse.["apartment"]
bedroomstringExact bedroom count. Allowed values: studio, 1, 2, 3, 4.
min_bedroomstringMinimum bedroom count. Allowed values: 1+, 2+, 3+, 4+. When both bedroom and min_bedroom are provided, the minimum bedroom filter takes priority.
min_bathroomstringMinimum bathroom count. Allowed values: 1+, 1.5+, 2+, 3+, 4+.
min_areastringMinimum floor area in square feet. Allowed values: 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600, 3799.
max_areastringMaximum floor area in square feet. Allowed values: 3600, 3400, 3200, 3000, 2800, 2600, 2400, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800, 600, 400, 200, 1.
amenitiesarray of stringsRequired amenities. Allowed values: in_unit_laundry, shared_laundry, ac, heating, parking, gated_entry, doorman, gym, pool, dishwasher, furnished.
petsarray of stringsRequired pet policies. Allowed values: dogs_allowed, cats_allowed.
publication_datestringListing recency window. Allowed values: 1_hour, 24_hours, 7_days, 30_days.
keywordstringOne keyword or phrase to narrow listing text, such as a feature, building name, neighborhood term, or leasing condition.
exclude_rental_typearray of stringsRental categories to exclude. Allowed values: regular, rooms_for_rent, sublet, corporate.
special_restrictionstringHousing program filter. Allowed values: income_restricted, senior_housing, student_housing, military_housing, no_restricted_housing.
with_photobooleanInclude only listings that provide at least one photo.false
with_pricebooleanInclude only listings that show clear pricing.false
for_rent_by_ownerbooleanInclude only rentals listed directly by the owner.false
properties_with_offersbooleanInclude only listings that advertise special offers.false
accepting_online_applicationsbooleanInclude only listings that accept online rental applications.false
sort_bystringResult ordering. Allowed values: default, newest, most_popular, highest_price, lowest_price.default
maximize_coveragebooleanCollect more matching listings for broad searches that may exceed the visible result set, without changing the selected criteria. Turn off for faster exploratory runs.true
limitintegerMaximum number of listings to save. Minimum value: 1. Leave empty to collect all available results that match the selected criteria.

Choosing Inputs

Start with the smallest scope that answers your question. Use location to define the market, then decide whether your workflow needs broad discovery or a targeted dataset.

Narrower filters, such as price, bedroom count, property type, amenities, pets, publication recency, or listing requirements, produce more focused records. Broader inputs improve discovery and are useful for market scans, inventory analysis, and trend reporting. Use sort_by when ordering matters for validation or monitoring, and use maximize_coverage when broad searches may contain more matching rentals than the first visible result set. When testing a new market or filter set, start with a small limit, inspect the output, and then increase the limit after confirming record quality.

Example Inputs

{
"location": "SoHo, New York",
"property_type": ["apartment", "condo"],
"min_price": 3000,
"max_price": 8000,
"bedroom": "1",
"with_photo": true,
"limit": 50
}

Recently posted monitoring run

{
"location": "San Francisco, CA",
"property_type": ["apartment"],
"publication_date": "24_hours",
"sort_by": "newest",
"with_price": true,
"limit": 100
}

Broad discovery with controlled volume

{
"location": "90210",
"property_type": ["house", "townhouse"],
"min_bedroom": "2+",
"min_bathroom": "2+",
"pets": ["dogs_allowed", "cats_allowed"],
"maximize_coverage": true,
"limit": 75
}

Output

Output Destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.

When multiple entity types or record shapes exist, this README documents each shape separately based on the provided Example Output. The provided output contains one primary record shape: a HotPads rental listing record.

Record Envelope And Stable Identifiers

Each record represents one public HotPads rental listing and includes stable listing-level fields such as id, url, and fingerprint when available. The recommended idempotency key is id; if your destination requires a fallback, use url or fingerprint.

For deduplication and upserts, use the recommended idempotency key to merge repeated observations of the same listing instead of creating duplicate records. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs.

The source_context object records run context for the collected listing, and fingerprint provides an additional stable record signature for sync and deduplication workflows.

Examples

Example: listing record

{
"id": "sample-listing-001",
"url": "https://hotpads.com/123-example-ave-example-city-ca-90001-sample/4b/pad",
"title": "123 Example Ave #4B",
"listing_type": "rental",
"property_type": "condo",
"building_url": "https://hotpads.com/123-example-ave-example-city-ca-90001-sample/building",
"search_keyword": "Apartment Unit for Rent",
"identifiers": {
"building_id": "sample-building-001"
},
"pricing": {
"min_price": 4250.0,
"max_price": 4250.0
},
"features": {
"min_bedrooms": 2,
"max_bedrooms": 2,
"min_bathrooms": 2.0,
"max_bathrooms": 2.0,
"bathrooms": 2.0,
"min_square_feet": 1180.0,
"max_square_feet": 1180.0
},
"units": {
"models": [
{
"num_beds": 2,
"low_price": 4250.0,
"high_price": 4250.0
}
],
"new_unit_count": 0,
"price_drop_count": 0
},
"media": {
"primary_image_url": "https://example.com/images/hotpads-sample-01.webp",
"image_urls": [
"https://example.com/images/hotpads-sample-01.webp",
"https://example.com/images/hotpads-sample-02.webp",
"https://example.com/images/hotpads-sample-03.webp",
"https://example.com/images/hotpads-sample-04.webp",
"https://example.com/images/hotpads-sample-05.webp",
"https://example.com/images/hotpads-sample-06.webp",
"https://example.com/images/hotpads-sample-07.webp",
"https://example.com/images/hotpads-sample-08.webp",
"https://example.com/images/hotpads-sample-09.webp",
"https://example.com/images/hotpads-sample-10.webp",
"https://example.com/images/hotpads-sample-11.webp",
"https://example.com/images/hotpads-sample-12.webp",
"https://example.com/images/hotpads-sample-13.webp",
"https://example.com/images/hotpads-sample-14.webp",
"https://example.com/images/hotpads-sample-15.webp"
],
"image_count": 15,
"has_videos": false,
"has_external_3d_tours": false,
"has_zillow_3d_tours": false
},
"amenities": [
"Pets: Cats and Dogs Allowed",
"Laundry: In Unit",
"Laundry: Shared",
"HVAC: Central A/C",
"Gym: On-site",
"Security: Doorman",
"Appliances: Dishwasher"
],
"description": "Unit 4B at 123 Example Ave is a sample 2-bedroom, 2-bath residence with approximately 1,180 square feet of living space. The listing description includes anonymized details about an open living area, modern kitchen, in-unit laundry, shared amenities, and convenient neighborhood access. This sample text is provided only to demonstrate the shape and length of a typical listing description.",
"contact": {
"company_name": "Sample Property Group",
"listed_by": {
"company_name": "Sample Property Group",
"contact_phone": "555-010-1234",
"contact_name": "Leasing Team",
"member_since": {
"date": 1700000000000,
"ago": "2 years, 1 month ago"
}
},
"inquiry": {
"restricted": false,
"default_inquiry_message": "I'd like to schedule a viewing for Example Ave #4B, Example City, CA 90001, US. Please contact me with more information!",
"requires_num_beds": false,
"requires_move_date": false,
"requires_first_and_last_name": false,
"requires_phone": true,
"requires_user_entered_message": false,
"requires_zip_code": false,
"requires_name": true,
"requires_email": true,
"requires_message": true,
"display_contact_box": true
}
},
"policies": {
"rental_application_status": "undecided",
"income_restricted": false,
"senior_housing": false,
"student_housing": false,
"military_housing": false
},
"promotions": {
"has_special_offers": false
},
"status": {
"trusted": false,
"broker_exclusive": false,
"broker_listing": false,
"bonus_listing_customer": false,
"claimed_free_listing": false,
"paid_multifamily": false,
"paid_and_not_demoted": false,
"demoted": false
},
"metrics": {
"priority": 0.0,
"score": 0.0,
"experiment_score": 0.0
},
"timestamps": {
"activated_at": "2026-01-15T12:00:00.000000Z",
"updated_at": "2026-01-15T12:00:00.000000Z"
},
"attributes": {
"activated": 1768478400000,
"unit": "4B",
"experiment_score": 0.0,
"neighborhoods": [
"Sample District"
],
"company_name": "Sample Property Group",
"has_total_monthly_price": false
},
"location": {
"address": {
"street": "123 Example Ave",
"city": "Example City",
"region": "CA",
"postal_code": "90001",
"hide_street": false
},
"city": "Example City",
"region": "CA",
"postal_code": "90001",
"coordinates": {
"latitude": 34.000000000000000,
"longitude": -118.00000000000000,
"quad": "sample-quad-001"
},
"neighborhoods": [
"Sample District"
]
},
"source_context": {
"seed_id": "sample-seed-001",
"seed_type": "search",
"seed_value": "Example District, Example City",
"page_index": 1,
"resolved_location": {
"locationInput": "Example District, Example City",
"name": "Example District",
"type": "neighborhood",
"areaId": "sample-area-001",
"resourceId": "example-district-example-city-ca",
"city": "Example City",
"state": "CA",
"lat": "34.0000000000",
"lon": "-118.0000000000",
"bounds": {
"maxLat": "34.0100000000",
"maxLon": "-117.9900000000",
"minLat": "33.9900000000",
"minLon": "-118.0100000000"
}
},
"domain": "hotpads.com"
},
"fingerprint": "sample-fingerprint-001"
}

Field Reference

Listing Record

id (string, required): HotPads listing identifier.

url (string, required): Public listing URL.

title (string, optional): Listing title or unit label.

listing_type (string, optional): Listing category, such as rental.

property_type (string, optional): Property type, such as condo, apartment, house, or townhouse.

building_url (string, optional): Public building URL when available.

search_keyword (string, optional): Listing descriptor associated with the result.

identifiers.building_id (string, optional): Building identifier associated with the listing.

pricing.min_price / pricing.max_price (number, optional): Monthly rent range in USD when pricing is available.

features.min_bedrooms / features.max_bedrooms (number, optional): Bedroom range for the listing.

features.min_bathrooms / features.max_bathrooms / features.bathrooms (number, optional): Bathroom values for the listing.

features.min_square_feet / features.max_square_feet (number, optional): Floor-area range in square feet.

units.models (array, optional): Unit or model-level pricing entries.

units.models[].num_beds (number, optional): Bedroom count for a unit model.

units.models[].low_price / units.models[].high_price (number, optional): Unit model monthly rent range in USD.

units.new_unit_count (number, optional): Count of units marked as new.

units.price_drop_count (number, optional): Count of units with price-drop signals.

media.primary_image_url (string, optional): Primary image URL.

media.image_urls (array of strings, optional): Listing image URLs.

media.image_count (number, optional): Number of images reported for the listing.

media.has_videos (boolean, optional): Whether video media is advertised.

media.has_external_3d_tours (boolean, optional): Whether an external 3D tour is advertised.

media.has_zillow_3d_tours (boolean, optional): Whether a Zillow 3D tour is advertised.

amenities (array of strings, optional): Public amenity labels associated with the listing.

description (string, optional): Listing description text when available.

contact.company_name (string, optional): Company or listing source name.

contact.listed_by.company_name (string, optional): Listing company name.

contact.listed_by.contact_phone (string, optional): Public contact phone number when displayed.

contact.listed_by.contact_name (string, optional): Public contact name when displayed.

contact.listed_by.member_since.date (number, optional): Account membership timestamp when available.

contact.listed_by.member_since.ago (string, optional): Human-readable membership age.

contact.inquiry.restricted (boolean, optional): Whether inquiry access is restricted.

contact.inquiry.default_inquiry_message (string, optional): Default inquiry message provided for the listing.

contact.inquiry.requires_num_beds (boolean, optional): Whether inquiry requires bedroom count.

contact.inquiry.requires_move_date (boolean, optional): Whether inquiry requires move date.

contact.inquiry.requires_first_and_last_name (boolean, optional): Whether inquiry requires first and last name.

contact.inquiry.requires_phone (boolean, optional): Whether inquiry requires a phone number.

contact.inquiry.requires_user_entered_message (boolean, optional): Whether inquiry requires a user-entered message.

contact.inquiry.requires_zip_code (boolean, optional): Whether inquiry requires ZIP code.

contact.inquiry.requires_name (boolean, optional): Whether inquiry requires name.

contact.inquiry.requires_email (boolean, optional): Whether inquiry requires email.

contact.inquiry.requires_message (boolean, optional): Whether inquiry requires a message.

contact.inquiry.display_contact_box (boolean, optional): Whether a contact box is displayed.

policies.rental_application_status (string, optional): Rental application status.

policies.income_restricted (boolean, optional): Whether income-restricted housing is indicated.

policies.senior_housing (boolean, optional): Whether senior housing is indicated.

policies.student_housing (boolean, optional): Whether student housing is indicated.

policies.military_housing (boolean, optional): Whether military housing is indicated.

promotions.has_special_offers (boolean, optional): Whether special offers are advertised.

status.trusted (boolean, optional): Listing trust signal.

status.broker_exclusive (boolean, optional): Whether broker exclusivity is indicated.

status.broker_listing (boolean, optional): Whether the listing is broker-associated.

status.bonus_listing_customer (boolean, optional): Listing status signal.

status.claimed_free_listing (boolean, optional): Whether a claimed free listing signal is present.

status.paid_multifamily (boolean, optional): Whether a paid multifamily signal is present.

status.paid_and_not_demoted (boolean, optional): Paid listing status signal.

status.demoted (boolean, optional): Whether the listing is marked as demoted.

metrics.priority (number, optional): Priority score when available.

metrics.score (number, optional): Listing score when available.

metrics.experiment_score (number, optional): Experiment score when available.

timestamps.activated_at (string, optional): Activation timestamp in ISO 8601 format.

timestamps.updated_at (string, optional): Update timestamp in ISO 8601 format.

attributes.activated (number, optional): Activation timestamp as a numeric value.

attributes.unit (string, optional): Unit identifier or unit number.

attributes.experiment_score (number, optional): Experiment score mirrored from listing attributes.

attributes.neighborhoods (array of strings, optional): Neighborhood labels.

attributes.company_name (string, optional): Company name captured with listing attributes.

attributes.has_total_monthly_price (boolean, optional): Whether total monthly price is indicated.

location.address.street (string, optional): Street address when visible.

location.address.city (string, optional): Address city.

location.address.region (string, optional): State or region abbreviation.

location.address.postal_code (string, optional): Postal code.

location.address.hide_street (boolean, optional): Whether street display is hidden.

location.city (string, optional): Listing city.

location.region (string, optional): Listing state or region.

location.postal_code (string, optional): Listing postal code.

location.coordinates.latitude / location.coordinates.longitude (number, optional): Geographic coordinates.

location.coordinates.quad (string, optional): Geographic grid reference when available.

location.neighborhoods (array of strings, optional): Neighborhoods associated with the listing.

source_context.seed_id (string, optional): Identifier for the input seed that produced the record.

source_context.seed_type (string, optional): Seed type, such as search.

source_context.seed_value (string, optional): Original location or search value used for the run.

source_context.page_index (number, optional): Page or batch index associated with the record.

source_context.resolved_location.locationInput (string, optional): User-provided location value.

source_context.resolved_location.name (string, optional): Resolved location name.

source_context.resolved_location.type (string, optional): Resolved location type, such as neighborhood, city, ZIP code, or address.

source_context.resolved_location.areaId (string, optional): Area identifier when available.

source_context.resolved_location.resourceId (string, optional): Resource identifier when available.

source_context.resolved_location.city (string, optional): Resolved city.

source_context.resolved_location.state (string, optional): Resolved state.

source_context.resolved_location.lat / source_context.resolved_location.lon (string, optional): Resolved location coordinates.

source_context.resolved_location.bounds.maxLat / source_context.resolved_location.bounds.maxLon / source_context.resolved_location.bounds.minLat / source_context.resolved_location.bounds.minLon (string, optional): Resolved location boundary values.

source_context.domain (string, optional): Source domain, typically hotpads.com.

fingerprint (string, required): Stable record fingerprint for deduplication and sync workflows.

Data Quality, Guarantees, And Handling

  • Structured records: results are normalized into predictable JSON objects for downstream use.
  • Best-effort extraction: fields may vary by region, session, availability, and HotPads presentation changes.
  • Optional fields: null-check fields in downstream code, especially contact, policy, media, address, and pricing details.
  • Deduplication: use id as the strongest stable key; use url or fingerprint as fallbacks when needed.
  • Freshness: results reflect the publicly available data at run time.
  • Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.

Tips For Best Results

  • Start with a small limit to validate output shape before scaling up.
  • Use one location or market segment per run when you need clean segmentation.
  • Leave optional filters empty when the goal is broad discovery.
  • Add filters gradually to understand how each field changes coverage.
  • Use publication_date and sort_by: "newest" for recently posted listing monitoring.
  • Keep maximize_coverage enabled for broad searches where you want more complete matching output.
  • Use id, url, or fingerprint for deduplication when storing results over time.

How to Run on Apify

  1. Open the Actor in Apify Console.
  2. Configure the available input fields for the target location and listing scope.
  3. Set the maximum number of outputs to collect with limit.
  4. Click Start and wait for the run to finish.
  5. Open the dataset and inspect the first records.
  6. Download results in JSON, CSV, Excel, or other supported formats.

Scheduling & Automation

Scheduling

Automated Data Collection

Schedule runs to keep rental datasets fresh for monitoring, reporting, and enrichment workflows. Recurring runs are useful when you need consistent snapshots of pricing, availability, or recently posted listings.

  • Navigate to Schedules in Apify Console
  • Create a new schedule, such as daily, weekly, or a custom cron schedule
  • Configure input parameters
  • Enable notifications for run completion
  • Add webhooks for automated processing

Integration Options

  • BI dashboards: monitor pricing, availability, property types, amenities, and geographic coverage over time.
  • Data warehouses: load normalized listing records into historical tables for reporting and analysis.
  • CRM enrichment: sync public rental listing attributes, contact signals, and location context into account or lead records.
  • Google Sheets or Airtable: review smaller market samples, qualification queues, or operational research lists.
  • Webhooks: trigger validation, ingestion, notification, or enrichment workflows after each completed run.
  • Alerts and scheduled reporting: notify teams when new listings, price bands, or market segments match your criteria.

Export Formats And Downstream Use

Apify datasets can be exported or consumed by downstream systems for operational analysis, monitoring, and data delivery.

  • JSON: for APIs, applications, and data pipelines
  • CSV or Excel: for spreadsheet workflows and manual review
  • API access: for automated ingestion into internal systems
  • BI and warehouses: for reporting, dashboards, and historical analysis

Performance

Estimated run times:

  • Small runs (< 1,000 outputs): ~3-5 minutes
  • Medium runs (1,000-5,000 outputs): ~5-15 minutes
  • Large runs (5,000+ outputs): ~15-30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.

Limitations

  • Availability depends on what HotPads publicly exposes at run time.
  • Some optional fields may be missing on sparse listings or records with limited public detail.
  • Very broad searches may take longer or require higher limit values to collect the desired volume.
  • HotPads-side changes can affect field availability, naming, or visible results.
  • Regional, account, or availability differences may change which listings are visible for the same criteria.
  • Statewide searches are not supported by this actor input flow.

Troubleshooting

No results returned: Check filter combinations, location spelling, property type selection, and whether HotPads has matching public rental records for the requested market.

Fewer results than expected: Broaden filters, raise limit, enable maximize_coverage, or verify that the target market contains enough matching records.

Some fields are empty: Optional fields depend on what each listing publicly provides.

Run takes longer than expected: Reduce scope, lower limit for validation, or split broad collection into smaller location or filter segments.

Output changed: Compare the current output with the field reference and include a small sample when reporting the issue.

FAQ

What data does this actor collect?

It collects public HotPads rental listing records, including identifiers, URLs, titles, property types, pricing, bedrooms, bathrooms, square footage, images, amenities, contact details, policies, timestamps, and location context when available.

Can I filter by location, category, date, price, or other criteria?

Yes. The actor supports location, property_type, price range, bedroom and bathroom filters, area filters, amenities, pets, publication recency, keywords, rental-type exclusions, housing program filters, listing requirements, sorting, and output limits.

Why did I receive fewer results than my limit?

The limit is a maximum, not a guarantee. The run may return fewer records when HotPads has fewer matching public listings for the selected location and filters.

Can I schedule recurring runs?

Yes. Use Apify Schedules to run the actor daily, weekly, or on a custom cron schedule.

How do I avoid duplicates across runs?

Use id as the primary idempotency key. If needed, use url or fingerprint as fallback keys for deduplication and upserts.

Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets support JSON, CSV, Excel, and other export formats.

Does this actor collect private data?

The actor is intended to collect publicly available HotPads listing information. Users are responsible for ensuring their use of collected data complies with applicable laws, terms, and privacy requirements.

What should I include when reporting an issue?

Include the input used, the run ID, expected versus actual behavior, and a small output sample if it helps explain the issue.

Compliance & Ethics

Responsible Data Collection

This actor collects publicly available rental listing information from HotPads for legitimate business purposes, including:

  • Real estate research and market analysis
  • Rental inventory monitoring and operational reporting
  • Data enrichment for internal analytics, CRM, and business intelligence workflows

Users are responsible for ensuring that their use of the data complies with applicable laws, regulations, contractual obligations, and the target site’s terms. This section is informational and not legal advice.

Best Practices

  • Use collected data in accordance with applicable laws, regulations, and the target site’s terms
  • Respect individual privacy and personal information
  • Use data responsibly and avoid disruptive or excessive collection
  • Do not use this actor for spamming, harassment, or other harmful purposes
  • Follow relevant data protection requirements where applicable, including GDPR and CCPA

Support

For help, use the actor page or Issues. Include the input used, with sensitive values redacted if needed, the run ID, expected versus actual behavior, and a small output sample when it helps illustrate the issue.