# Buildium Rental Listings Scraper: Rent, Office Phone & Email (`themineworks/buildium-rental-listings-scraper`) Actor

Scrape current rental vacancies from any Buildium (managebuilding.com) property manager: rent, deposit, beds, baths, square feet, address, availability, pets, amenities, photos, apply link and the office phone and email. One request per manager. Filters included. No login. Pay per vacancy.

- **URL**: https://apify.com/themineworks/buildium-rental-listings-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Real estate, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 vacancies

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?

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

## Buildium Rental Listings Scraper: Rent, Office Phone & Email

[![112 Buildium vacancies in 17 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/buildium-rental-listings-scraper-hero.png)](https://console.apify.com/actors/exp4W1D2hHw18izSU/input)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder), with over 140,000 runs across 170+ public actors. This actor ranks #1 for "buildium rental" in Apify Store search.

### Why choose this actor?

- **Every current vacancy of a property manager, with the office contact on every row.** Give a Buildium site (just the subdomain works) and get one row per vacancy: rent, deposit, bedrooms, bathrooms, square feet, address, available and listed dates, pets, amenities, the full description, every photo, the apply link, and the company name, office address, phone and email the manager publishes. Our proof run read **112 vacancies from 6 managers in 17 seconds**. No Buildium login, no cookies.
- **US and Canadian managers.** Canadian rows carry the province, `country: "CA"` and `currency: "CAD"`; 31 of the 112 proof rows came from a manager in Nova Scotia.
- **Pay only for vacancies you keep.** Bedroom, bathroom, rent and city filters are applied before delivery, and vacancies they leave out are never charged. Neither are managers with no vacancies, links that are not Buildium sites, refused feeds or duplicates.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/exp4W1D2hHw18izSU/input)

