# Ciencuadras Property Search Scraper (`stealth_mode/ciencuadras-property-search-scraper`) Actor

Scrape property listings from Ciencuadras.com with 44+ data fields per property. Extract prices, locations, features, contact info, and more — perfect for real estate analysts, investors, market researchers, and automated listing aggregators.

- **URL**: https://apify.com/stealth\_mode/ciencuadras-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Ciencuadras Property Scraper: Extract Real Estate Listings Instantly

---

### What Is Ciencuadras.com?

Ciencuadras.com is Colombia's leading real estate marketplace, connecting buyers, sellers, and renters with thousands of residential and commercial properties nationwide. The platform hosts extensive listings with detailed descriptions, images, pricing, and agent contact information. Extracting this data manually is tedious and error-prone — the **Ciencuadras Property Scraper** automates collection, delivering structured property records ready for analysis, investment decisions, and market intelligence.

---

### Overview

The **Ciencuadras Property Scraper** crawls property listing pages and extracts comprehensive property records with 44+ fields covering location, pricing, features, and agent details. It is designed for:

- **Real estate investors** tracking market inventory and pricing trends
- **Market researchers** analyzing property supply by city, neighborhood, and type
- **Aggregator platforms** building unified real estate databases
- **Data analysts** conducting competitive and valuation studies
- **Brokers** monitoring competitor listings and market saturation

The scraper excels at handling large-scale collections with configurable item limits and graceful error handling.

---

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://www.ciencuadras.com/venta"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Field | Description |
|---|---|
| `urls` | Ciencuadras property list page URLs (e.g., searches, city filters, or listings pages) |
| `max_items_per_url` | Maximum properties extracted per URL (default: `20`, max recommended: `200`) |
| `ignore_url_failures` | If `true`, continues the run if a URL fails; if `false`, stops immediately |

> **Tip:** Use filtered Ciencuadras search URLs to target specific cities, neighborhoods, or property types (e.g., rent vs. sale).

***

### Output Format

**Sample output**

```json
{
  "id": "3760294",
  "url": "/inmueble/apartamento-en-venta-en-santa-teresita-cali-3760294",
  "image": "https://www-img-cc.s3.amazonaws.com/inmuebles/images/3760294/aba_178095081142_plana.jpeg",
  "matterport": false,
  "image_360": null,
  "real_estate_type": "Apartamento",
  "offer_type": "Venta",
  "sale_price": 630000000,
  "rent_price": 1267000,
  "department": "Valle del Cauca",
  "city": "Cali",
  "locality": "Comuna 2",
  "locality_integrator": "Comuna 2",
  "neighborhood": "Santa Teresita",
  "neighborhood_integrator": "Santa Teresita",
  "area": "143",
  "rooms": "4",
  "baths": "4",
  "garages": "2",
  "code": "1005746-3760294",
  "coordinates": {
    "latitude": 3.449205,
    "longitude": -76.555626
  },
  "ascended": true,
  "ceee": "0",
  "created_at": "2026-06-08T15:32:17.000Z",
  "fair_housing": "0",
  "user_id": "1005746",
  "user_name": "Clara  Ramirez",
  "user_type": "Persona Natural",
  "private_area": "125.0",
  "show_card_area": "143.0",
  "contact_phone": "3152057516",
  "contact_whatsapp": "3152058516",
  "stratum": "6",
  "antiquity": "23",
  "gym": "0",
  "communal_pool": "0",
  "private_pool": "1",
  "offer": "0",
  "address": "Calle 14 Oeste # 2-45",
  "real_state_email": "familycvnn@gmail.com",
  "weight": "0.985124",
  "group": "1",
  "admin_value": 1267000,
  "market_reference_price": 0,
  "sort_order": "desc",
  "max_allowed_area": 999999999,
  "from_url": "https://www.ciencuadras.com/venta"
}
```

Each scraped property returns a comprehensive record with 44 fields across multiple categories:

#### Identification & Location

| Field | Meaning |
|---|---|
| `ID` | Unique Ciencuadras property identifier |
| `URL` | Direct link to the property listing |
| `Code` | Internal property code assigned by agent/platform |
| `Address` | Full street address of the property |
| `Coordinates` | GPS latitude/longitude for mapping |
| `Department` | Colombian state/department (e.g., Bogotá D.C., Antioquia) |
| `City` | City or municipality |
| `Locality` | Administrative neighborhood division |
| `Locality Integrator` | Standardized locality identifier |
| `Neighborhood` | Specific neighborhood name |
| `Neighborhood Integrator` | Standardized neighborhood code |

#### Property Type & Offer

