# ApartmentFinder Scraper - Rentals, Prices & Floor Plans (`automly/apartmentfinder-scraper`) Actor

Scrape ApartmentFinder.com rentals by city, ZIP code or search link: rent, address, phone, beds, baths, floor plans, available units, fees and amenities. No login. Export to CSV, JSON or Excel, schedule runs or use the API.

- **URL**: https://apify.com/automly/apartmentfinder-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 listing from search results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## ApartmentFinder Scraper - Rentals, Prices & Floor Plans

### What is ApartmentFinder Scraper?

**ApartmentFinder Scraper** is a tool that lets you **scrape rental listings from ApartmentFinder.com**: rent, address, phone number, rent by bedroom count, specials, photos and map coordinates, and with one switch the full listing page with **floor plans, every available unit with its price, fees, pet policy, lease terms, amenities and renter rating**. Type a city or ZIP code or paste any ApartmentFinder.com search link, click **Start**, and download the listings as Excel, CSV or JSON.

- ⚡ **Speed:** 3,000 Houston listings in about 1.5 minutes, 1,000 Phoenix listings with full details in about 4 minutes (our tests)
- 🏙️ **Past the 750-result limit:** ApartmentFinder.com shows at most 750 listings per search; this scraper gets thousands from a big city
- 🏢 **Unit-level data:** every available unit with its number, rent and size, not just a price range
- 🔓 **No login:** no ApartmentFinder.com account needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 5,000 listings from search results

### What can ApartmentFinder Scraper do?

- **Scrape apartments for rent in any US city** from a city name like `Austin, TX`
- **Scrape ApartmentFinder rentals by ZIP code** like `78705`
- **Scrape any ApartmentFinder.com search link** with your filters, such as bedrooms or price
- **Get ApartmentFinder floor plans and available units** with rent, size and availability for each unit
- **Get rental fees and policies:** application fee, deposits, pet fees and pet rent, parking, required monthly fees
- **Scrape single ApartmentFinder listings** from their links for a full property profile
- **Collect thousands of listings in one run** across many cities, each with its own limit
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from ApartmentFinder.com?

| | | |
|---|---|---|
| 🏢 Property name | 📍 Full address, ZIP, latitude and longitude | 📞 Leasing office phone |
| 💲 Rent from / to | 🛏️ Rent by bedroom count | 🎁 Rent specials and price drops |
| 🧱 Floor plans (beds, baths, sq ft, rent, deposit) | 🔑 Available units with rent and size | 🧾 Fees and pet policy |
| 🏊 Amenities by category | 🐾 Pets allowed | 📅 Lease terms |
| ⭐ Renter rating and review count | 🎓 Student and affordable housing flags | 🕘 Office hours |
| 📝 Full description | 🖼️ Photos | 🔗 Listing link and ID |

### How to scrape ApartmentFinder.com

