# OLX Imóveis Scraper (`ribtools/olximoveis-scraper`) Actor

Extract real estate listings from OLX Brasil: homes for sale and rent, vacation rentals, land, commercial and new developments, with price, condo fee, IPTU, area, rooms and location. Optional add-ons: description with map coordinates, and seller phone. Built-in proxies included.

- **URL**: https://apify.com/ribtools/olximoveis-scraper.md
- **Developed by:** [RibTools](https://apify.com/ribtools) (community)
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 property data results

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

## OLX Imóveis Scraper

Extract real estate listings from **OLX Brasil** — houses, apartments, land, commercial property and new developments — with price, condo fee, IPTU, area, rooms and location, plus optional ad description and seller contact data.

### What is OLX Imóveis Scraper?

**OLX Imóveis Scraper** is a powerful data extraction tool that automatically collects real estate listings from [OLX Brasil](https://www.olx.com.br/), Brazil's largest classifieds marketplace. Simply provide starting URLs and get structured data including price, condo fee, IPTU, area, rooms, bathrooms, parking spaces and location — with optional add-ons for the full ad description with map coordinates, and the seller or agency's phone and profile.

This scraper handles pagination, anti-bot protection, and data normalization automatically, delivering clean, structured datasets ready for analysis or integration into your systems.

### What can this Actor do?

- **Extract comprehensive property data** — price, condo fee, IPTU, area, rooms, bathrooms, parking spaces, construction status, location
- **Cover every OLX Imóveis category** — sale, rent, vacation rentals, land, commercial/industrial and new developments
- **Handle multiple entry points** — category search pages, filtered searches, and single ad URLs
- **Automatic pagination** — crawls through all search result pages (up to 5,000 properties per search)
- **Ad details add-on** — full description, map coordinates (latitude/longitude), ZIP code, Zap listing ID, masked phone
- **Seller data add-on** — seller/agency name, phone number, location, pro flag, Google rating, and member-since date
- **Built-in proxies** — proxies included at no additional cost, nothing to configure
- **Structured output** — JSON, CSV, Excel formats available
- **API integration** — real-time data access through Apify API
- **Scheduled runs** — automated daily/weekly data collection

### What data can OLX Imóveis Scraper extract?

| Field | Description | Example |
| ----- | ----------- | ------- |
| **ID** | OLX ad identifier | 1537752680 |
| **Title** | Ad title | Apartamento de 3 dormitórios em região privilegiada em Taubaté |
| **Category** | OLX category name | Apartamentos, Casas, Temporada, Terrenos, ... |
| **Transaction** | Sale, rent or vacation rental | sale |
| **Price** | Listed price (BRL); per night for vacation rentals | 640000 |
| **Condo Fee / IPTU** | Monthly condo fee (BRL) and IPTU (property tax, BRL) as published by the advertiser — OLX does not state IPTU's period, often the monthly instalment | 730, 170 |
| **Area (m²) / Rooms / Bathrooms / Parking Spaces** | Unit dimensions | 99, 3, 2, 2 |
| **Property Type** | Property subtype | apartamento padrão |
| **Features / Complex Features** | Unit and building/condominium feature lists | Piscina, Portaria |
| **Location** | City, neighborhood, state, DDD | Taubaté, SP |
| **Photos** | Photo URLs | Multiple high-res images |
| **Attributes** | Raw key/value attributes from the ad | size, condominio, iptu, ... |
| **Details** (add-on) | Description, latitude/longitude, ZIP code, Zap listing ID, masked phone | See below |
| **Seller** (add-on) | Name, phone, location, pro flag, Google rating, member since | See below |

### How to scrape OLX Brasil real estate

#### Step-by-step tutorial:

1. **Add starting URLs** — Enter OLX Imóveis search or single ad URLs (see compatible formats below)
2. **Configure add-ons** (optional) — Enable ad details and/or seller data
3. **Run the scraper** — Click "Start" and monitor progress in real-time
4. **Download results** — Export data in JSON, CSV, or Excel format

Proxies are included automatically — no setup required.

#### Compatible URL examples:

- **For sale**: `https://www.olx.com.br/imoveis/venda/estado-sp`
- **For rent**: `https://www.olx.com.br/imoveis/aluguel/estado-sp`
- **Vacation rentals**: `https://www.olx.com.br/imoveis/temporada/estado-sp`
- **Land**: `https://www.olx.com.br/imoveis/terrenos/estado-sp`
- **Commercial/industrial**: `https://www.olx.com.br/imoveis/comercio-e-industria/estado-sp`
- **New developments**: `https://www.olx.com.br/imoveis/lancamentos/estado-sp`
- **Filtered search**: `https://www.olx.com.br/imoveis/venda/estado-sp?q=apartamento&ros=2`
- **Single ad (short form)**: `https://www.olx.com.br/vi/1537752680`
- **Single ad (regional link)**: `https://sp.olx.com.br/vale-do-paraiba-e-litoral-norte/imoveis/apartamento-de-3-dormitorios-em-regiao-privilegiada-em-taubate-1537752680`

**Important**: Only URLs matching these patterns will work.

### How much does it cost to scrape OLX Brasil real estate?

OLX Imóveis Scraper uses **pay-per-event (PPE)** pricing — you only pay for the events below, each triggered by real, successfully extracted data.

#### Is scraping OLX Brasil free?

The scraper charges three events:

- **`result-property-data`**: one charge per scraped property (price, condo fee, IPTU, area, rooms, location, photos)
- **`result-addon-details-data`**: one additional charge per property when the details add-on is enabled and the ad page returns data
- **`result-addon-seller-data`**: one additional charge per property, but only when the seller endpoint actually returns a phone number — sellers without a published phone are never charged for this event

Pricing is optimized for efficiency, using minimal compute units while maintaining high success rates. Contact support for volume discounts on large-scale projects.

### Input configuration

The scraper accepts the following inputs:

#### Start URLs

OLX real estate search URLs copied from your browser, with any filters applied (state, city, neighborhood, property type, rooms, price, keyword). Any `/imoveis` category works: `venda` (for sale), `aluguel` (for rent), `temporada` (vacation rentals), `terrenos` (land, farms), `comercio-e-industria` (commercial) and `lancamentos` (new developments). Single ad URLs also work, e.g. `https://www.olx.com.br/vi/1537752680` or the full regional ad link.

#### Maximum items

Maximum number of properties to scrape (each result is a charged event). Leave empty for no limit. Each search URL yields at most 5,000 properties (100 pages of 50); narrow the filters for more.

#### Fetch ad details (add-on)

Open each ad page to add the full description, map coordinates (latitude/longitude), ZIP code, Zap listing ID, seller name and masked phone. Charged per property with details.

#### Fetch seller data (add-on)

Fetch the seller or real estate agency profile: name, phone number, location, pro flag and member-since date. You are charged only when a phone number is returned.

### Output example

```json
{
  "type": "property",
  "id": 1537752680,
  "url": "https://sp.olx.com.br/vale-do-paraiba-e-litoral-norte/imoveis/apartamento-de-3-dormitorios-em-regiao-privilegiada-em-taubate-1537752680",
  "title": "Apartamento de 3 dormitórios em região privilegiada em Taubaté",
  "category_id": 1001,
  "category": "Apartamentos",
  "transaction": "sale",
  "price": 640000,
  "price_is_starting_from": false,
  "old_price": null,
  "condo_fee": 730,
  "iptu": 170,
  "area_m2": 99,
  "rooms": 3,
  "bathrooms": 2,
  "parking_spaces": 2,
  "guests": null,
  "property_type": "apartamento padrão",
  "features": ["Área de serviço", "Piscina", "Varanda"],
  "complex_features": ["Condomínio fechado", "Piscina", "Portaria", "Salão de festas"],
  "construction_status": null,
  "developer_name": null,
  "is_professional": true,
  "is_featured": false,
  "published_at": "2026-09-22T10:17:54Z",
  "city": "Taubaté",
  "neighborhood": "Independência",
  "state": "SP",
  "ddd": "12",
  "photos": [
    "https://img.olx.com.br/images/45/451695449582025.jpg",
    "https://img.olx.com.br/images/43/437650444527077.jpg"
  ],
  "video_count": null,
  "attributes": {
    "category": "Apartamentos",
    "real_estate_type": "Venda - apartamento padrão",
    "condominio": "R$ 730",
    "iptu": "R$ 170",
    "size": "99m²",
    "rooms": "3",
    "bathrooms": "2",
    "garage_spaces": "2",
    "re_features": "Área de serviço, Piscina, Varanda",
    "re_complex_features": "Condomínio fechado, Piscina, Portaria, Salão de festas",
    "re_types": "Padrão"
  },
  "details": {
    "description": "Código do anúncio: 5731\n\n99 m2\n- 3 quartos sendo 1 suíte \n- Lavabo\n- 2 banheiros\n- Sala 2 ambientes\n- Área de serviço \n- Cozinha \n- Varanda gourmet\n- 2 vagas cobertas\n- Vista para Serra…",
    "latitude": -23.036187,
    "longitude": -45.571911,
    "zip_code": "12031000",
    "zap_listing_id": "2913574617",
    "seller_name": "Atom Inteligencia Imobiliaria",
    "seller_account_id": "cd05f38c-e070-43be-adcd-3dbba2d40fc9",
    "masked_phone": "1295371*...",
    "first_published_at": "2026-09-22T10:17:54Z"
  },
  "seller": {
    "id": "cd05f38c-e070-43be-adcd-3dbba2d40fc9",
    "name": "Atom Inteligencia Imobiliaria",
    "profile_url": "https://www.olx.com.br/perfil/atom-inteligencia-imobiliaria-cd05f38c",
    "is_pro": true,
    "is_key_account": false,
    "phone": "1295371****",
    "phone_verified": true,
    "cnpj_verified": null,
    "city": null,
    "neighborhood": null,
    "state": null,
    "zip_code": null,
    "google_rating": null,
    "google_rating_count": null,
    "instagram": null,
    "benefits": [],
    "member_since": "2026-06-09T16:36:29.729Z"
  }
}
```

*This example is a real OLX Imóveis apartment listing with add-ons enabled. The description above is trimmed for brevity; a real run returns the full ad text. The seller's phone number is masked here for privacy — a real run returns the full decoded number.*

#### Data notes

- **Vacation rentals (`temporada`)**: `price` is per night — this is the site's own convention, not labeled anywhere on the listing.
- **Land (`terrenos`) and commercial/industrial (`comercio-e-industria`)**: `transaction` is always `null`. OLX mixes sale and rent listings in these categories with no marker to tell them apart, so the scraper never guesses.
- **New developments (`lancamentos`)**: listings give ranges for the whole development. `area_m2`, `rooms`, `bathrooms` and `parking_spaces` hold the lower bound of the range (e.g. "2-3 rooms" becomes `2`); `price_is_starting_from` is `true` for "A partir de" (starting from) prices; the full raw range is preserved in `attributes`.
- Some sellers list a monthly installment amount as the ad's price (e.g. "R$ 299,99 mensal" in the title of a land ad) — this is what OLX itself publishes as the price.
- `video_count` is only available from search-page results; it is `null` when the item came from a single-ad start URL.

You can download the dataset extracted by **OLX Imóveis Scraper** in various formats such as **JSON, HTML, CSV, or Excel**. The data is automatically cleaned and normalized for immediate use in analysis tools, databases, or business applications.

### Use cases and applications

- **Real estate agencies** — Monitor competitor listings and pricing across Brazil
- **Market researchers** — Analyze Brazilian real estate market trends and pricing
- **Price comparison platforms** — Build comprehensive property price databases
- **Lead generation** — Identify and reach out to private sellers and agencies
- **Investment analysis** — Evaluate real estate opportunities by city, neighborhood or property type
- **PropTech products** — Feed listing data into search, valuation or alert tools

### Integrations and API access

OLX Imóveis Scraper seamlessly integrates with popular platforms:

- **Zapier** — Automate data workflows and notifications (via [Apify Zapier integration](https://docs.apify.com/platform/integrations/zapier))
- **Make (Integromat)** — Create complex automation scenarios (via [Apify Make integration](https://www.make.com/en/integrations/apify))
- **Google Sheets** — Direct data export for analysis
- **REST API** — Programmatic access to extracted data ([instructions here](https://docs.apify.com/academy/api/run-actor-and-retrieve-data-via-api))
- **Python/Node.js SDKs** — Easy integration into applications ([instructions here](https://docs.apify.com/academy/api/run-actor-and-retrieve-data-via-api#javascript-and-python-client))

### FAQ and Support

#### Do I need to configure a proxy?

No. OLX Brasil implements anti-scraping measures that block direct requests, so the Actor includes proxies automatically at no additional cost. There's nothing to configure.

#### Why is `transaction` null for some properties?

OLX doesn't mark sale vs. rent in its own data for land (`terrenos`) and commercial/industrial (`comercio-e-industria`) listings — both types are mixed together with no field to distinguish them. Rather than guess from the title, the scraper reports `null` for these categories. Every other category (sale, rent, vacation rentals, new developments) has a reliable `transaction` value.

#### Why am I not charged for the seller data add-on on every property?

The seller data add-on is only charged when OLX's seller endpoint actually returns a phone number for that seller. Sellers who haven't published a phone number are not charged, but you still get the rest of the seller profile (name, location, pro flag, rating) at no cost for that item.

#### Can I scrape a single ad instead of a search?

Yes. Pass the ad's URL (either the short `olx.com.br/vi/<id>` form or the full regional link) as a start URL and it will be scraped like any other item.

#### How often is the data updated?

OLX Brasil updates listings in real-time. For fresh data, schedule regular scraper runs or use our API for on-demand extraction.

#### What if some URLs don't work?

The scraper only supports specific URL patterns from OLX Brasil. Ensure your URLs match the compatible formats listed above. URLs outside these patterns will be skipped.

#### Do you offer custom solutions?

Absolutely! We can customize the scraper for specific requirements, additional data points, or integration with your existing systems. Contact us through the Issues tab for enterprise solutions.

#### Need help or have feedback?

- **Report issues**: Use the Issues tab for bug reports and feature requests
- **Custom development**: Contact us for tailored solutions and enterprise integrations

# Changelog

This Actor's version history is a separate document: https://apify.com/ribtools/olximoveis-scraper/changelog.md

# Actor input Schema

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

OLX real estate search URLs copied from your browser, with any filters applied (state, city, neighborhood, property type, rooms, price, keyword). Any `/imoveis` category works: `venda` (for sale), `aluguel` (for rent), `temporada` (vacation rentals), `terrenos` (land, farms), `comercio-e-industria` (commercial) and `lancamentos` (new developments). Single ad URLs also work, e.g. `https://www.olx.com.br/vi/1537752680` or the full regional ad link.

## `maxRequests` (type: `integer`):

Maximum number of properties to scrape (each result is a charged event). Leave empty for no limit. Each search URL yields at most 5,000 properties (100 pages of 50); narrow the filters for more.

## `detailsAddon` (type: `boolean`):

Open each ad page to add the full description, map coordinates (latitude/longitude), ZIP code, Zap listing ID, seller name and masked phone. Charged per property with details.

## `sellerDataAddon` (type: `boolean`):

Fetch the seller or real estate agency profile: name, phone number, location, pro flag and member-since date. You are charged only when a phone number is returned.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.olx.com.br/imoveis/venda/estado-sp"
    }
  ],
  "maxRequests": 10,
  "detailsAddon": false,
  "sellerDataAddon": false
}
```

# Actor output Schema

## `items` (type: `string`):

All scraped properties.

# 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": [
        {
            "url": "https://www.olx.com.br/imoveis/venda/estado-sp"
        }
    ],
    "maxRequests": 10,
    "detailsAddon": false,
    "sellerDataAddon": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("ribtools/olximoveis-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": [{ "url": "https://www.olx.com.br/imoveis/venda/estado-sp" }],
    "maxRequests": 10,
    "detailsAddon": False,
    "sellerDataAddon": False,
}

# Run the Actor and wait for it to finish
run = client.actor("ribtools/olximoveis-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": [
    {
      "url": "https://www.olx.com.br/imoveis/venda/estado-sp"
    }
  ],
  "maxRequests": 10,
  "detailsAddon": false,
  "sellerDataAddon": false
}' |
apify call ribtools/olximoveis-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ribtools/olximoveis-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/Chlo6ygsEnbsWjMbA/builds/wSk4lBqcnWpr7nD8t/openapi.json
