# Fincaraiz Scraper - Colombia Property Listings & Prices (`sian.agency/fincaraiz-property-scraper`) Actor

Extrae anuncios de fincaraiz.com.co en toda Colombia: precio COP, área, habitaciones, estrato, GPS, fotos, descripción completa y datos del anunciante.

- **URL**: https://apify.com/sian.agency/fincaraiz-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.88 / 1,000 property searches

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 & Prices 🏠

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Store-Fotocasa%20Scraper-00A3E0](https://img.shields.io/badge/SI%C3%81N-Fotocasa%20Scraper-00A3E0)](https://apify.com/sian.agency/fotocasa-property-scraper?fpr=sian) [![Store-Daft%20Scraper-00A651](https://img.shields.io/badge/SI%C3%81N-Daft%20Scraper-00A651)](https://apify.com/sian.agency/daft-property-scraper?fpr=sian) [![Store-Otodom%20Scraper-0073CF](https://img.shields.io/badge/SI%C3%81N-Otodom%20Scraper-0073CF)](https://apify.com/sian.agency/otodom-property-scraper?fpr=sian)

Extrae anuncios de fincaraiz.com.co en toda Colombia: precio COP, área, habitaciones, estrato, GPS, fotos, descripción completa y datos del anunciante.

### 🔎 What is the Fincaraiz Property Scraper — and when should you use it?

The **Fincaraiz Property Scraper** turns Colombian property listings from fincaraiz.com.co, by place name into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Colombian listings for sale or rent with the asking price in pesos and the portal's own dollar conversion; price per square metre; private, built, terrain and terrace area; bedrooms, bathrooms, parking; the neighbourhood's estrato and the monthly admin fee. Each row carries GPS, the full photo set, amenities and the advertiser's full Spanish description, plus the publisher's name, profile link, developer/agency/owner type and WhatsApp availability. Input is a plain place name, so no search URL has to be built first. A separate agency mode returns everything one estate agency currently has on the market.

**Use something else when:** you need a different Latin American market. Use [Zonaprop Property Scraper](https://apify.com/sian.agency/zonaprop-property-scraper?fpr=sian) for Argentine sale and rent listings with USD and ARS prices, expenses and publisher contacts. Use [Urbania Property Scraper](https://apify.com/sian.agency/urbania-property-scraper?fpr=sian) for Peruvian sale and rent listings across Lima and the coast. Use [ImovelWeb Property Scraper](https://apify.com/sian.agency/imovelweb-property-scraper?fpr=sian) for Brazilian sale and rent listings with BRL prices, area and agency data. This actor covers fincaraiz.com.co only, which is Colombia only.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/fincaraiz-property-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want Colombian property listings from Finca Raíz using the Apify Actor `sian.agency/fincaraiz-property-scraper`.

Use it when I need: Colombian listings for sale or rent with the asking price in pesos and the portal's own dollar conversion; price per square metre; private, built, terrain and terrace area; bedrooms, bathrooms, parking; the neighbourhood's estrato and the monthly admin fee. Each row carries GPS, the full photo set, amenities and the advertiser's full Spanish description, plus the publisher's name, profile link, developer/agency/owner type and WhatsApp availability. Input is a plain place name, so no search URL has to be built first. A separate agency mode returns everything one estate agency currently has on the market.

Don't use it when: you need a different Latin American market — use zonaprop-property-scraper or urbania-property-scraper or imovelweb-property-scraper instead.

How to call it: pick an `operation`: `search` (a place name) or `agency` (fincaraiz agency page URLs or ids in `agencyUrls`); set `location` to any Colombian place (`Bogotá`, `Medellín`, `Chapinero, Bogotá`, `El Poblado`) and add more in `locations`; choose `transactionType` (`sale` or `rent`); narrow with `propertyType`, `minPrice`/`maxPrice` in pesos, `minArea`/`maxArea`, `stratum`, `bedrooms` (exact count), `antiquity` (brand new, under construction, under a year) or `has3dTour`; order with `sortBy` and cap the run with `maxResults`.

Start with this input:
{
  "operation": "search",
  "location": "Bogotá",
  "transactionType": "sale",
  "sortBy": "newest",
  "maxResults": 105
}

Ask me which Colombian place, and whether they want listings for sale, for rent, or one agency's whole portfolio, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Pull apartments for sale in Chapinero, Bogotá under 800 million pesos and rank them by price per square metre.*
- *Compare median rent per square metre across Bogotá, Medellín and Cali, admin fees included.*
- *Track new stratum-6 developments in El Poblado on a weekly schedule and flag price drops.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/fincaraiz-property-scraper.md](https://apify.com/sian.agency/fincaraiz-property-scraper.md).

### 📋 Overview

**Fincaraiz Scraper pulls live property listings off fincaraiz.com.co, Colombia's biggest real-estate portal, and hands you clean rows.** Ready for a spreadsheet, a database or an AI agent. Name a place, pick sale or rent, and every listing comes back with its price, area, rooms, estrato, GPS, photos and the advertiser's details.

**Why this one and not a generic scraper:**

- ✅ **Detail-grade rows from the search alone**: the full Spanish description, every photo, amenities and GPS ride in the search response — verified byte-identical to the listing's own page.
- ⚡ **21 listings per request**: a 105-listing run finishes in under a minute; no browser, no page-by-page waiting.
- 🎯 **Validated places**: the portal silently redirects unknown places to all of Colombia and bare "Chapinero" to the one in Bucaramanga. This actor checks the portal's own answer and errors a mismatched place instead of billing you 176,000 wrong rows.
- 💰 **Pay per listing, $1.00 per 1,000**: you pay only for rows actually returned — a place that matched nothing costs nothing. The FREE tier still gets full-quality rows.
- 🏘️ **Colombia-specific fields**: estrato, the monthly administración fee, the portal's own COP→USD conversion, and developer/agency/owner flags on every row.
- ✨ **Agency mode**: paste one agency page URL and get their entire current portfolio.

### ✨ Features

- 🔍 **Place-name search** — departments, cities, zones and neighbourhoods, resolved through the portal's own redirects.
- 💰 **Both markets** — venta and arriendo, with prices in pesos plus the portal's dollar conversion.
- 🏘️ **All 15 property types** — apartments, houses, rooms, fincas, lots, offices, warehouses and more.
- 🎚️ **Verified filters** — price band, area, estrato, exact bedrooms, age and 3D tour; every one proven to narrow the live result set.
- 🗺️ **GPS on every row** — latitude, longitude, neighbourhood, zone, city and department.
- 🏗️ **New-development tracking** — project flags, brand-new and under-construction filters.
- 🏢 **Agency portfolios** — every listing one agency currently has on the market.
- 🖼️ **Complete photo sets** — the gallery the listing page shows, not a thumbnail.
- 📄 **Run report** — an HTML summary of what ran, what it cost and what failed, saved with every run.

### 🎬 Quick Start

Type a Colombian place, press Start. The actor resolves it through the portal, prints exactly which place was matched, and stops at your listing budget.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~fincaraiz-property-scraper/runs?token=YOUR_TOKEN \
-d '{"location": "Bogotá", "transactionType": "sale", "maxResults": 105}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Name your place

"Bogotá", "Medellín", "El Poblado". Or "Chapinero, Bogotá" when the zone name exists in more than one city.

#### Step 2: Pick the market

Sale or rent, any of the 15 property types, and optional price, area, estrato or bedroom filters.

#### Step 3: Press Start

Listings land in your dataset with prices, photos, GPS and descriptions. The run report sums up cost and coverage.

**That's it! In under a minute you'll have:**

- Every matching listing with its asking price in pesos and dollars
- GPS coordinates and the full Spanish description per row
- A dataset ready to export as JSON, CSV or Excel

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | select | No | Property Search (default) or Agency Listings |
| `location` | string | No | A Colombian place — city, zone, neighbourhood or department |
| `locations` | stringList | No | More places; each runs its own search |
| `agencyUrls` | stringList | No | Agency page URLs or ids, for Agency Listings mode |
| `transactionType` | select | No | `sale` (default) or `rent` |
| `propertyType` | select | No | One of 15 types, or everything |
| `minPrice` / `maxPrice` | integer | No | Price bounds in Colombian pesos; 0 = no bound |
| `minArea` / `maxArea` | integer | No | Built-area bounds in m²; 0 = no bound |
| `stratum` | select | No | Estrato 1-6, or any |
| `bedrooms` | select | No | Exact bedroom count, or any |
| `antiquity` | select | No | Brand new, under construction, or under a year old |
| `has3dTour` | boolean | No | Only listings with a 3D tour |
| `sortBy` | select | No | Popularity (default), newest, cheapest, smallest area |
| `maxResults` | integer | No | Budget across all places (default 105, max 4,000) |

**Example — newest apartments in a zone:**

```json
{
  "operation": "search",
  "location": "Chapinero, Bogotá",
  "transactionType": "sale",
  "propertyType": "apartamentos",
  "sortBy": "newest",
  "maxResults": 105
}
```

**Bulk — three cities in one run:**

```json
{
  "operation": "search",
  "location": "Bogotá",
  "locations": ["Medellín", "Cali"],
  "transactionType": "rent",
  "maxResults": 300
}
```

### 📤 Output

Results are saved to the Apify dataset with **45+ fields**, including:

| Field | Type | Description |
|-------|------|-------------|
| `propertyId` | number | The portal's listing id |
| `listingUrl` | string | Link to the listing on fincaraiz.com.co |
| `propertyTitle` | string | The advertiser's own title |
| `price` | number | Asking price in Colombian pesos |
| `priceUsd` | number | The portal's own dollar conversion |
| `adminFee` | number | Monthly administración fee |
| `areaSqm` / `builtAreaSqm` | number | Private and built area |
| `bedrooms` / `bathrooms` / `parkingSpaces` | number | Room counts |
| `stratum` | number | Estrato 1-6 where published |
| `neighborhood` / `zone` / `city` / `state` | string | Where the listing sits |
| `latitude` / `longitude` | number | GPS coordinates |
| `listingDescription` | string | The full Spanish description |
| `amenities` | array | The listing's feature list |
| `imageUrl` / `imageUrls` / `imageCount` | mixed | The complete photo set |
| `publisherName` / `publisherUrl` / `publisherType` | mixed | Who advertises it, with their profile link |
| `isProject` | boolean | New-development inventory |
| `publishedAt` | string | First publication date |

**Example row:**

```json
{
  "propertyId": 193671233,
  "listingUrl": "https://www.fincaraiz.com.co/apartamento-en-venta-en-chico-norte-bogota/193671233",
  "propertyTitle": "Apartamento en Venta en Chico norte, Bogotá",
  "propertyType": "Apartamento",
  "transactionType": "Venta",
  "price": 1950000000,
  "priceUsd": 626000,
  "areaSqm": 187,
  "bedrooms": 4,
  "bathrooms": 4,
  "parkingSpaces": 2,
  "stratum": 6,
  "city": "Bogotá",
  "neighborhood": "Chico norte",
  "latitude": 4.6730931,
  "longitude": -74.0487873,
  "publisherName": "Inmobiliaria M.Durán",
  "publisherType": "inmobiliaria",
  "imageCount": 16,
  "isProject": false
}
```

### 💼 Use Cases & Examples

#### 1. Market Analyst Pricing a Portfolio

**A valuation analyst needs median COP/m² by neighbourhood, updated monthly.**
**Input:** "Bogotá" with newest-first ordering, on a schedule.
**Output:** Every sale listing with price, area and location, ready for the median-per-barrio pivot.
**Use:** Price appraisals and portfolio benchmarks against live asking stock.

#### 2. Agency Building a Lead Map

**A CRM manager wants every agency advertising in Medellín, with profile links.**
**Input:** "Medellín", all property types.
**Output:** Rows carrying publisher name, type and profile URL — dedupe by publisher and the agency map falls out.
**Use:** Prospect lists for PropTech sales and portal-coverage research.

#### 3. Investor Screening Rental Yield

**Yield depends on sale price versus rent minus the admin fee.**
**Input:** The same zone twice — once `sale`, once `rent`.
**Output:** Both sides carry price, area and administración, so gross and net-of-fee yield join per neighbourhood.
**Use:** Buy-to-let screening across Colombian zones.

#### 4. Developer Watching the Competition

**A sales team tracks what competing projects launch, where, and at what price.**
**Input:** Brand-new or under-construction filter, sorted by newest.
**Output:** Project inventory with unit prices per m² and photo sets, run weekly.
**Use:** Launch pricing and absorption tracking.

#### 5. Portal Feeding a Listings Site

**A relocation service renders live Colombian stock with photos and coordinates.**
**Input:** The cities the service covers, capped by budget.
**Output:** GPS, full photo sets and Spanish descriptions, ready to render.
**Use:** Feed a comparison site or relocation dashboard.

#### 6. Agent Prospecting Owner-Direct Listings

**Owner listings mean no commission to split.**
**Input:** "Cali" with the agency mode off, `sortBy: newest`.
**Output:** Every row flags publisher type — filter `particular` and call the owners first.
**Use:** Off-market lead hunting.

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/fincaraiz-property-scraper').call({
  location: 'Bogotá',
  transactionType: 'sale',
  maxResults: 105,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/fincaraiz-property-scraper').call(
    run_input={'location': 'Medellín', 'transactionType': 'rent', 'maxResults': 105}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~fincaraiz-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"location": "Bogotá", "maxResults": 105}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON listing rows
4. **Action**: Save to Sheets, notify, or push into your own platform

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 listings** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Up to 4,000 listings** per run, across as many places as you name
- Pay-per-event: $1.00 per 1,000 listings plus a $0.005 run start
- Only successful listings are charged

💵 **Priced where the users actually are** — matching the only well-reviewed rival and sitting a third under the field leader, with detail-grade rows at the base price.

🔗 [View current pricing](https://apify.com/sian.agency/fincaraiz-property-scraper?fpr=sian)

### ❓ Frequently Asked Questions

**Q: How many listings can I process?**
A: FREE tier: 25 per run. PAID tier: up to 4,000 per run, across as many places as you name. A single search can page through its entire result set — Bogotá sale alone holds about 39,900 listings.

**Q: Does it need my fincaraiz account or a proxy?**
A: No. The actor reads the portal's public listing pages; there is nothing to configure.

**Q: Is the advertiser's phone number included?**
A: No. The portal publishes only a masked phone prefix on its public pages. Every row carries the publisher's name, profile link, type and WhatsApp flag — be wary of any actor promising full numbers for this site.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export straight from the Apify dataset.

**Q: The place I typed came back as an error. Why?**
A: The portal did not recognize it, and this actor refuses to bill a different place than the one you asked. Check the spelling, or name the city after a comma for zones that exist twice — "Chapinero, Bogotá".

**Q: Are the descriptions in Spanish?**
A: Yes — the advertiser's own text, exactly as published, untranslated.

**Q: Is this legal?**
A: Yes — we only extract publicly available data. See our [legal section](#legal).

**Q: How long does a run take?**
A: About a second per 21-listing page, plus a short pause between pages. A 105-listing default run finishes in under a minute.

### 🛠️ Troubleshooting

**"Place not found" for a place I know exists**

- Check the spelling, including accents — the matcher handles them, but a typo sends the portal to all-of-Colombia, which this actor refuses to return.
- Zones with common names need the city: "Chapinero, Bogotá", not "Chapinero".

**A search returns fewer rows than the portal's website shows**

- The filters apply exactly — check the price bound is in pesos, not dollars, and that bedrooms is an exact count, not a minimum.
- Run again with sort "newest": the default popularity order is front-loaded with new developments.

**"Agency not found" for an agency page**

- Paste the agency page URL from your browser, or just the numeric id at the end of it — agency pages move when an agency renames itself.

**The run stopped early with a charge warning**

- Your account hit its Max total charge limit or ran out of credits. Raise the limit in run options, or top up in Apify Console → Billing.

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### 🤝 Support

**Join our active support community**

- For issues or questions, open an issue at [apify.com/sian.agency/fincaraiz-property-scraper/issues](https://apify.com/sian.agency/fincaraiz-property-scraper/issues)
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

FincaRaíz and fincaraiz.com.co are trademarks of their respective owners. This actor is not affiliated with, endorsed by, or sponsored by FincaRaíz or fincaraiz.com.co.

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

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

Pick one per run. Property Search takes Colombian place names (cities, zones, neighbourhoods) and returns listing rows; Agency Listings takes fincaraiz agency page URLs and returns everything that agency currently has on the market.

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

A Colombian place name — department, city, zone or neighbourhood. Bogotá, Medellín, Cali, Barranquilla, Chapinero, El Poblado, Chico norte. If a zone name exists in more than one city, name the city after a comma ('Chapinero, Bogotá') — the portal itself sends a bare 'Chapinero' to the one in Bucaramanga. The run log prints exactly which place was matched.

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

Extra places to search in the same run. Each one runs its own search, so three places return roughly three times the rows.

## `agencyUrls` (type: `array`):

Used by the Agency Listings operation: fincaraiz agency pages, e.g. https://www.fincaraiz.com.co/inmobiliarias/inmobiliaria-mduran/174605949 — or just the agency page URL as the portal links it. Every listing that agency currently has in the chosen market comes back. The numeric id in the URL is the agency, so it is what matters.

## `transactionType` (type: `string`):

Which market to search. Nationwide the portal carries about 176,526 listings for sale; Bogotá rent alone is 20,120. One market per run — the portal does not combine them.

## `propertyType` (type: `string`):

Narrow to one of the 15 property types the portal runs. 'Everything' returns all of them — on a Bogotá sale search, apartments alone are 19,846 of 39,884 listings.

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

Lowest asking price to include, in Colombian pesos. For rentals this is the monthly rent. 0 means no lower bound. Verified live: a 50M–200M band takes Bogotá sale from 39,878 listings to 1,692.

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

Highest asking price to include, in Colombian pesos. For rentals this is the monthly rent. 0 means no upper bound.

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

Smallest built area (área construida) in square metres. 0 means no minimum. Verified live: m² from 200 takes Bogotá sale from 39,878 to 14,195.

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

Largest built area in square metres. 0 means no maximum. Rows always report private, built, terrain and terrace area separately regardless of this filter.

## `stratum` (type: `string`):

Colombia's socio-economic strata classification, the field every Colombian property buyer filters by. Verified live: estrato 6 alone is 10,746 of Bogotá's 39,878 sale listings.

## `bedrooms` (type: `string`):

Exact bedroom count — the portal matches exactly, not 'or more'. Verified live: 4 bedrooms takes Bogotá sale from 39,878 to 4,961. There is no working 'or more' transport on the portal, so to reach 3+ bedrooms run 3, 4, 5 and 6 in the places list.

## `antiquity` (type: `string`):

Development age. 'Brand new' isolates new-development stock; 'under construction' is pre-sale inventory. These are the only three age filters the portal actually honours — decade-based age filters are accepted silently and then ignored, so they are not offered here.

## `has3dTour` (type: `boolean`):

Keep only listings that carry a 3D virtual tour. Verified live: 214 of Bogotá's 39,878 sale listings qualify, so this is a strong narrowing filter for premium feed builds.

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

Newest first is what you want when running this on a schedule — the new stock lands on page 1. Popularity is the portal's own default order and surfaces new developments heavily.

## `maxResults` (type: `integer`):

Stop after this many listings across every place searched. Each request returns 21 rows, so the run stops at the first request that crosses your limit. A single search can page through its whole result set — Bogotá sale runs 1,899 pages deep — but the portal's count wobbles by a few rows between requests, so treat totals as approximate.

## Actor input object example

```json
{
  "operation": "search",
  "location": "Bogotá",
  "locations": [
    "Medellín",
    "Cali"
  ],
  "agencyUrls": [],
  "transactionType": "sale",
  "propertyType": "all",
  "minPrice": 0,
  "maxPrice": 0,
  "minArea": 0,
  "maxArea": 0,
  "stratum": "any",
  "bedrooms": "any",
  "antiquity": "any",
  "has3dTour": false,
  "sortBy": "popularity",
  "maxResults": 105
}
```

# Actor output Schema

## `fincaraizListings` (type: `string`):

Every listing this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "search",
    "location": "Bogotá",
    "locations": [
        "Medellín",
        "Cali"
    ],
    "agencyUrls": [],
    "transactionType": "sale",
    "propertyType": "all",
    "minPrice": 0,
    "maxPrice": 0,
    "minArea": 0,
    "maxArea": 0,
    "stratum": "any",
    "bedrooms": "any",
    "antiquity": "any",
    "has3dTour": false,
    "sortBy": "popularity",
    "maxResults": 105
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/fincaraiz-property-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 = {
    "operation": "search",
    "location": "Bogotá",
    "locations": [
        "Medellín",
        "Cali",
    ],
    "agencyUrls": [],
    "transactionType": "sale",
    "propertyType": "all",
    "minPrice": 0,
    "maxPrice": 0,
    "minArea": 0,
    "maxArea": 0,
    "stratum": "any",
    "bedrooms": "any",
    "antiquity": "any",
    "has3dTour": False,
    "sortBy": "popularity",
    "maxResults": 105,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/fincaraiz-property-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 '{
  "operation": "search",
  "location": "Bogotá",
  "locations": [
    "Medellín",
    "Cali"
  ],
  "agencyUrls": [],
  "transactionType": "sale",
  "propertyType": "all",
  "minPrice": 0,
  "maxPrice": 0,
  "minArea": 0,
  "maxArea": 0,
  "stratum": "any",
  "bedrooms": "any",
  "antiquity": "any",
  "has3dTour": false,
  "sortBy": "popularity",
  "maxResults": 105
}' |
apify call sian.agency/fincaraiz-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/fincaraiz-property-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/Jcmg3RFXmKIm4Acyj/builds/0Z1UqOBckMseRwhuq/openapi.json
