# Padmapper Property Search Scraper (`alexist/padmapper-property-search-scraper`) Actor

Scrape rental properties and apartment listings from PadMapper with detailed data on pricing, location, amenities, and agent info. Collect 200+ listings per search area with 70+ structured fields—perfect for real estate professionals, investors, and market researchers.

- **URL**: https://apify.com/alexist/padmapper-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

## PadMapper Property Scraper: Extract Real Estate Listings Instantly

***

### What Is PadMapper?

PadMapper is a comprehensive apartment and rental property search platform aggregating listings from major portals, property management companies, and individual landlords across North America. It serves millions of renters and investors seeking fast, filtered access to available properties by location, price, and amenities. Extracting this data manually is tedious—the **PadMapper Property Scraper** automates the collection process, delivering structured property records ready for analysis, comparison, or integration.

***

### Overview

The **PadMapper Property Scraper** extracts comprehensive property listings from PadMapper search results and detail pages, transforming raw HTML into clean, structured JSON or CSV records. It is designed for:

- **Real estate investors** tracking rental market trends and pricing patterns
- **Property managers** monitoring competitive listings and vacancy rates
- **Data analysts** building datasets for market intelligence or research
- **Aggregator platforms** feeding property data into custom search engines
- **FinTech platforms** enriching property-based lending or valuation models

Key strengths include geographic bounding box support, configurable item limits, failure tolerance, and rich output spanning property details, pricing, amenities, contact info, and listing metadata.

***

### Input Format

The scraper accepts a JSON configuration specifying which properties to collect:

```json
{
    "urls": [
        "https://www.padmapper.com/apartments/new-york-ny?box=-74.2557,40.496,-73.7002,40.9176"
    ],
    "max_items_per_url": 200,
    "ignore_url_failures": true
}
```

| Field | Type | Description |
|---|---|---|
| `urls` | Array | PadMapper search result URLs (supports geographic filters via bounding box parameters) |
| `max_items_per_url` | Integer | Maximum listings extracted per URL (e.g., `200` collects up to 200 properties) |
| `ignore_url_failures` | Boolean | If `true`, skips failed URLs instead of halting the entire run |

**URL Format Tips:**

- Use direct search URLs: `https://www.padmapper.com/apartments/[city-state]`
- URLs often include bounding box filters: `?box=lng_min,lat_min,lng_max,lat_max` for geographic precision
- You may also use filtered URLs with price, bedroom, or pet parameters

> **Example:** The URL above searches apartments in New York City within a specific geographic boundary, collecting up to 200 results.

***

### Output Format

**Sample output**

```json
{
  "is_spotlight": true,
  "listing_id": 64229807,
  "created_on": 1777486199,
  "modified_on": 1782935786,
  "listed_on": 1784757607,
  "listing_status": 1,
  "group_id": -2069776,
  "address": "395 Carroll Street",
  "city": "Brooklyn",
  "lat": 40.6784436,
  "lng": -73.9895138,
  "pets": [
    2,
    1
  ],
  "leasing_fee": 1,
  "building_id": 2069776,
  "feed_name": null,
  "image_ids": [
    895146878,
    895146877,
    895146876,
    895146871,
    895146872,
    895146873,
    895146874,
    895146875,
    895146879,
    895159608
  ],
  "neighborhood_id": null,
  "neighborhood_name": null,
  "brokerage_id": null,
  "agent_id": 16061714,
  "agent_name": "Westmark Apartments",
  "brokerage_name": null,
  "state": "NY",
  "building_name": "Westmark",
  "tz": "America/New_York",
  "promotion": 110,
  "city_state": "brooklyn-ny",
  "zappable": 1,
  "property_type": 4,
  "amenities": [],
  "building_amenities": [
    3
  ],
  "amenity_tags": [
    "Natural Light",
    "Stainless Steel Appliances",
    "Vinyl Plank Flooring",
    "Kitchen Island"
  ],
  "building_amenity_tags": [
    "Fitness Center",
    "Co-working lounge",
    "Rooftop Terraces",
    "Yoga Studio",
    "Resident Lounge",
    "Kids Playroom",
    "Game Room",
    "Theatre Room",
    "Courtyard",
    "Library"
  ],
  "phone": "(646) 572-4571",
  "listing_type": 1,
  "pb_id": 1598893,
  "pb_url": "westmark-gowanus-new-york-ny",
  "url": "/apartment-buildings/p1598893/westmark-gowanus-new-york-ny",
  "padmapper_url": "/buildings/p1598893/westmark-apartments-at-395-carroll-street-brooklyn-ny-11231",
  "date_available": null,
  "max_price": 5974,
  "min_price": 3257,
  "previous_price": null,
  "max_bedrooms": 2,
  "min_bedrooms": 0,
  "max_bathrooms": 2,
  "min_bathrooms": 0,
  "floorplan_count": 9,
  "min_lease_days": null,
  "max_lease_days": null,
  "min_square_feet": 9223372036854776000,
  "max_square_feet": -1,
  "lease_type": 3,
  "features": [
    10,
    78,
    81,
    19,
    56,
    88,
    92,
    61
  ],
  "zipcode": "11231",
  "is_pad": false,
  "max_all_bathrooms": [
    2,
    0
  ],
  "min_all_bathrooms": [
    0,
    0
  ],
  "pl_id": null,
  "pl_url": null,
  "pa_url": "395-carroll-st-brooklyn-ny-11231-usa",
  "is_messageable": true,
  "provider_url": null,
  "internal_video_ids": null,
  "title": "1 Bedroom - 1205",
  "short_description": null,
  "rating": 9.4,
  "pa_should_index": false,
  "integrated_tour_types": [],
  "external_rating": null,
  "has_fees": false,
  "from_url": "https://www.padmapper.com/apartments/new-york-ny?box=-74.2557,40.496,-73.7002,40.9176"
}
```

