Metrocuadrado Scraper | Colombia Real Estate avatar

Metrocuadrado Scraper | Colombia Real Estate

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Metrocuadrado Scraper | Colombia Real Estate

Metrocuadrado Scraper | Colombia Real Estate

Extract public Metrocuadrado property data in Colombia: sale and rental prices, areas, rooms, published contacts and project units. Export structured rows to JSON, CSV or Excel. Pay per delivered row plus a start fee.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Features

Limited permissions

Share

Metrocuadrado Scraper

Extract public Colombian property listings from Metrocuadrado as structured rows with prices, property details and published contacts, ready to export.

  • Sale and rental listings for cities such as Bogotá, Medellín and Cali.
  • Asking prices in COP, floor areas, bedrooms, bathrooms and estrato.
  • Published phone numbers, WhatsApp contacts and coordinates when available.
  • New-build units, property agencies, location slugs and filter catalogs.
  • Pay for delivered rows: $3.00 per 1,000 rows on the Free plan, plus a start fee.

What does Metrocuadrado Scraper do?

Metrocuadrado Scraper collects public data from Metrocuadrado.com in Colombia. Use it to compare asking prices, monitor advertised inventory or build a property spreadsheet. Each listing or project unit is a separate row; other modes return agencies, locations or catalog entries.

  • Search and map: filter by city, neighborhood, operation and property characteristics.
  • Detail and project: look up known listings or units within a new-build project.
  • Agency: collect a property agency or builder's published information.
  • Locations and catalog: find location slugs and supported filter values.
  • Optional rows: includeSimilar and includeAgencyListings are off by default. Each suggested listing or agency listing is a separate billed row, sharing the input's maxResults limit.

What data can you extract from Metrocuadrado?

Fields depend on the mode and what the source publishes. Examples below are illustrative, not current offers.

Listing rows: rowType=listing

Search, map, detail and project modes use this row type. Map rows are sparse: they do not contain listing URLs, titles or contact details.

FieldDescriptionExample
listingIdListing or project-unit identifier512-M4491547
listingUrlProperty page, when availablehttps://www.metrocuadrado.com/inmueble/example/512-M4491547
titlePublished listing titleApartamento en venta
operationSale or rentventa
propertyTypeProperty categoryApartamento
priceAsking price for the operation450000000
currencyCurrency when a price is presentCOP
priceSaleSale asking price450000000
priceLeaseMonthly rent2500000
priceAdminMonthly administration fee300000
areaM2Floor area in square metres85
areaPrivate / areaBuiltDetail areas in square metres80 / 85
bedrooms / bathrooms / garagesPublished room and parking counts2 / 2 / 1
estratoColombian socioeconomic stratum4
city / neighborhoodPublished locationBogotá / Usaquén
latitude / longitudeMap coordinates, when available4.69 / -74.03
phone / whatsappPublished contact numbers+1 555 0100
phonesContact entries with type and normalized number[{"value":"+1 555 0100","type":"phone","e164":"+15550100"}]
companyName / companyLinkAgency or builder name and pageExample Agency
descriptionProperty description from detailsTwo-bedroom apartment
features / amenitiesGrouped features and amenity textAscensor
images / videoPhoto URLs and video information[] / null
projectProject name, builder, delivery date and price/area ranges{"priceMin":450000000}
leadAbsencesExplanations for missing contact or location data{"phones":"listing shows no phone"}

Suggested listing rows: rowType=similarListing

FieldDescriptionExample
sourceListingIdParent listing that supplied the suggestion512-M4491547
listingIdSuggested listing identifierMC6652570
listingUrlSuggested property pagehttps://www.metrocuadrado.com/inmueble/example/MC6652570

Agency listing rows: rowType=agencyListing

FieldDescriptionExample
agencyId / agencyNameOwning agency identifier and name4455 / Example Agency
listingId / listingUrlListing identifier and property page512-M4491547
phone / whatsappContact shown on the agency listing+1 555 0100

Agency rows: rowType=agency

