# RE/MAX Portugal Scraper — Property Listings (`hipersoft/remax-pt-scraper`) Actor

Scrape property for sale and rent from RE/MAX Portugal (remax.pt): price, type, bedrooms, bathrooms, areas, floor, year, garage, address, parish, municipality, district, coordinates, agent and office phone, photos and descriptions. Full 40,000+ catalogue.

- **URL**: https://apify.com/hipersoft/remax-pt-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0015 / listing

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

## RE/MAX Portugal Scraper: Houses and Apartments for Sale and Rent in Portugal

**RE/MAX Portugal Scraper** extracts property listings from **RE/MAX Portugal (remax.pt)**, the **largest real estate network in Portugal** with **40,000+ properties for sale** and thousands for rent in **Lisboa, Porto, Cascais, Sintra, Braga, Coimbra, Faro, the Algarve, Madeira and the Azores**. Get the **price, previous price and price reduction, property type (apartment, house, land, quinta, shop, office…), bedrooms (T0–T5+), bathrooms, total, living, built and lot area in m², floor, construction year, garage and parking, elevator, address, postal code, zone, parish (freguesia), municipality (concelho), district, coordinates, agent name and phone, RE/MAX office and phone, exclusive flag, virtual tour and video flags, publish date and full photo gallery**. Turn on **Descriptions and rooms** to also get the **full Portuguese and English descriptions** and the **room list**. Export to **CSV, Excel or JSON**. Ideal for **real estate investors, agencies, relocation services and Portuguese property market research**.

### What does RE/MAX Portugal Scraper do?

- 🇵🇹 **Portuguese properties** from RE/MAX Portugal: the full catalogue.
- 🏠 **Buy or rent**: comprar or arrendar.
- 📍 **Location search**: Lisboa, Porto, Cascais, Faro, Funchal or any parish.
- 🏢 **Property types**: apartment, house, duplex, studio, land, farm, building, shop, office, warehouse…
- 💶 **Price filters** and **minimum bedrooms**.
- 📉 **Price drops**: previous price and reduction %.
- 📐 **Areas in m²**: total, living, built and lot.
- 🗺️ **Address, parish, municipality, district and coordinates**.
- 📞 **Agent and RE/MAX office** with phone numbers.
- 📝 **Portuguese and English descriptions** and rooms (optional).
- 🖼️ **All photos**.

### What data can you scrape from RE/MAX Portugal?

| Field | Description |
|---|---|
| Listing | Reference, ID, link, operation, property type, exclusive, published, contract date |
| Price | Price (€), previous price, price reduction % |
| Size | Bedrooms, bathrooms, rooms, total, living, built and lot area (m²) |
| Building | Floor, construction year, garage, garage spots, parking, elevator |
| Location | Address, postal code, zone, parish, municipality, district, latitude, longitude |
| Agent | Agent name and phone, office name and phone |
| Media | Main photo, photos, photo count, virtual tour, video |
| Details\* | Portuguese and English descriptions, rooms, tour link, videos |

\* With **Descriptions and rooms** turned on.

### Use cases for Portuguese property data

- **Real estate investors**: find undervalued properties and price drops in Lisboa, Porto and the Algarve.
- **Agencies and developers**: benchmark asking prices per m² by parish and municipality.
- **Relocation and golden-visa advisors**: shortlist properties for international clients.
- **Market research**: track supply, prices and days on market across Portugal.
- **Proptech and data science**: feed geocoded listings into valuation models.

### How to scrape RE/MAX Portugal