Each scraped property returns a detailed record with 70+ fields covering identification, pricing, location, amenities, contact info, and listing metadata:

#### Property Identification & Metadata

| Field | Meaning |
|---|---|
| `Listing ID` | Unique identifier for the property listing in PadMapper's database |
| `Padmapper URL` | Direct link to the listing on PadMapper |
| `URL` | Original source URL (if listing came from another feed) |
| `PB ID` | Property board ID from the source feed |
| `PB URL` | Property board URL (external source link) |
| `PL ID` | Property listing ID from the source provider |
| `PL URL` | Property listing URL (source provider link) |
| `PA URL` | Property aggregator URL |
| `Provider URL` | URL of the original listing provider |
| `Title` | Property listing title as displayed |
| `Short Description` | Brief property summary |

#### Location & Geographic Data

| Field | Meaning |
|---|---|
| `Address` | Full street address of the property |
| `City` | City name |
| `State` | State or province abbreviation |
| `Zip Code` | Postal code |
| `City State` | Combined city and state format |
| `Latitude` | Geographic latitude coordinate |
| `Longitude` | Geographic longitude coordinate |
| `Time Zone` | IANA timezone (e.g., "America/New\_York") |
| `Neighborhood Name` | Named neighborhood or district |
| `Neighborhood ID` | Internal neighborhood identifier |

#### Pricing Information

| Field | Meaning |
|---|---|
| `Min Price` | Minimum monthly rent in USD |
| `Max Price` | Maximum monthly rent (for variable-price units) |
| `Previous Price` | Prior monthly rent (if recently changed) |
| `Has Fees` | Boolean indicating whether leasing or other fees apply |
| `Leasing Fee` | One-time fee charged at lease signing |

#### Unit & Property Specifications

| Field | Meaning |
|---|---|
| `Min Bedrooms` | Minimum bedrooms available |
| `Max Bedrooms` | Maximum bedrooms available |
| `Min Bathrooms` | Minimum bathrooms in available units |
| `Max Bathrooms` | Maximum bathrooms |
| `Max All Bathrooms` | Total bathrooms including half-baths |
| `Min All Bathrooms` | Minimum total bathroom count |
| `Min Square Feet` | Smallest unit size in square feet |
| `Max Square Feet` | Largest unit size |
| `Floorplan Count` | Number of distinct floor plans offered |
| `Property Type` | Category (e.g., "apartment", "house", "condo") |
| `Lease Type` | Lease structure (e.g., fixed-term, month-to-month) |

#### Lease & Availability Terms

| Field | Meaning |
|---|---|
| `Date Available` | Earliest move-in date for the property |
| `Min Lease Days` | Minimum lease duration in days |
| `Max Lease Days` | Maximum lease duration (seasonal or corporate housing) |

#### Amenities & Features

| Field | Meaning |
|---|---|
| `Amenities` | List of property-level amenities (e.g., gym, pool, concierge) |
| `Building Amenities` | Building-wide shared amenities |
| `Amenity Tags` | Standardized amenity tags for filtering |
| `Building Amenity Tags` | Standardized building amenity tags |
| `Features` | Additional features or highlights of the unit |
| `Pets` | Pet policy (allows/disallows, deposit amounts) |

#### Building & Organization

| Field | Meaning |
|---|---|
| `Building ID` | Unique identifier for the building |
| `Building Name` | Official name of the residential building |
| `Group ID` | Property group or portfolio identifier |