1. [Create a free Apify account](https://console.apify.com/sign-up) (no credit card needed).
2. Open **ApartmentFinder Scraper**.
3. Enter cities, ZIP codes or ApartmentFinder.com search links, one per line.
4. Set how many listings you want per location, and turn on **Include full listing details** if you need floor plans, units and fees. Then click **Start**.
5. When the run finishes, download your listings as Excel, CSV, JSON, HTML or XML.

### How much does it cost to scrape ApartmentFinder.com listings?

You pay per listing saved, and the price depends on whether you turn on **Include full listing details**:

| Listing | Price per 1,000 listings |
|---|---|
| Listing from search results | **$1.00** |
| Listing with full details | **$3.00** |

Platform usage is included in these prices, so there is nothing else to pay for a run.

Example: 1,000 listings from search results cost $1.00, and 1,000 listings with full details cost $3.00.

Every Apify account gets **$5 of free usage each month**, so you can try it at no cost. See the **Pricing** tab for details. Setting **Max listings per location** keeps the cost of a run under control, and you can also set a maximum cost per run.

### ⬇️ Input

| Setting | What it does |
|---|---|
| Locations or search links | Cities (`Austin, TX`), ZIP codes (`78705`) or ApartmentFinder.com search links such as `https://www.apartmentfinder.com/Texas/Dallas-Apartments/2-Bedrooms` |
| Listing links | Links to single listings, like `https://www.apartmentfinder.com/Texas/Austin-Apartments/The-Watson-Apartments-h388vb2` |
| Max listings per location | How many listings to save for each location (default 100). Set 0 for every listing |
| Include full listing details | Open each listing for floor plans, available units, fees, full amenities, lease terms, description, office hours and rating |
| Connection settings | The default works for most runs |

The first 100 listings in two cities:

```json
{
  "locations": ["Austin, TX", "Denver, CO"],
  "maxItems": 100
}
```

Every two-bedroom listing in Dallas, with floor plans and units:

```json
{
  "locations": ["https://www.apartmentfinder.com/Texas/Dallas-Apartments/2-Bedrooms"],
  "maxItems": 0,
  "includeDetails": true
}
```

Single listings:

```json
{
  "listingUrls": [
    "https://www.apartmentfinder.com/Texas/Austin-Apartments/The-Watson-Apartments-h388vb2",
    "https://www.apartmentfinder.com/Texas/Austin-Apartments/The-704-Apartments"
  ]
}
```

### ⬆️ Output

Every listing is one row. Without details you get the search fields (address, coordinates, phone, rent, rent by beds, specials, photo). With details you also get floor plans, units, fees and the rest (lists shortened here):

```json
{
  "listingId": "wbcj5fl",
  "url": "https://www.apartmentfinder.com/Texas/Dallas-Apartments/The-Eagle-At-Lakewood-Apartments-wbcj5fl",
  "name": "The Eagle at Lakewood",
  "fullAddress": "7150 E Grand Ave, Dallas, TX 75223",
  "zipCode": "75223",
  "latitude": 32.80406,
  "longitude": -96.73084,
  "phone": "(469) 436-6134",
  "rentMin": 857,
  "rentMax": 1835,
  "rentByBeds": [{"beds": "2 BEDS", "rent": "$1,542"}],
  "specials": ["Limited-Time Special: Get 1 MONTH FREE RENT + only $99 App & Admin on all floor plans with a 13+ month lease! Call for details."],
  "listingTier": "diamond",
  "propertyType": "Apartment",
  "availableUnits": 15,
  "floorPlans": [
    {
      "name": "A2",
      "beds": 1,
      "baths": 1,
      "rentMin": 1100,
      "rentMax": 1150,
      "rentIsTotalMonthlyPrice": true,
      "sqftMin": 623,
      "deposit": 150,
      "availability": "Available Now",
      "units": [
        {"unit": "0312", "rent": 1100, "sqft": 623, "availability": "Available Now"}
      ]
    }
  ],
  "leaseTerms": "10 - 18 Month Leases",
  "fees": [
    {"tab": "Required Fees", "group": "Utilities & Essentials", "name": "Community Maintenance Fee", "value": "$18 / mo", "note": "Charged per unit."}
  ],
  "amenities": ["Pool view", "Walk-Up", "Washer/Dryer", "Stainless Steel Appliances"],
  "petsAllowed": true,
  "rating": 4,
  "reviewCount": 51,
  "photos": ["https://image1.apartmentfinder.com/i2/.../the-eagle-at-lakewood-dallas-tx-primary-photo.png?p=1"],
  "searchSource": "https://www.apartmentfinder.com/Texas/Dallas-Apartments/2-Bedrooms",
  "scrapedAt": "2026-09-30T16:30:17Z"
}
```

The **Overview** tab shows the listings as a table with photos, the **Details** tab the property facts, and the **Location** tab the addresses and coordinates for mapping. The run report lists any page that could not be read, and why.

### How can I use ApartmentFinder.com data?

- **Rent market research:** compare rents by city, ZIP code and bedroom count
- **Real estate investment:** size up a market's supply, specials and price drops before you buy
- **Competitor pricing for property managers:** track the rents, specials and fees of nearby communities
- **Lead generation:** build lists of apartment communities with their phone numbers
- **Relocation and housing services:** find available units for clients, including student and affordable housing
- **Data science and maps:** plot listings with coordinates and rents

### How many listings can I get?

ApartmentFinder.com shows at most 750 listings for one search. For a big city the scraper covers the whole rent range, so you can get thousands of listings from a single city, and a property is saved only once. A search link that already has a price filter returns the listings that filter shows, up to 750; the run report says when a search had more than it could return.

### Scrape more real estate data

| Actor | What it gets |
|---|---|
| [Apartments.com Scraper](https://apify.com/automly/apartments-com-scraper) | Apartments.com rentals with rents, floor plans, available units, fees and walk scores |
| [Zillow Scraper](https://apify.com/automly/zillow-scraper) | Zillow homes for sale, rentals and sold listings with Zestimates and agent data |
| [Airbnb Listings Scraper](https://apify.com/automly/airbnb-listings-scraper) | Short-term rentals with nightly prices, ratings and hosts |
| [Facebook Marketplace Scraper](https://apify.com/automly/facebook-marketplace-scraper) | Marketplace listings by keyword, category and city with price, photos and location |
| [Google Maps Scraper](https://apify.com/automly/google-maps-scraper) | Places with addresses, phones, websites and ratings |

### ❓FAQ

#### How much does it cost to scrape ApartmentFinder.com?

$1.00 per 1,000 listings from search results, or $3.00 per 1,000 listings with full details, with platform usage included. See the cost section above and the **Pricing** tab.

#### Is there a limit on how many listings I can get?

ApartmentFinder.com shows at most 750 listings for one search, but the scraper gets thousands from a big city. **Max listings per location** sets your own limit. See **How many listings can I get?** above for the details.

#### Can I use my filters from the ApartmentFinder.com website?

Yes. Set up your search on ApartmentFinder.com (city, price, bedrooms), copy the link from the address bar and paste it into **Locations or search links**.

#### Do I need an ApartmentFinder.com account?

No. The scraper reads the same public listings anyone can see without signing in.

#### How fresh is the data?

Every run reads the live site, so rents, specials and available units are current as of the run.

#### Can I connect ApartmentFinder Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape ApartmentFinder.com?

This scraper collects publicly available listing information about rental properties, such as rents, addresses and leasing office phone numbers. Some listings can still contain personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

ApartmentFinder Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by ApartmentFinder.com or CoStar Group.

#### Something isn't working?

Open the **Issues** tab with your input and what you expected, or tell us which field you need. We read every one and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Tell us in the **Issues** tab. If ApartmentFinder Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

## `locations` (type: `array`):

Enter cities ("Austin, TX"), ZIP codes ("78705") or paste ApartmentFinder.com search links, including links with filters such as bedrooms or price.

## `listingUrls` (type: `array`):

Paste links to individual ApartmentFinder.com listings to get their full details.

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

How many listings to save for each location or search link. Set 0 for every listing the search has.

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

Open each listing's page for floor plans, every available unit with its price and date, fees and pet policy, full amenities, lease terms, description, office hours and review count.

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

Apify Proxy works out of the box.

## Actor input object example

```json
{
  "locations": [
    "Austin, TX"
  ],
  "listingUrls": [],
  "maxItems": 40,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `details` (type: `string`):

No description

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

No description

## `report` (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 = {
    "locations": [
        "Austin, TX"
    ],
    "listingUrls": [],
    "maxItems": 40,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/apartmentfinder-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 = {
    "locations": ["Austin, TX"],
    "listingUrls": [],
    "maxItems": 40,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/apartmentfinder-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 '{
  "locations": [
    "Austin, TX"
  ],
  "listingUrls": [],
  "maxItems": 40,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/apartmentfinder-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/apartmentfinder-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/eWKcDWjal8qac10LN/builds/1jGiDivk96MS6ja80/openapi.json
