# Fincaraiz Scraper - Colombia Real Estate Listings (`igolaizola/fincaraiz-scraper`) Actor

Search Colombian property listings on fincaraiz.com.co for homes, apartments, rentals, sales and projects by location, coordinates, price, area, rooms, amenities and freshness. Export JSON, CSV, Excel, or connect through the API and MCP for market research, lead generation and investment analysis.

- **URL**: https://apify.com/igolaizola/fincaraiz-scraper.md
- **Developed by:** [Iñigo Garcia Olaizola](https://apify.com/igolaizola) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 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?

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

## Fincaraiz Scraper — Colombia Property Listings & Market Data

Scrape Fincaraiz property listings across Colombia for market research, investment analysis, lead generation, and inventory monitoring. Search homes, apartments, rentals, sales, and new-development projects with location, price, area, room, amenity, and freshness filters, then download structured results from Apify.

> SEO keywords: **Fincaraiz scraper**, **Colombia real estate scraper**, **scrape property listings**, **Fincaraiz API alternative**, **Apify real estate actor**.

### 🤖 What does Fincaraiz Scraper do?

Fincaraiz Scraper finds Colombian real-estate listings and returns practical property data such as title, address, coordinates, area, bedrooms, bathrooms, prices, images, property type, operation, and owner or agency. It supports named locations, coordinate-radius searches, and detailed filters for sale, rent, and new projects.

- **Property search** — find homes, apartments, offices, land, farms, commercial spaces, parking, and more.
- **Buy, rent, or projects** — switch between properties for sale, rentals, and new-development inventory.
- **Location targeting** — search by city, province, district, zone, neighborhood, commune, or latitude/longitude radius.
- **Market-ready data** — compare prices, monitor new inventory, map supply, and build real-estate lead lists.
- **Rich results** — receive the complete search listing payload with links, images, prices, and property details.

**Great for:** Colombian market research, investment screening, agent prospecting, competitor monitoring, portfolio building, and location intelligence.

### 💡 Why scrape Fincaraiz?

- 📈 **Track local price trends** — compare property prices and sizes across Colombian cities and neighborhoods.
- 🎯 **Find investment opportunities** — combine operation, property type, price, area, rooms, condition, and amenities.
- 🧭 **Map real-estate supply** — use listing coordinates for territory planning, catchment analysis, and dashboards.
- 🏗️ **Monitor new developments** — select `projects` to follow pre-construction and development inventory.
- 🤝 **Build qualified lead lists** — identify listings by owner or agency, property profile, and location.

### 🚀 How to use

1. Open **Fincaraiz Scraper** in Apify Console.
2. Keep the prefilled Bogotá search or enter another Colombian location.
3. Choose `sale`, `rent`, or `projects`, then add only the filters you need.
4. Set `maxItems` and start the run. Use `0` when you want every available result.
5. Review the Dataset tab and download JSON, CSV, Excel, or another supported export.

You can also start a run from the Apify API or SDK with the same input shown in the examples below.

### 💳 Pricing

Apify's **Free plan** includes monthly credits for testing small searches. For larger monitoring jobs, use the plan that matches your volume and concurrency needs. Check the actor's current pricing panel for the latest usage details.

### 📝 Input parameters

| Parameter | Type | Required | Description |
|---|---|---:|---|
| `location` | Text | No | City, province, district, zone, neighborhood, or commune. The form is prefilled with `Bogotá` so the actor is ready to run. |
| `locationType` | Choice | No | Narrow the location match: `""` (Any) · `city` (City) · `state` (Province) · `locality` (District) · `zone` (Zone) · `neighborhood` (Neighborhood) · `commune` (Commune). `""` selects the first matching suggestion. |
| `latitude` | Number | No\* | Center latitude for a radius search, from `-90` to `90`. Use together with `longitude`; coordinates take priority over `location`. |
| `longitude` | Number | No\* | Center longitude for a radius search, from `-180` to `180`. Use together with `latitude`. |
| `distanceKm` | Integer | No | Radius around the coordinate center in kilometres. Default: `20`. |
| `operation` | Choice | No | Listing type: `sale` · `rent` · `projects`. Default: `sale`. |
| `propertyTypes` | Choice list | No | `house` · `apartment` · `studio-apartment` · `cabin` · `country-house` · `house-lot` · `farm` · `room` · `lot` · `warehouse` · `medical-office` · `retail-space` · `office` · `parking-space` · `building`. An empty list means any type. |
| `keyword` | Text | No | Words that should appear in matching listings, such as `furnished`, `balcony`, or `near park`. |
| `minPrice` | Integer (COP) | No | Minimum price in Colombian pesos. Default: `0` (no minimum). |
| `maxPrice` | Integer (COP) | No | Maximum price in Colombian pesos. Default: `0` (no maximum). |
| `minArea` | Integer (m²) | No | Minimum property area. Default: `0` (no minimum). |
| `maxArea` | Integer (m²) | No | Maximum property area. Default: `0` (no maximum). |
| `areaMeasurement` | Choice | No | Apply area limits to `any` · `private` · `built`. Default: `any`. |
| `bedrooms` | Choice list | No | `1` · `2` · `3` · `4` · `5`, where `5` means five or more bedrooms. Empty means any. |
| `bedroomsExact` | Boolean | No | When true, match the selected bedroom counts exactly. Default: `false`. |
| `bathrooms` | Choice list | No | `1` · `2` · `3`, where `3` means three or more bathrooms. Empty means any. |
| `bathroomsExact` | Boolean | No | When true, match the selected bathroom counts exactly. Default: `false`. |
| `rooms` | Choice list | No | `1` · `2` · `3` · `4` · `5` · `6`, where `6` means six or more rooms or work areas. |
| `garages` | Choice list | No | `1` · `2` · `3` · `4`, where `4` means four or more parking spaces. |
| `floorRanges` | Choice list | No | `first-floor` · `floors-2-to-5` · `floors-6-to-10` · `above-10th-floor` · `penthouse`. |
| `strataCategories` | Choice list | No | Colombian categories: `stratum-1` through `stratum-6`, plus `commercial` and `country`. |
| `propertyConditions` | Choice list | No | `pre-construction` · `under-construction` · `immediate-delivery` · `new` · `used`. |
| `amenities` | Choice list | No | 229 English facility choices, including `air-conditioning`, `furnished`, `balcony`, `elevator`, `gym`, `swimming-pool`, `security`, `terrace`, `parking-bays`, and `green-areas`. Empty means any. |
| `propertyAge` | Choice | No | `any-age` · `under-1-year` · `1-to-8-years` · `9-to-15-years` · `16-to-30-years` · `over-30-years`. |
| `publishedWithin` | Choice | No | `any-time` · `today` · `yesterday` · `last-7-days` · `last-15-days` · `last-30-days` · `last-40-days`. |
| `sortBy` | Choice | No | `recommended` · `newest` · `lowest-price` · `highest-price` · `lowest-price-per-square-meter` · `highest-price-per-square-meter`. |
| `commonExpenses` | Boolean | No | Keep listings that include common-expense charges. Default: `false`. |
| `season` | Choice | No | Rental season: `Any season`, December, January, February, `new-year`, `holy-week`, or `carnival`, including first- and second-half choices. |
| `availableFrom` | Date text | No | Rental availability start in `YYYY-MM-DD` format. |
| `availableTo` | Date text | No | Rental availability end in `YYYY-MM-DD` format. |
| `minGuests` | Integer | No | Minimum guests for rental listings. Default: `0` (no guest filter). |
| `seaDistance` | Choice | No | `seafront` · `under-100m` · `around-200m` · `around-300m` · `around-400m` · `around-500m` · `under-1000m` · `over-1000m`. |
| `dispositions` | Choice list | No | `not-applicable` · `front` · `back` · `interior` · `side`. |
| `socialHousing` | Boolean | No | Keep only listings marked as social housing. Default: `false`. |
| `privateOwner` | Boolean | No | Keep only listings published by a private owner. Default: `false`. |
| `hideSeen` | Boolean | No | Hide listings already marked as seen. Default: `false`. |
| `maxItems` | Integer | No | Maximum results to save. Default: `100`; `0` means every result available for the search. |

\* Provide `latitude` and `longitude` together. Leave both empty to use the named location.

#### Example inputs

**Apartments for sale in Bogotá**

```json
{
  "location": "Bogotá",
  "locationType": "city",
  "operation": "sale",
  "propertyTypes": ["apartment"],
  "minPrice": 300000000,
  "maxPrice": 800000000,
  "bedrooms": ["2", "3"],
  "bathrooms": ["2"],
  "floorRanges": ["floors-2-to-5", "floors-6-to-10"],
  "strataCategories": ["stratum-4", "stratum-5"],
  "sortBy": "newest",
  "maxItems": 100
}
```

**Furnished rentals in Medellín**

```json
{
  "location": "Medellín",
  "locationType": "city",
  "operation": "rent",
  "propertyTypes": ["house"],
  "minArea": 80,
  "areaMeasurement": "built",
  "garages": ["1", "2"],
  "amenities": ["furnished", "air-conditioning"],
  "publishedWithin": "last-30-days",
  "maxItems": 200
}
```

**Coordinate-radius search**

```json
{
  "latitude": 4.7110,
  "longitude": -74.0721,
  "distanceKm": 10,
  "operation": "sale",
  "propertyTypes": ["apartment"],
  "maxItems": 50
}
```

### 🧭 Common recipes

- **Search a whole city:** set `location` to the city and `locationType` to `city`.
- **Target a neighborhood:** use `locationType: "neighborhood"` or `"locality"` for a more focused match.
- **Search new developments:** set `operation` to `projects` and optionally choose `propertyConditions` such as `pre-construction`.
- **Find recently listed homes:** combine `publishedWithin: "last-7-days"` with `sortBy: "newest"`.
- **Compare like-for-like homes:** combine `propertyTypes`, price, area, bedrooms, bathrooms, and strata.
- **Map a service area:** provide `latitude`, `longitude`, and `distanceKm`; the named location is not needed.
- **Download everything available:** set `maxItems` to `0` after testing with a smaller limit.

### 📊 Output and results

Each dataset item preserves all fields returned by the search request, including nested property, price, owner, project, facility, image, and location data.

- **`id`** *(integer)* — Fincaraiz listing identifier.
- **`title`** *(text)* — Listing headline.
- **`link`** *(link)* — Clickable full URL for the listing on Fincaraiz.
- **`address`** *(text)* — Displayed property address or location description.
- **`latitude`, `longitude`** *(numbers)* — Listing coordinates from the search result.
- **`m2`** *(number)* — Advertised area in square metres when available.
- **`bedrooms`, `bathrooms`** *(numbers)* — Room counts.
- **`price.amount`** *(number)* — Advertised price in Colombian pesos when available.
- **`property_type.name`** *(text)* — Human-readable property type.
- **`operation_type.name`** *(text)* — Sale, rent, or related operation label.
- **`owner.name`** *(text)* — Owner or agency name when provided.
- **`images`** *(list)* — Listing image records and image URLs.

The dataset also retains map metadata such as `IDproyecto`, `lat`, `long`, `pointType`, and `md5` when supplied by the listing search.

```json
{
  "id": 193473944,
  "title": "Boaterra Zelva apartments",
  "link": "https://www.fincaraiz.com.co/boaterra-zelva-apartamento-en-venta-en-engativa-bogota/193473944",
  "address": "Bogotá, Cundinamarca, Colombia",
  "latitude": 4.6572323,
  "longitude": -74.1043587,
  "m2": 73,
  "bedrooms": 2,
  "bathrooms": 2,
  "price": {"amount": 500000000},
  "property_type": {"name": "Apartment"},
  "operation_type": {"name": "For sale"},
  "owner": {"name": "Example agency"},
  "images": [
    {"image": "https://cdn.example.com/listing-193473944.jpg"}
  ]
}
```

### ⚙️ Best practices

- Start with `maxItems: 20` or `50` while tuning a search, then increase it for a scheduled run.
- Use an explicit `locationType` when a city name could match several areas.
- Keep empty choice lists empty when you want any property type, room count, or amenity.
- Use `operation: "rent"` for seasonal fields, guest capacity, and availability dates.

### ⚖️ Legal and ethical considerations

- Respect Fincaraiz's Terms of Service and applicable Colombian laws.
- Use listing and contact information responsibly and only for lawful purposes.
- Handle personal data carefully and follow applicable privacy requirements, including GDPR or local data-protection rules where relevant.
- Keep collection rates reasonable and avoid disrupting the service.
- Preserve appropriate attribution when publishing analyses based on Fincaraiz listings.

This Actor is an independent tool and is **not** affiliated with, endorsed by, or sponsored by Fincaraiz. Fincaraiz and related marks belong to their respective owners.

### ❓ FAQ

**Do I need to enter a location?**

No. The form starts with a Bogotá prefill. You can replace it with another Colombian city or use `latitude` and `longitude` for a radius search.

**What does `locationType: "Any"` do?**

It chooses the first matching location suggestion. Select a specific level such as `City`, `Neighborhood`, or `Commune` when you want a narrower match.

**Can I search new-development projects?**

Yes. Set `operation` to `projects`. You can combine it with property types, construction conditions, price, area, and location filters.

**What does `maxItems: 0` mean?**

It saves every result available for the selected search. Use a positive limit first when testing a broad city search.

### 🛟 Support

Need a custom field, filter, or export workflow? Open an issue or contact [Igolaizola](https://igolaizola.com/#contact).

# Actor input Schema

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

Maximum number of property map points to save. Use 0 to save every point returned for the search.

## `location` (type: `string`):

City, province, district, zone, or neighborhood to search. The default Bogotá search is ready to run.

## `locationType` (type: `string`):

Optionally filter location suggestions by type. Any selects the first suggestion returned.

## `latitude` (type: `number`):

Latitude of the center point for coordinate-based search. Use together with longitude; coordinates take precedence over the named location.

## `longitude` (type: `number`):

Longitude of the center point for coordinate-based search. Use together with latitude.

## `distanceKm` (type: `integer`):

Search radius around the latitude/longitude point, in kilometers.

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

Choose whether to find properties for sale, for rent, or new-development projects.

## `sortBy` (type: `string`):

Choose how matching properties are ordered before the item limit is applied.

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

Select one or more kinds of property. Leave empty to include any property type.

## `keyword` (type: `string`):

Optional text that should appear in matching listings, for example furnished or balcony.

## `minPrice` (type: `integer`):

Minimum listing price in Colombian pesos. Use 0 for no minimum.

## `maxPrice` (type: `integer`):

Maximum listing price in Colombian pesos. Use 0 for no maximum.

## `minArea` (type: `integer`):

Minimum property area in square metres. Use 0 for no minimum.

## `maxArea` (type: `integer`):

Maximum property area in square metres. Use 0 for no maximum.

## `areaMeasurement` (type: `string`):

Choose which area measurement the minimum and maximum should use.

## `bedrooms` (type: `array`):

Select the bedroom counts to include.

## `bedroomsExact` (type: `boolean`):

Match only the selected bedroom counts instead of treating the highest count as “or more”.

## `bathrooms` (type: `array`):

Select the bathroom counts to include.

## `bathroomsExact` (type: `boolean`):

Match only the selected bathroom counts instead of treating the highest count as “or more”.

## `rooms` (type: `array`):

Select the number of rooms or work areas for supported commercial properties.

## `garages` (type: `array`):

Select the number of parking spaces.

## `floorRanges` (type: `array`):

Select one or more floor ranges for apartments.

## `strataCategories` (type: `array`):

Select Colombian residential strata or a non-residential category.

## `propertyConditions` (type: `array`):

Select one or more construction or availability states.

## `amenities` (type: `array`):

Select any amenities that every matching property should have.

## `propertyAge` (type: `string`):

Choose the age range of the property.

## `publishedWithin` (type: `string`):

Limit results by when the listing was published.

## `commonExpenses` (type: `boolean`):

Return only listings that include common-expense charges.

## `season` (type: `string`):

Limit rental listings to a seasonal period.

## `availableFrom` (type: `string`):

Optional rental availability start date in YYYY-MM-DD format.

## `availableTo` (type: `string`):

Optional rental availability end date in YYYY-MM-DD format.

## `minGuests` (type: `integer`):

Return rental listings that accommodate at least this many guests.

## `seaDistance` (type: `string`):

Limit properties by their distance from the sea.

## `dispositions` (type: `array`):

Select the property orientations or dispositions to include.

## `socialHousing` (type: `boolean`):

Return only properties marked as social housing.

## `privateOwner` (type: `boolean`):

Return only listings published by a private owner.

## `hideSeen` (type: `boolean`):

Ask the search service to hide listings already marked as seen.

## Actor input object example

```json
{
  "maxItems": 100,
  "location": "Bogota",
  "locationType": "",
  "distanceKm": 20,
  "operation": "sale",
  "sortBy": "recommended",
  "propertyTypes": [],
  "keyword": "",
  "minPrice": 0,
  "maxPrice": 0,
  "minArea": 0,
  "maxArea": 0,
  "areaMeasurement": "any",
  "bedrooms": [],
  "bedroomsExact": false,
  "bathrooms": [],
  "bathroomsExact": false,
  "rooms": [],
  "garages": [],
  "floorRanges": [],
  "strataCategories": [],
  "propertyConditions": [],
  "amenities": [],
  "propertyAge": "any-age",
  "publishedWithin": "any-time",
  "commonExpenses": false,
  "season": "",
  "minGuests": 0,
  "seaDistance": "",
  "dispositions": [],
  "socialHousing": false,
  "privateOwner": false,
  "hideSeen": false
}
```

# Actor output Schema

## `results` (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 = {
    "location": "Bogota"
};

// Run the Actor and wait for it to finish
const run = await client.actor("igolaizola/fincaraiz-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 = { "location": "Bogota" }

# Run the Actor and wait for it to finish
run = client.actor("igolaizola/fincaraiz-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 '{
  "location": "Bogota"
}' |
apify call igolaizola/fincaraiz-scraper --silent --output-dataset

```

## MCP server setup

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