#### Agent & Brokerage Information

| Field | Meaning |
|---|---|
| `Agent ID` | Unique identifier for the listing agent |
| `Agent Name` | Full name of the property agent or contact person |
| `Brokerage ID` | Real estate brokerage company identifier |
| `Brokerage Name` | Official name of the brokerage firm |
| `Phone` | Contact phone number for inquiries |
| `Is Messageable` | Whether the listing accepts in-app messages |

#### Listing Status & Flags

| Field | Meaning |
|---|---|
| `Created On` | Date the listing was first created |
| `Listed On` | Date the property was listed for rent |
| `Modified On` | Last modification date |
| `Listing Status` | Current status (active, expired, pending, etc.) |
| `Feed Name` | Source feed name (e.g., "Zillow", "Apartments.com") |

#### Special Features & Promotion

| Field | Meaning |
|---|---|
| `Is Spotlight` | Whether the listing has paid spotlight promotion |
| `Promotion` | Active promotional offer (e.g., "one month free") |
| `Is Pad` | Whether listing is a PadMapper-exclusive property |
| `Zappable` | Whether the property can be "zapped" (saved to favorites) |
| `Rating` | User rating or quality score |
| `External Rating` | Rating from external source (e.g., Google, Apartments.com) |

#### Media & Content

| Field | Meaning |
|---|---|
| `Image IDs` | Array of image IDs for the property photos |
| `Internal Video IDs` | Array of video IDs (virtual tour, walkthroughs) |
| `Integrated Tour Types` | Types of virtual tours available (e.g., "3D", "Video") |

#### Administrative Fields

| Field | Meaning |
|---|---|
| `PA Should Index` | Internal flag for search engine indexing |

***

### How to Use

1. **Find search URLs** — Navigate to PadMapper, enter your desired city and apply filters (price, bedrooms, pets, etc.). Copy the resulting URL.
2. **Adjust geographic bounds** — For large areas, modify the bounding box (`box=` parameter) to target specific neighborhoods and improve efficiency.
3. **Configure limits** — Set `max_items_per_url` to control scrape volume (e.g., `200` for a thorough search, `50` for a quick sample).
4. **Enable failure tolerance** — Set `ignore_url_failures: true` for uninterrupted collection across multiple URLs.
5. **Run and monitor** — Start the scraper and check the logs for any blocked or problematic URLs.
6. **Export results** — Download data as JSON, CSV, or Excel for downstream analysis or import into real estate platforms.

**Common tips:**

- Use bounding boxes for geographic precision—avoid scraping an entire state if you only need one city.
- If a URL returns fewer listings than expected, check that filters are not too restrictive.
- Leverage `ignore_url_failures` when scaling across many URLs to handle occasional PadMapper timeouts.

***

### Use Cases & Business Value

- **Market intelligence:** Track rental price trends by neighborhood, building type, and amenity availability
- **Competitive analysis:** Monitor how competitors position properties, set pricing, and promote listings
- **Investment due diligence:** Build datasets for rental yield analysis across geographies
- **Real estate platforms:** Aggregate listings from PadMapper as a feed for custom property search engines
- **Academic research:** Study housing affordability, supply trends, or neighborhood characteristics
- **Appraisal & valuation:** Enrich property datasets with comparable rental comps for valuation models

The PadMapper Property Scraper transforms time-consuming manual browsing into automated data collection, enabling fast market analysis and informed decision-making for investors, agents, and platforms.

***

### Conclusion

The **PadMapper Property Scraper** is a powerful tool for anyone needing structured rental property data at scale. With 70+ output fields and flexible URL support, it covers everything from basic unit specs to pricing, amenities, and agent contacts. Whether you're building market intelligence, feeding a real estate platform, or analyzing rental trends, this scraper delivers clean, ready-to-use data in minutes. Start a run today and unlock insights that manual searching cannot provide.

# 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.padmapper.com/apartments/new-york-ny?box=-74.2557,40.496,-73.7002,40.9176"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# 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.padmapper.com/apartments/new-york-ny?box=-74.2557,40.496,-73.7002,40.9176"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/padmapper-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.padmapper.com/apartments/new-york-ny?box=-74.2557,40.496,-73.7002,40.9176"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/padmapper-property-search-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 '{
  "urls": [
    "https://www.padmapper.com/apartments/new-york-ny?box=-74.2557,40.496,-73.7002,40.9176"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call alexist/padmapper-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alexist/padmapper-property-search-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/SLVIYqLGLSR6FBsY2/builds/CEeWOI7HP0LsE51FO/openapi.json