1. Click **Try for free** to open RE/MAX Portugal Scraper in Apify Console.
2. Choose **Buy or rent** and enter **locations**.
3. Optionally pick **property types**, a **price range** and **minimum bedrooms**.
4. Set **Max listings** and click **Start**.
5. Download the listings as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "operation": "buy",
  "locations": ["Porto", "Matosinhos"],
  "propertyTypes": ["apartment"],
  "bedroomsMin": 2,
  "priceMax": 400000,
  "includeDetails": true,
  "maxItems": 1000
}
```

| Field | Description |
|---|---|
| **Buy or rent** | Comprar or arrendar. |
| **Locations** | One search per location; empty = all of Portugal. |
| **Property class** | Residential, commercial or all. |
| **Property types** | Apartment, house, land, shop… |
| **Minimum / Maximum price** | Price range in euros. |
| **Minimum bedrooms** | T1 = 1, T2 = 2… |
| **Descriptions and rooms** | Adds descriptions and room list. |
| **Max listings** | Stop after this many (0 = no limit). |

### Output

#### Listing example (with descriptions)

```json
{
  "listingId": "123631502-10",
  "url": "https://www.remax.pt/pt/imoveis/venda-apartamento-t2-porto-paranhos/123631502-10",
  "operation": "buy",
  "propertyType": "apartment",
  "price": 390000,
  "currency": "EUR",
  "bedrooms": 2,
  "bathrooms": 3,
  "totalAreaM2": 89,
  "livingAreaM2": 84,
  "floor": 5,
  "constructionYear": 2024,
  "garageSpots": 1,
  "parking": true,
  "elevator": true,
  "address": "Rua Silva Porto",
  "zipCode": "4200-001",
  "parish": "Paranhos",
  "municipality": "Porto",
  "district": "Porto",
  "latitude": 41.175057,
  "longitude": -8.600072,
  "agentName": "Henrique Paquete",
  "officeName": "RE/MAX Vantagem Now",
  "photoCount": 7,
  "descriptionEN": "Condo/Apartment T2 for sale",
  "descriptionPT": "Apartamento T2, com varanda 4,5 m², inserido no Oporto Plaza…",
  "search": "Porto"
}
```

#### Output schema

| Field | Type | Description |
|---|---|---|
| `listingId`, `internalId`, `url`, `operation`, `propertyType`, `exclusive` | mixed | Listing. |
| `price`, `previousPrice`, `priceReductionPct`, `currency` | mixed | Price. |
| `bedrooms`, `bathrooms`, `totalRooms`, `totalAreaM2`, `livingAreaM2`, `builtAreaM2`, `lotSizeM2` | number | Size. |
| `floor`, `constructionYear`, `garage`, `garageSpots`, `parking`, `elevator` | mixed | Building. |
| `address`, `zipCode`, `zone`, `parish`, `municipality`, `district`, `latitude`, `longitude` | mixed | Location. |
| `agentName`, `agentPhone`, `officeName`, `officePhone` | string | Agent and office. |
| `publishedAt`, `contractDate` | string | Dates. |
| `imageUrl`, `images`, `photoCount`, `hasVirtualTour`, `hasVideo` | mixed | Media. |
| `descriptionPT`, `descriptionEN`, `rooms`, `virtualTourUrl`, `videos` | mixed | Details. |
| `search`, `scrapedAt` | string | Source info. |

### How much does it cost?

RE/MAX Portugal Scraper uses **pay-per-listing** pricing: a small fixed price per listing, with automatic discounts on higher Apify plans. See the **Pricing** tab for the exact price.

### More property data

- [OnTheMarket Scraper](https://apify.com/hipersoft/onthemarket-scraper): UK property.
- [HousingAnywhere Scraper](https://apify.com/hipersoft/housinganywhere-scraper): mid-term rentals in Europe.
- [Metrocuadrado Scraper](https://apify.com/hipersoft/metrocuadrado-scraper): Colombian property.

### FAQ

**Can I scrape all RE/MAX listings in Portugal?**
Yes. Leave **Locations** empty and set **Max listings** to 0 to collect the full catalogue.

**Why is the price empty for some listings?**
Some properties are listed with "price on request".

**Is the address always exact?**
The street is included only when the agent has made the address public; coordinates are always included.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate RE/MAX Portugal Scraper with other apps?**
RE/MAX Portugal Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape RE/MAX Portugal?**
The scraper only collects publicly listed property adverts. You are responsible for using the data in line with RE/MAX's terms and GDPR.

### Related Actors

- [OnTheMarket Scraper](https://apify.com/hipersoft/onthemarket-scraper)
- [HousingAnywhere Scraper](https://apify.com/hipersoft/housinganywhere-scraper)

### Notes

Original clean-room implementation. Returns only public data. Not affiliated with RE/MAX.

# Actor input Schema

## `operation` (type: `string`):

Properties for sale or for rent.

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

Districts, municipalities or parishes, e.g. Lisboa, Porto, Cascais, Faro, Braga, Funchal. Each location is a separate search. Leave empty for all of Portugal.

## `propertyClass` (type: `string`):

Residential, commercial or both.

## `propertyTypes` (type: `array`):

Only these property types.

## `priceMin` (type: `integer`):

Lowest price.

## `priceMax` (type: `integer`):

Highest price.

## `bedroomsMin` (type: `integer`):

At least this many bedrooms (T1 = 1, T2 = 2…).

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

Also collect the full Portuguese and English descriptions, the room list, virtual tour and videos. Slower.

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

Stop after this many listings. 0 means no limit.

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

Not required for normal use.

## Actor input object example

```json
{
  "operation": "buy",
  "locations": [
    "Lisboa"
  ],
  "propertyClass": "all",
  "includeDetails": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

The results as dataset items.

# 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": [
        "Lisboa"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/remax-pt-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": ["Lisboa"],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/remax-pt-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": [
    "Lisboa"
  ],
  "maxItems": 50
}' |
apify call hipersoft/remax-pt-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/remax-pt-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/0O8BcwDar3silQib2/builds/1ksh58aCABk0jTsPq/openapi.json