FieldDescriptionExample
agencyId / agencyUrlAgency or builder identifier and page4455
namePublished organization nameExample Agency
phonesPublished numbers associated with its listings[]
listingCountNumber of listings found on the agency page12

Location rows: rowType=location

FieldDescriptionExample
kindCity, neighborhood, zone or pointneighborhood
labelLocation labelChapinero
urlFragmentSlug path to use in search filtersbogota/chapinero
city / neighborhoodLocation components, when returnedbogota / chapinero

Catalog rows: rowType=catalog

FieldDescriptionExample
kindCatalog entry typeamenity
label / valueDisplay label and filter valuePiscina / conPiscina
filterCorresponding input field, if supportedamenities

How to scrape Metrocuadrado

  1. Open Metrocuadrado Scraper in Apify Console.
  2. Fill one target field, such as city, or paste a Metrocuadrado URL into startUrls.
  3. Set maxResults to a small number such as 3.
  4. Click Start and wait for completion.
  5. Download the dataset or read its rows through the API.

An empty input starts an example search for Bogotá apartments for sale, limited to three rows using the form's sample values. Normal charges apply. With mode=auto, one target field selects the corresponding mode. Remove unrelated sample targets before entering your own.

Fill city, for example bogota, and use operation=venta for sale or arriendo for rent. Search URLs also work in startUrls. Use neighborhood with its city; identical neighborhood names can occur in different cities.

Map

Set mode=map and city. This returns listing identifiers, prices and coordinates rather than full property details. The requested row limit still applies.

Detail

Fill ids or listing startUrls. To add suggestions, enable includeSimilar and leave room for them in maxResults after the parent listing.

Project

Fill projectCodes with a project-unit identifier, such as 21477-C0001-03. Returned units can include project price ranges, builder information and delivery date.

Agency

Fill agencyUrls with an /inmobiliaria/ or /constructora/ page. Enable includeAgencyListings for individual listing rows in addition to the agency row.

Locations

Fill query with part of a city or neighborhood name. Use returned slug components in city and neighborhood.

Catalog

Set mode=catalog; no location target is required. Choose catalog to retrieve amenities, age bands, types or property types. Only entries with a corresponding filter identify an exposed input field.

What to fill in

FieldWhat to enterDefault
modeauto, search, map, detail, project, agency, locations, catalogauto
cityCity slugNo default; sample bogota
startUrlsMetrocuadrado search, listing, project or agency URLsEmpty
idsListing identifiersEmpty
projectCodesProject-unit identifiersEmpty
agencyUrlsAgency or builder page URLsEmpty
queryLocation name fragmentEmpty
maxResultsRows per input, from 1 to 1000070; form sample 3
operationventa or arriendoventa
propertyTypeA form option such as apartamentos or casas; empty for anyapartamentos
neighborhood / zoneNeighborhood slug or offered zone valueEmpty
bedrooms / bathrooms / garagesExact counts, from 0 to 20Unset
stratumEstrato from 1 to 6Unset
amenitiesCatalog values, such as conPiscina[]
statususado or nuevo; overrides the default used-only selectionEmpty
keywordListing search termEmpty
minArea / maxAreaNonnegative area bounds in square metresUnset
minPrice / maxPriceNonnegative COP price bounds for search/mapUnset
scrapeDetailsAdd full details to search rowstrue
includeGeoAdd map coordinates to search rows when full details are offtrue
includeProjectsAllow new-build units in search when status is emptyfalse
includeSimilarAdd suggestions in detail modefalse
includeAgencyListingsAdd agency listings as separate rowsfalse
catalogall, amenities, antiquity, types, propertyTypesall

Search:

{
"city": "bogota",
"operation": "arriendo",
"bedrooms": 2,
"stratum": 4,
"amenities": ["conPiscina"],
"maxResults": 3
}

Map:

{"mode":"map","city":"medellin","neighborhood":"el-poblado","maxResults":3}

Detail:

{"mode":"detail","ids":["512-M4491547"],"includeSimilar":true,"maxResults":3}

Project:

{"mode":"project","projectCodes":["21477-C0001-03"],"maxResults":3}