| Field | Meaning |
|---|---|
| `Real Estate Type` | Category: apartment, house, commercial, land, etc. |
| `Offer Type` | Lease, sale, or both |
| `Sale Price` | Listed sale price in local currency (COP) |
| `Rent Price` | Monthly rent price (if applicable) |
| `Market Reference Price` | Estimated market value for comparison |
| `Admin Value` | Administrative assessed value |

#### Property Dimensions & Features

| Field | Meaning |
|---|---|
| `Area` | Total usable square meters |
| `Private Area` | Private square meters (interior space) |
| `Show Card Area` | Display area shown in search results |
| `Max Allowed Area` | Maximum allowable floor area (zoning) |
| `Rooms` | Number of bedrooms |
| `Baths` | Number of bathrooms |
| `Garages` | Number of parking spaces |
| `Antiquity` | Property age/construction year |
| `Stratum` | Colombian socioeconomic classification (1-6) |

#### Building Amenities

| Field | Meaning |
|---|---|
| `Gym` | On-site fitness facility (boolean) |
| `Communal Pool` | Shared swimming pool (boolean) |
| `Private Pool` | Private property pool (boolean) |
| `Ascended` | Elevator availability (boolean) |
| `CEEE` | Specialized energy certification flag |

#### Media

| Field | Meaning |
|---|---|
| `Image` | Primary listing image URL |
| `Matterport` | 3D virtual tour link (if available) |
| `Image 360` | 360-degree panoramic image URL |

#### Agent & Contact

| Field | Meaning |
|---|---|
| `User ID` | Real estate agent's platform user ID |
| `User Name` | Agent's display name |
| `User Type` | Agent classification (individual, agency, etc.) |
| `Contact Phone` | Agent phone number |
| `Contact WhatsApp` | Agent WhatsApp number |
| `Real State Email` | Agent or agency email address |

#### Listing Metadata

| Field | Meaning |
|---|---|
| `Created At` | Date/time the listing was posted |
| `Fair Housing` | Compliance status with fair housing regulations |
| `Offer` | Promotional or special offer flag |
| `Weight` | Internal listing ranking weight |
| `Group` | Listing group or campaign identifier |
| `Sort Order` | Display ordering in search results |

***

### How to Use

1. **Find property list URLs** — On Ciencuadras.com, apply filters (city, price, property type, rent/sale) and copy the search results URL.
2. **Prepare the input** — Paste URLs into the `urls` array. Set `max_items_per_url` (recommended: `50–200` for large extracts).
3. **Configure options** — Enable `ignore_url_failures: true` to handle blocking or temporary site issues without stopping.
4. **Run the scraper** — Start the actor from your dashboard.
5. **Export data** — Download results as JSON, CSV, or Excel for spreadsheets, analysis tools, or databases.

**Best practices:**

- Use specific search URLs to reduce noise (e.g., "rent apartments in Bogotá" vs. all listings).
- Higher `max_items_per_url` values may take longer but yield complete property coverage.
- Export to CSV for real estate spreadsheets or JSON for API integrations.

**Common issues:**

- If no properties are extracted, verify the URL is a property listing page, not a single property detail page.
- Ciencuadras may rate-limit aggressive scraping; use reasonable `max_items_per_url` values.

***

### Use Cases & Business Value

- **Investment analysis:** Build datasets to compare prices, features, and trends across neighborhoods
- **Market intelligence:** Track inventory changes, average prices, and listing velocity by location
- **Automated aggregators:** Populate portals with fresh Ciencuadras listings
- **Valuation models:** Collect comparable sales data for appraisals and feasibility studies
- **Neighborhood research:** Analyze rental supply, property types, and affordability by area

The scraper transforms hundreds of individual listings into clean, analyzable data — eliminating hours of manual work and enabling data-driven real estate decisions.

***

### Conclusion

The **Ciencuadras Property Scraper** is an essential tool for anyone doing serious real estate analysis in Colombia. With 44 data fields, reliable extraction, and flexible input options, it streamlines market research and listing aggregation. Start scraping today and unlock the insights hidden in Ciencuadras listings.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.ciencuadras.com/venta"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.ciencuadras.com/venta"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/ciencuadras-property-search-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 = {
    "urls": ["https://www.ciencuadras.com/venta"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/ciencuadras-property-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.ciencuadras.com/venta"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/ciencuadras-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/ciencuadras-property-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ciencuadras Property Search Scraper",
        "description": "Scrape property listings from Ciencuadras.com with 44+ data fields per property. Extract prices, locations, features, contact info, and more — perfect for real estate analysts, investors, market researchers, and automated listing aggregators.",
        "version": "0.0",
        "x-build-id": "wYnKLy0V2h6Kj07Ag"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~ciencuadras-property-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-ciencuadras-property-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~ciencuadras-property-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-ciencuadras-property-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~ciencuadras-property-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-ciencuadras-property-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the property list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