**Part of The Mine Works Leads and business directories family:** [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder), [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup), [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads), [JustDial Scraper](https://apify.com/themineworks/justdial-business), [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search), [IndiaMART Scraper](https://apify.com/themineworks/indiamart-suppliers).

### Try it in one minute

Paste this input and press Start. It returns 10 vacancies from two managers:

```json
{
  "startUrls": ["zoulproperties", "managementapex"],
  "maxListings": 5
}
```

You can point it at a property manager in these ways, and mix them in one run:

- **A subdomain**: `zoulproperties` (for `zoulproperties.managebuilding.com`).
- **A host or any link on the site**: `managementapex.managebuilding.com`, the public rentals page `https://managementapex.managebuilding.com/Resident/public/rentals`, the resident login page, or the XML feed. A link to one listing (`/Resident/public/rentals/<number>`) returns only that listing.
- **The manager's own website page**, for example `https://www.swellproperty.com/`. The actor finds the Buildium link on the page, or on up to two rentals pages linked from it, and sets `manager_website` on the rows.

An AppFolio link (`appfolio.com`) is reported with a pointer to our AppFolio actor instead.

Apify's free plan includes $5 of credit every month, which covers about 2,400 vacancies at this actor's Free plan price.

#### Copy to your AI assistant

```text
themineworks/buildium-rental-listings-scraper on Apify. Returns every current rental vacancy from Buildium property manager sites (<name>.managebuilding.com): rent, deposit, bedrooms, bathrooms, square feet, address, available and listed dates, pets, amenities, description, photos and rental application link, plus the manager's company name, office address and the listing contact phone and email. Call ApifyClient("TOKEN").actor("themineworks/buildium-rental-listings-scraper").call(run_input={"startUrls": ["zoulproperties", "managementapex"], "maxListings": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: startUrls (Buildium subdomains, links on a managebuilding.com site, or the manager's website page). Optional: maxListings (per manager, default 100, up to 5,000), minBedrooms, minBathrooms, minRent, maxRent (in the listing's currency), cities (for example "Grand Island, NE"), allowUnblockerFallback (default true). It does not search all of Buildium; you supply the managers. Skip rows that have "_type": "info". Full spec: GET https://api.apify.com/v2/acts/themineworks~buildium-rental-listings-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations
```

### Key features

- **Up to 38 fields per vacancy**: listing and rentals page links, company name, office address, listing phone and email, title, full address and its parts, rent and rent range, deposit, bedrooms, bathrooms, square feet, available and listed dates, pet policy, amenities, building type, lease terms, year built, the full description, every photo and the apply link.
- **One request per manager, no paging.** Buildium publishes each manager's current listings as one public XML feed, the one managers use to show rentals on their own websites. The largest manager in our proof run (57 vacancies) was one request.
- **Up to 1,000 start URLs per run and 5,000 vacancies per manager.** A manager reached through two start URLs is read once, and a vacancy is delivered and charged once.
- **5 filters** (minimum bedrooms, minimum bathrooms, rent range, cities), the same ones Buildium's rentals page offers, applied before delivery.
- **US and Canadian listings**, with USD or CAD and the state or province.
- **Reads robots.txt first on every host.** Plain HTTP, no browser. A run summary (status per start URL, vacancies found and delivered, attempts, the robots.txt verdict behind each request) is saved as the `OUTPUT` record.

### How to use it

#### Basic: one manager

```json
{
  "startUrls": ["zoulproperties"],
  "maxListings": 500
}
```

Every vacancy Zoul Properties lists on `zoulproperties.managebuilding.com`; 57 on 1 Oct 2026.

#### Several managers at once

```json
{
  "startUrls": [
    "zoulproperties",
    "https://managementapex.managebuilding.com/Resident/public/rentals",
    "safeguardservices",
    "https://www.swellproperty.com/"
  ],
  "maxListings": 500
}
```

The last line is a manager's homepage: the actor followed its "available rentals" page to `swellpropertyinc.managebuilding.com`.

#### Leads for property services

Vendors and service firms that sell to property managers want the office contact next to the number of open units. Every row already carries `manager_name`, `manager_phone`, `manager_email` and `manager_address`, so one vacancy per manager is enough:

```json
{
  "startUrls": ["zoulproperties", "managementapex", "safeguardservices", "bellarentals"],
  "maxListings": 1
}
```

You pay for one vacancy per manager, and the `OUTPUT` record still shows how many each one lists (`vacancies_on_portal`).

#### Weekly rent and deposit tracking

Rental analysts and investors compare asking rents and deposits of the managers in their market. Filter to the units you follow and schedule the run weekly (Apify Console, Schedules, Add schedule):

```json
{
  "startUrls": ["zoulproperties", "managementapex"],
  "minBedrooms": 2,
  "maxRent": 1500,
  "maxListings": 500
}
```

Group by `postal_code` and `bedrooms` and compare `rent` and `deposit` from week to week.

#### Days on market

`listed_date` is when the listing went up. Compare it with `scraped_at`, or watch which `listing_id` values disappear between weekly runs, to see how long units stay open:

```json
{
  "startUrls": ["safeguardservices"],
  "cities": ["Kentville", "Wolfville, NS"],
  "maxListings": 500
}
```

`Wolfville, NS` pins the province; `Kentville` matches any. Vacancies in other cities are left out and not charged.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `startUrls` | array of strings | required (Console prefill: the Zoul Properties and Management Apex rentals pages) | One per line: a Buildium subdomain (`acme`), its host (`acme.managebuilding.com`), any link on it (the public rentals page, one listing, the resident login page, the XML feed), or the manager's own website page. Up to 1,000 per run. `startUrl`, `urls` and `portals` are accepted too. |
| `maxListings` | integer | `100` (Console prefill `20`) | Most vacancies to return from each manager, 1 to 5,000. The whole list comes in one request, so this trims the result; it does not make the run faster. |
| `minBedrooms` | integer | none | Only vacancies with at least this many bedrooms (0 to 10). Vacancies that do not state bedrooms are left out when this is set. |
| `minBathrooms` | integer | none | Only vacancies with at least this many bathrooms (0 to 10). Half baths count, so 1.5 passes a minimum of 1. |
| `minRent` | integer | none | Only vacancies asking at least this much a month, in the listing's own currency (US or Canadian dollars). Vacancies with no rent shown are left out when a rent filter is set. |
| `maxRent` | integer | none | Only vacancies asking at most this much a month, in the listing's own currency. |
| `cities` | array of strings | none | Only vacancies in these cities. `Grand Island, NE` pins the state or province, `Grand Island` matches any. |
| `allowUnblockerFallback` | boolean | `true` | If a feed is refused three times over the datacenter connection, try once more through Apify's unblocking proxy (included in the price). Off: such managers are reported as blocked. |

Filters are applied by the actor to each manager's full list after reading it. They save you money (filtered vacancies are not charged), not time.

### What data do you get?

One row per vacancy. Fields with no value are left out of the row instead of being sent as null.

**The vacancy**

- `listing_id` (Buildium's listing number), `listing_url` (the public listing page), `portal` (always `buildium`), `portal_url` (the manager's public rentals page), `title` (the property name followed by the unit number, as the manager entered it)

**The manager**

- `manager_name` and `manager_address` (the company and its office, from the feed)
- `manager_phone` and `manager_email` (the contact the manager attaches to the listing, shown as "Listing contact" on its public page; some managers use one office line, some a leasing line per building)
- `manager_website` (the website you gave, when the Buildium site was found through it)

**Address**

- `address`, `street`, `city`, `state` (state or province), `postal_code`, `country` (`US` or `CA`)

**Rent**

- `rent` (the low end of a range), `rent_max` (the high end), `rent_text`, `currency` (USD or CAD), `deposit`

**The unit**

- `bedrooms`, `bathrooms` (half baths count: 1.5), `square_feet`
- `available_date`, `available_now` (true when the available date is today or earlier), `listed_date` (when the listing went up)
- `pets_policy` (for example `Cats and dogs allowed`) and `pets_allowed`
- `amenities`, `property_type` (House for Rent, Duplex, Apartment, Townhouse, Mid Rise and so on), `lease_terms`, `year_built`

**Description, photos and application**

- `description` (the full text), `photo_urls` (every photo, in the manager's order), `apply_url` (the rental application for this listing)

**Run context**

- `source_input` (the start URL the row came from), `scraped_at`

There are no map coordinates: the feed carries none. Each run also ends with one row that has `"_type": "info"` and a short message. It is never billed; filter it out by `_type`.

#### Stable fields for automations

These fields were present in every one of the 112 vacancies of our proof run on 1 Oct 2026 (6 managers, US and Canada), and their names will not change:

| Field | What it holds |
|---|---|
| `listing_id` | Buildium's listing number, the same while the vacancy is listed |
| `listing_url` | Public link to the listing |
| `portal_url` | The manager's public rentals page |
| `manager_name` | Company name |
| `manager_phone` | Listing contact phone |
| `manager_email` | Listing contact email |
| `manager_address` | Company office address |
| `address` | Full address |
| `city` | City |
| `state` | State or province code |
| `postal_code` | ZIP or postal code |
| `rent` | Monthly rent as a number |
| `currency` | `USD` or `CAD` |
| `available_date` | When the unit is free (YYYY-MM-DD) |
| `listed_date` | When the listing went up |

Fill rates for the rest on the same 112 vacancies: `bedrooms`, `bathrooms` and `property_type` 112, `deposit` and `description` 111, `photo_urls` 110, `amenities` 99, `square_feet` 88, `pets_policy` 69, `lease_terms` 17, `year_built` none.

#### Output examples

Real rows from our proof run on 1 Oct 2026, trimmed: descriptions are cut, photo lists are shortened to two (the first listing has 23 photos), and `title` is left out (it is the property name followed by the unit number, as the manager entered it).

Started from the manager's homepage (`https://www.swellproperty.com/`), so `manager_website` is set:

```json
{
  "listing_id": "330747",
  "listing_url": "https://swellpropertyinc.managebuilding.com/Resident/public/rentals/330747",
  "portal": "buildium",
  "portal_url": "https://swellpropertyinc.managebuilding.com/Resident/public/rentals",
  "manager_name": "Swell Property, Inc.",
  "manager_phone": "(760) 266-7793",
  "manager_email": "Rentalinfo@swellproperty.com",
  "manager_website": "https://www.swellproperty.com/",
  "manager_address": "1967 North Coast Highway 101, Encinitas, CA 92024",
  "address": "1108 Sea Glass Way, Oceanside, CA 92054",
  "street": "1108 Sea Glass Way",
  "city": "Oceanside",
  "state": "CA",
  "postal_code": "92054",
  "country": "US",
  "rent": 4495,
  "rent_text": "$4,495",
  "currency": "USD",
  "deposit": 4495,
  "bedrooms": 3,
  "bathrooms": 3,
  "square_feet": 1775,
  "available_date": "2026-09-01",
  "available_now": true,
  "listed_date": "2026-08-19",
  "amenities": ["Microwave", "Hardwood floors", "Air conditioner", "Dishwasher", "Garage parking", "Stove and oven", "Dryer", "Heat", "Washer"],
  "property_type": "Townhouse",
  "description": "... Enjoy modern coastal living in this spacious three-story townhome in the Tides Community. Ideally located within walking distance of Downtown Oceanside, ...",
  "photo_urls": [
    "https://swellpropertyinc.managebuilding.com/Resident/api/public/files/download/listingImages?fileName=530520ca24784cac967b2e49c2004da2.jpeg",
    "https://swellpropertyinc.managebuilding.com/Resident/api/public/files/download/listingImages?fileName=10043650801e45ed94dedc95f55547b2.jpeg"
  ],
  "apply_url": "https://swellpropertyinc.managebuilding.com/Resident/rental-application/account/register?listingId=330747&goToApplication=true",
  "source_input": "https://www.swellproperty.com/",
  "scraped_at": "2026-10-01T13:50:47.753Z"
}
```

A Canadian manager, in CAD with the province in `state`:

```json
{
  "listing_id": "228732",
  "portal": "buildium",
  "manager_name": "Safeguard Property Management & Services",
  "manager_phone": "(902) 678-0275",
  "manager_email": "info@safeguardservices.ca",
  "manager_address": "27 Bridge Street, Kentville, NS B4N 2E2",
  "city": "Lawrencetown",
  "state": "NS",
  "postal_code": "B0S 1M0",
  "country": "CA",
  "rent": 1000,
  "rent_text": "$1,000",
  "currency": "CAD",
  "deposit": 500,
  "bedrooms": 2,
  "bathrooms": 1,
  "square_feet": 500,
  "available_date": "2026-12-15",
  "available_now": false,
  "listed_date": "2026-08-31",
  "amenities": ["Jogging and walking trails", "Wireless internet"],
  "property_type": "Mid Rise",
  "description": "2 bedroom, 1 bath apartment on the second floor. Close to all Lawrencetown amenities, on bus route. Within walking distance to COGS campus.\n$1000 per month, utilities not included. Electric baseboard heat.\n1 fixed cat allowed, no dogs. ...",
  "source_input": "safeguardservices"
}
```

A vacancy with a pet policy, from a manager given by its subdomain:

```json
{
  "listing_id": "90280",
  "listing_url": "https://zoulproperties.managebuilding.com/Resident/public/rentals/90280",
  "manager_name": "Zoul Properties",
  "manager_phone": "(308) 382-4247",
  "manager_email": "info@zoulproperties.com",
  "manager_address": "321 West 2nd Street, Grand Island, NE 68801",
  "address": "302 North Broadway Street, Fullerton, NE 68638",
  "rent": 750,
  "currency": "USD",
  "deposit": 750,
  "bedrooms": 1,
  "bathrooms": 1,
  "square_feet": 570,
  "available_date": "2026-06-02",
  "available_now": true,
  "listed_date": "2026-06-02",
  "pets_policy": "Cats and dogs allowed",
  "pets_allowed": true,
  "property_type": "Duplex",
  "apply_url": "https://zoulproperties.managebuilding.com/Resident/rental-application/account/register?listingId=90280&goToApplication=true",
  "source_input": "zoulproperties"
}
```

The info row that ends every run (never billed):

```json
{
  "_type": "info",
  "delivered": 112,
  "message": "112 vacancies delivered. This row is informational: it is never billed.",
  "scraped_at": "2026-10-01T13:50:47.769Z"
}
```

The `OUTPUT` record gives every start URL a status: `ok`, `no_vacancies` (a live site with nothing listed), `no_matches` (nothing passed your filters), `listing_not_found`, `not_a_portal`, `blocked`, `robots_disallowed`, `duplicate`, `parse_error`, `push_failed` or `stopped`, with a message, the vacancies listed, how many matched and were delivered, the attempts, and the robots.txt verdict for each request. A website start also lists the pages read and the Buildium sites found.

### Pricing

You pay per vacancy delivered to your dataset, plus a flat $0.005 per run whatever memory you choose. The contact fields, filters, the manager website lookup and the proxies are included.

| Event | Free plan | Starter (Bronze) | Scale (Silver) | Business (Gold) and above |
|---|---|---|---|---|
| Vacancy (`listing-scraped`), per vacancy | $0.002 | $0.0017 | $0.0014 | $0.001 |
| Same, per 1,000 vacancies | $2.00 | $1.70 | $1.40 | $1.00 |
| Run start (`run-start`), once per run | $0.005 | $0.005 | $0.005 | $0.005 |

The run start is our own flat event, charged once when the run starts. It is not Apify's per GB start fee, so it stays $0.005 at any memory size. No other pricing change is scheduled.

Never charged:

- managers whose site refused the connection, and managers with no vacancies;
- start URLs that are not a live Buildium site, or that robots.txt disallows;
- vacancies your filters left out, and vacancies above your `maxListings` per manager;
- the same vacancy found twice in one run;
- the info row at the end of the dataset, and the `OUTPUT` run summary.

To cap what a run can cost, set a maximum total charge in the run options. The Pricing tab always shows the rate for your own plan; if this table and the Pricing tab ever disagree, the Pricing tab is right.

### FAQ

#### What is Buildium, and does this search all Buildium listings?

Buildium is property management software. Each property manager who uses it gets a site at `<name>.managebuilding.com` with a public rentals page and a public XML feed of its current vacancies. This actor reads that feed. It does not search all Buildium listings in a city, because Buildium publishes no directory of its customers' sites: it is useful when you know which managers you care about.

#### How do I find Buildium property managers?

Buildium does not publish a list of its customers, and the actor does not discover them on its own. What works:

- **The manager's website.** Managers on Buildium link their "Rentals", "Apply" or "Resident login" pages to `something.managebuilding.com`. You can paste the website page itself and the actor finds the link.
- **Web search.** Searching for `managebuilding.com Resident public rentals` together with a city or state name returns rentals pages that search engines have indexed. It is partial, but free and quick.
- **Rental ads.** Ads on the big rental sites often link to the manager's Buildium application page; the subdomain in that link is the site.
- **Your own lists.** If you already have a list of property managers, their websites are the fastest route.

A subdomain that is not a live Buildium site is reported as `not_a_portal` and costs nothing.

#### How much does it cost to scrape 1,000 Buildium vacancies?

1,000 times your plan's price per vacancy, plus $0.005 for the run: $2.00 on the Free plan, down to $1.00 on Business. Managers with no vacancies and vacancies your filters leave out are not charged.

#### How does it get the listings without logging in?

Every Buildium customer site publishes its current listings as a public XML feed, the one Buildium offers managers for showing rentals on their own websites. For `acme.managebuilding.com` it lives at `https://acme.managebuilding.com/resident/api/public/listingFeeds` (Buildium's documented address `/Resident/PublicPages/XMLRentals.ashx` redirects there). One request returns every active listing with rent, deposit, rooms, photos, amenities, pet policy, dates and contact details. The actor reads nothing but the feed.

#### Where do the phone and email come from?

From the feed the manager publishes. They are the contact the manager attached to the listing, the same one its public listing page shows under "Listing contact". The feed sometimes labels that phone with a staff member's name; the public listing page does not show that label, so the actor leaves it out and returns the phone and email only.

#### How fresh is the data?

Every run reads the feeds live; nothing comes from a cache. `listed_date` says when each listing went up and `scraped_at` when the row was read. For a history, save your input as a task and add a schedule in Apify Console (for example every Monday); each scheduled run is billed like a manual one.

#### Do I need a Buildium account, cookies or a proxy?

No. The feeds are public. The actor reads them without signing in, through Apify's datacenter proxies, which are included in the price.

#### Does it respect robots.txt?

Yes. It reads robots.txt on every host before requesting anything from it, applies it the way Google does, and never requests a page it disallows, including after a redirect. The 7 Buildium sites in our 1 Oct proof run had no robots.txt at all (it answered 404), which means no restrictions; manager websites often have one, and the actor follows it.

#### What happens when a feed refuses the connection?

Feeds are read over Apify's datacenter proxy first. In our proof run on 1 Oct 2026 every request was answered on the first try (18 answered, plus one website redirect). If a feed is refused three times, the actor tries once through Apify's unblocking proxy, unless you turned `allowUnblockerFallback` off. A manager refused every time is listed as `blocked` in the run summary and never charged.

#### What about AppFolio portals?

AppFolio is different software. Use [AppFolio Rental Listings Scraper](https://apify.com/themineworks/appfolio-rental-listings-scraper) for `appfolio.com` links; this actor tells you when a link belongs there.

#### Which formats can I export?

JSON, CSV, Excel, XML, HTML table and RSS from the dataset page in Apify Console, or through the Apify API.

#### Can I use it from Claude, ChatGPT or another AI agent?

- Connector URL: `https://mcp.apify.com/?tools=themineworks/buildium-rental-listings-scraper`.
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http buildium-rental-listings-scraper "https://mcp.apify.com/?tools=themineworks/buildium-rental-listings-scraper"`.

#### Is it legal to scrape Buildium listings?

The actor collects only public rental advertisements, which describe properties, not people, from the feed Buildium publishes for exactly that purpose. It never signs in, reads no tenant or applicant data, and follows each site's robots.txt. The contacts are the business contacts managers publish on their listings. You are responsible for how you use the data, including the sites' terms and data protection laws such as GDPR and CCPA. This actor is an independent tool and is not affiliated with Buildium, LLC or RealPage, Inc.; Buildium is a trademark of its owner.

### Integrations

- **Google Sheets**: send each run's vacancies to a sheet with Apify's Google Sheets integration.
- **Make, Zapier and n8n**: start runs and receive the rows in your workflows.
- **Webhooks**: get a call when a run finishes, for example to add new managers' contacts to your CRM.
- **API**: start runs and read datasets from any language with the Apify API or the Python and JavaScript clients.
- **MCP clients**: Claude, ChatGPT and other agents through Apify's MCP server.

### More from The Mine Works

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads)
- [JustDial Scraper](https://apify.com/themineworks/justdial-business)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search)
- [IndiaMART Scraper](https://apify.com/themineworks/indiamart-suppliers)
- [Yandex Maps Scraper](https://apify.com/themineworks/yandex-maps-search)
- [Contact Details Scraper](https://apify.com/themineworks/website-contact-finder)
- [US Business Registry](https://apify.com/themineworks/us-state-business-registry)
- [Google Maps Scraper](https://apify.com/themineworks/google-maps-search-scraper)
- [Yellow Pages Scraper](https://apify.com/themineworks/yellowpages-us)
- [Lead Generation MCP](https://apify.com/themineworks/lead-generation-mcp)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency)
- [Google News Scraper](https://apify.com/themineworks/google-news)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp)

**Science, health and government data**

- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records)
- [data.gov.in Scraper](https://apify.com/themineworks/india-data-gov-scraper)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data)
- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products)
- [Carsales.com.au Scraper](https://apify.com/themineworks/carsales-scraper)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup)
- [World Bank Trade Scraper](https://apify.com/themineworks/global-trade-data)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper)

**More tools**

- [Tennis Match & Player Data Scraper](https://apify.com/themineworks/tennis-match-data)
- [Google Hotels Prices Scraper](https://apify.com/themineworks/google-hotels-prices-scraper)
- [LandWatch Scraper](https://apify.com/themineworks/landwatch-land-for-sale-scraper)

### Support

Found a problem or need a field? Open an issue on the actor's Issues tab and we will answer there. For a new source or a custom build, email dmineworks@gmail.com.

*Buildium Rental Listings Scraper turns a list of property managers into one row per current vacancy, with rent, deposit, rooms, dates, photos and the office contact the manager publishes.*

# Actor input Schema

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

Required. One per line. A property manager's Buildium subdomain (acme), its host (acme.managebuilding.com), any link on it (the public rentals page, one listing, or the resident login page), or the manager's own website page that links to their Buildium rentals (the actor finds the portal on it). Up to 1,000 per run.

## `maxListings` (type: `integer`):

Most vacancies to return from each manager. The whole list comes in one request, so this only trims the result; it does not make the run faster.

## `minBedrooms` (type: `integer`):

Only vacancies with at least this many bedrooms. Vacancies that do not state bedrooms are left out when this is set.

## `minBathrooms` (type: `integer`):

Only vacancies with at least this many bathrooms. Half baths count, so 1.5 passes a minimum of 1.

## `minRent` (type: `integer`):

Only vacancies asking at least this much a month, in the listing's own currency (US or Canadian dollars). Vacancies with no rent shown are left out when a rent filter is set.

## `maxRent` (type: `integer`):

Only vacancies asking at most this much a month, in the listing's own currency.

## `cities` (type: `array`):

Only vacancies in these cities, one per line. Add the state or province to be exact: Grand Island, NE. Leave empty for every city the manager covers.

## `allowUnblockerFallback` (type: `boolean`):

Buildium feeds are read over a fast connection first. If a feed is refused three times, try once more through Apify's unblocking proxy. Included in the price. Turn off to report such managers as blocked instead.

## Actor input object example

```json
{
  "startUrls": [
    "https://zoulproperties.managebuilding.com/Resident/public/rentals",
    "https://managementapex.managebuilding.com/Resident/public/rentals"
  ],
  "maxListings": 20,
  "allowUnblockerFallback": true
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "startUrls": [
        "https://zoulproperties.managebuilding.com/Resident/public/rentals",
        "https://managementapex.managebuilding.com/Resident/public/rentals"
    ],
    "maxListings": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/buildium-rental-listings-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 = {
    "startUrls": [
        "https://zoulproperties.managebuilding.com/Resident/public/rentals",
        "https://managementapex.managebuilding.com/Resident/public/rentals",
    ],
    "maxListings": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/buildium-rental-listings-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 '{
  "startUrls": [
    "https://zoulproperties.managebuilding.com/Resident/public/rentals",
    "https://managementapex.managebuilding.com/Resident/public/rentals"
  ],
  "maxListings": 20
}' |
apify call themineworks/buildium-rental-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/buildium-rental-listings-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/exp4W1D2hHw18izSU/builds/dKhfDMlndiKkJThgc/openapi.json