Agency:

{"mode":"agency","agencyUrls":["https://www.metrocuadrado.com/inmobiliaria/jedy-strategies-cia-ltda/4455"],"includeAgencyListings":true,"maxResults":3}

Locations:

{"mode":"locations","query":"chapinero","maxResults":3}

Catalog:

{"mode":"catalog","catalog":"amenities","maxResults":3}

maxItems and limit are accepted aliases for the per-input maxResults limit. Close field-name misspellings can be corrected; other unknown fields and unsupported filter values are ignored with a note. Invalid targets or inconsistent ranges stop processing with INVALID_INPUT: <field> — <how to fix>, before any row is charged. The start fee can still apply.

The INPUT_REPORT record in the default key-value store records the chosen mode, corrections, ignored fields and example-run status. With several targets in automatic selection, priority is startUrls, ids, projectCodes, agencyUrls, query, then city; compatible explicit modes can retain additional targets.

Output example

This shortened detail row illustrates the format. The phone number is a placeholder.

{
"rowType": "listing",
"listingId": "512-M4491547",
"listingUrl": "https://www.metrocuadrado.com/inmueble/example/512-M4491547",
"title": "Apartamento en venta",
"name": "Apartamento en venta",
"type": "Apartamento",
"status": "venta",
"operation": "venta",
"propertyType": "Apartamento",
"price": 450000000,
"currency": "COP",
"areaM2": 85,
"bedrooms": 2,
"bathrooms": 2,
"estrato": 4,
"city": "Bogotá",
"neighborhood": "Usaquén",
"latitude": 4.69,
"longitude": -74.03,
"phone": "+1 555 0100",
"country": "CO",
"authority": "metrocuadrado.com",
"source": "metrocuadrado.com",
"scrapedAt": "2026-10-24T00:00:00Z"
}

Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. JSON preserves nested structures such as project, phones and features.

Why use this Metrocuadrado scraper?

  • Row-based billing: pay for delivered rows, plus the start event, rather than attempted pages.
  • Useful partial data: rows already written to the dataset remain available after a stop. Unwritten rows are not guaranteed.
  • Readable failures: input errors name the field; ERROR_SUMMARY and RUN_SUMMARY provide run information.
  • No invented values: missing source fields remain null or absent; leadAbsences explains contact gaps.
  • Several inputs: pass multiple listing identifiers, project codes or URLs in the matching array.
  • No proxy configuration: you do not need to set up proxies.

How much does it cost to scrape Metrocuadrado?

Pricing is pay-per-event: a start event plus each delivered row. Platform usage is included in these prices. The start event costs $0.005 per GB of memory, with a minimum of one event. Default memory is 512 MB, so a normal start costs $0.005.

Apify planStart at 512 MBPrice per rowPrice per 1,000 rows
Free$0.005$0.003$3.00
Starter$0.005$0.003$3.00
Scale$0.005$0.0026$2.60
Business$0.005$0.0022$2.20

maxResults applies to each input, not the entire run: default 70, maximum 10000, with larger requests collected in parts of 70. Search, map, locations and catalog each have one scalar input. All row types share that input's allowance.

Free-plan runs are capped at 200 rows per run and 10 runs of this Actor, limits set by the publisher. Paid plans are not subject to the 10-run cap. The whole run also stops at your Maximum cost per run setting (maxTotalChargeUsd in the API).

Example: one search delivering three rows on the Free plan at 512 MB costs 3 × $0.003 + $0.005 = $0.014. A run delivering no rows incurs no row charge; the start event still applies. Fewer available matches mean fewer delivered rows.

What happens when the run timeout is too short

Some Metrocuadrado collections, such as a city search with a large maxResults, several ids with includeSimilar: true or agencyUrls with includeAgencyListings: true, can take longer than the run timeout you chose. In that case the run does not fail. It ends early with the status message "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." and shows as ABORTED for a while.

When the results are ready, the same run starts again by itself, reports "Resumed: delivering N rows.", writes the rows to the same dataset and finishes as SUCCEEDED. Rows that were already delivered are skipped, so no row is delivered or charged twice. You do not need to start another run.

  • This can happen at most 3 times per run. To avoid it, keep the default timeout of 3600 seconds.
  • The synchronous API endpoints (run-sync, run-sync-get-dataset-items) wait at most 300 seconds and can return an empty dataset while the run is paused. For larger jobs, start the run asynchronously and read the dataset after the run reaches SUCCEEDED, or use a webhook on the "succeeded" event.

Use with AI agents and the API

Apify MCP server

Add this remote server in Claude, ChatGPT, Cursor, VS Code or another compatible MCP client:

https://mcp.apify.com?tools=lentic_clockss/metrocuadrado-scraper

Sign in with Apify through OAuth, or supply Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read the rows with get-dataset-items. Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/metrocuadrado-scraper with APIFY_TOKEN configured.

Example prompt: “Find three apartments for rent in Bogotá using Metrocuadrado Scraper, with city=bogota, operation=arriendo and maxResults=3.”

Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/metrocuadrado-scraper").call(
run_input={"city": "bogota", "maxResults": 3}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/metrocuadrado-scraper')
.call({ city: 'bogota', maxResults: 3 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

For HTTP, send the input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~metrocuadrado-scraper/runs with an Authorization: Bearer <YOUR_APIFY_TOKEN> header. After the run finishes, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json using its dataset ID.

Integrations

Use Apify's Integrations tab to connect outputs to Google Sheets, Make, Zapier, n8n, Slack, Airtable or a webhook. Use Apify Schedules for recurring runs.

En español

Este Actor recoge anuncios públicos de venta y arriendo de inmuebles en Colombia. Devuelve precios en pesos colombianos, áreas, habitaciones, baños y estrato, además de teléfonos, WhatsApp y coordenadas cuando están publicados. Para empezar, escribe una ciudad como bogota en city, elige venta o arriendo en operation y limita maxResults a tres filas. También puedes consultar inmuebles mediante ids, proyectos con projectCodes o inmobiliarias con agencyUrls. Cada fila entregada tiene un precio, incluso las sugerencias y los anuncios de una inmobiliaria; también se cobra el inicio. No se entregan direcciones de vivienda completas ni se envían formularios de contacto. Descarga los datos en JSON, CSV o Excel.

FAQ

The Actor collects public data. You are responsible for complying with the site's terms and applicable data-protection law. Personal data requires a lawful basis for collection and use. Public visibility is not permission for every use.

Why did my run end as ABORTED?

The run was stopped before normal completion. Check its status message and logs for the cause. Inspect any existing dataset rows before restarting; do not assume that an aborted run delivered everything requested or will restart automatically.

How many results can I get?

Up to maxResults per input, subject to available matches, the whole-run cost cap and Free-plan limits. A limit is not a guaranteed row count. Narrow filters and missing listings can produce fewer rows or none.

Why are some fields empty?

The source may not publish them, or the selected mode may not provide them. Map rows omit contacts and titles. Agency, location and catalog rows normally have no property price. Full details may be incomplete if a listing cannot be read.

Will every listing have phone numbers and coordinates?

No. Published contacts and coordinates are returned when available. The Actor does not submit inquiry forms to obtain additional information.

Should I use arriendo or alquiler?

Use arriendo for rent and venta for sale. Accepted operation aliases include rent, rental and sale; alquiler is not an offered value.

How do I include new-build homes?

Enable includeProjects for search without a condition filter, or explicitly use status=nuevo. For units within a known development, use mode=project and projectCodes.

Limitations

  • Colombia and public Metrocuadrado pages only; no private account data or inquiry submissions.
  • Residential street addresses, door numbers, listing emails and individual agent names are not supplied.
  • Coordinates and contacts have no guaranteed coverage rate.
  • Price bounds filter search/map rows; they are not detail or project-mode filters.
  • Map mode is not a radius-search input and does not promise complete city coverage.
  • Detail photos and flattened amenities are each limited to 50 entries.
  • Catalog age bands are reference data; there is no age-filter input.

More real estate and property data scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Report a problem or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.