
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Portal Inmobiliario (Chile) property listings for sale and rent by comuna, city or region, or from search and listing links. Get price in UF, CLP and USD, areas, bedrooms, bathrooms, address, publisher and photos, plus GPS, spec sheet, amenities and description with details. No login needed.
Export property listings from Portal Inmobiliario, Chile's largest property portal, into clean JSON, CSV or Excel. Search any comuna, city, region or neighborhood for sale, rent or short-term rent, or paste search and listing links, and get prices in UF, CLP and USD, areas, bedrooms, bathrooms, address, publisher and photos. Turn on details for GPS coordinates, the full spec sheet, amenities and the description. No login, no API key, and 1,000 listings take about 25 seconds.
Las Condes, Providencia, Viña del Mar), or paste Portal Inmobiliario search or listing links.| Field | What it does |
|---|---|
locations | Comunas, cities, regions or neighborhoods, one per line (e.g. Las Condes, Metropolitana, las-condes-metropolitana) |
operation | venta (sale), arriendo (rent) or arriendo-temporal (short-term rent) |
propertyType | departamento, casa, oficina, terreno, sitio, parcela, local-comercial, bodega, estacionamiento, industrial, agricola, loteo |
startUrls | Search links (filters and sort kept) and listing links or ids (MLC-...), instead of Locations |
maxResults | Listings to save in total (0 = no limit) |
maxResultsPerSearch | Optional cap per place or search link, so every place gets results |
includeDetails | Open every listing page for the full record |
condition, sellerType | Used or new projects; agencies or private owners |
minPrice, maxPrice, priceCurrency | Price range in UF or CLP |
minBedrooms, maxBedrooms, minBathrooms, minArea, maxArea | Size filters |
publishedToday, sort | Only today's listings; relevance, price or date order |
{
"locations": ["Las Condes", "Providencia"],
"operation": "arriendo",
"propertyType": "departamento",
"minBedrooms": 2,
"maxPrice": 1200000,
"priceCurrency": "CLP",
"maxResults": 200,
"includeDetails": true
}
One row per listing. Search-card rows (details off) fill the fields marked ●; detail rows fill everything the listing shows.
| Field | Description | Cards |
|---|---|---|
id, url | Listing id (MLC-...) and link | ● |
propertyTitle, headline, operation, property_type | Title and kind of listing | ● |
price, currency | Price in the listing's own currency (UF, CLP or USD) | ● |
priceUf, priceClp, priceUsd, pricePerM2, fxRate | Converted prices and the rates used | ● |
bedrooms, bathrooms, useful_area, total_area | Size | ● |
location, city, publisher, isOfficialStore | Where and who | ● |
thumbnail, images, image_count | Photos (all photos with details) | ● |
condition, availability, price_valid_until | Used or new; offer details | |
parking, storage, rooms, floors_total, unit_floor, units_per_floor, terrace_area | Spec sheet | |
antiquity, orientation, maintenance_fee | Age, orientation, common expenses (gastos comunes) | |
address, neighborhood, region, location_path, latitude, longitude | Full address and GPS | |
publisherType, publisherUrl, publisherLogo, propertyCode, published | Publisher details and publication age | |
description, amenities, specs | Description, features marked yes, and the whole spec sheet as label → value | |
hasVideo, hasVirtualTour, listingType, domainId, searchUrl, scrapedAt | Extras |
Example detail row (trimmed; names changed):
{
"id": "MLC-4574279070",
"url": "https://www.portalinmobiliario.com/MLC-4574279070-departamento-antiguo-remodelado-3d1b-providencia-diciembre-_JM",
"source": "detail",
"propertyTitle": "Departamento Antiguo Remodelado 3d1b Providencia. Diciembre",
"operation": "arriendo",
"property_type": "Departamento",
"condition": "Usado",
"price": 950000,
"currency": "CLP",
"priceUf": 23.06,
"priceClp": 950000,
"priceUsd": 967.55,
"pricePerM2": 11875,
"fxRate": { "ufToClp": 41194.54, "usdToClp": 981.86 },
"total_area": "80 m²",
"useful_area": "80 m²",
"bedrooms": 3,
"bathrooms": 1,
"parking": 0,
"storage": 0,
"floors_total": 4,
"unit_floor": "2",
"antiquity": "50 años",
"orientation": "N",
"maintenance_fee": "30.000 CLP",
"address": "Av. Francisco Bilbao 1945, Providencia, Inés de Suárez, Providencia, RM (Metropolitana)",
"neighborhood": "Inés de Suárez",
"city": "Providencia",
"region": "RM (Metropolitana)",
"latitude": -33.4386296,
"longitude": -70.608528,
"publisher": "Andes Gestión Inmobiliaria",
"publisherType": "real_estate_agency",
"published": "Publicado hace 8 días",
"description": "Arriendo Departamento 3 Dormitorios en Providencia, Metro Inés de Suárez…",
"amenities": ["Admite mascotas", "Acceso a internet", "Comedor", "Living", "Cocina", "Con logia"],
"image_count": 14,
"hasVideo": true
}
Example search-card row (trimmed; names changed):
{
"id": "MLC-4592625132",
"source": "overview",
"propertyTitle": "Departamento Remodelado En Pontevedra Con Colón",
"operation": "venta",
"property_type": "Departamento",
"price": 6900,
"currency": "UF",
"priceClp": 284242326,
"priceUsd": 289493.74,
"pricePerM2": 87.34,
"useful_area": "79 m² útiles",
"bedrooms": 2,
"bathrooms": 3,
"location": "Pontevedra / Avenida Cristóbal Colón, Rotonda Atenas, Las Condes",
"city": "Las Condes",
"publisher": "Cordillera Propiedades"
}
Pay per listing saved:
Platform usage (compute and the Chilean residential proxy) is billed on top and is small: about $0.01 per 1,000 listings without details and about $0.25 per 1,000 with details (mostly proxy traffic for the listing pages), measured on our test runs. Examples: 1,000 listings ≈ $3.01; 1,000 detailed listings ≈ $11.25. Listings that fail to load are never charged, and you can cap any run with a maximum total charge.
Is it legal to scrape Portal Inmobiliario? The scraper only reads public listing pages that anyone can open without an account. Check the site's terms and the data-protection rules that apply to you (personal data of private sellers in particular) before you reuse the data.
Do I need a login or my own proxy? No. Runs use Chilean residential exits by default, which the site serves reliably. If the chosen exits are refused, the run switches once automatically.
How many listings can I get? As many as the searches hold. Portal Inmobiliario shows at most 2,016 listings per search, so bigger searches are split into price ranges automatically (we exported 10,000 listings of the Metropolitan Region in one run).
Why is a field empty? Search cards do not carry every field: switch on details for GPS, parking, storage, age, common expenses, amenities and the description. Some listings simply leave fields out (for example new projects without a unit floor).
Can I schedule it or use the API? Yes. Schedule daily runs (combine with "Only listings published today") and read results through the API or integrations, as JSON, CSV or Excel.
What do UF and CLP mean? UF (Unidad de Fomento) is Chile's inflation-indexed unit used for most sale prices; CLP is the Chilean peso, common for rents. Every row has both, plus USD, at the rates the site shows that day.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
locationsarrayOptionalLocations
Comunas, cities, regions or neighborhoods in Chile, one per line, e.g. 'Las Condes', 'Providencia', 'Viña del Mar', 'Puerto Varas' or 'Metropolitana'. A URL slug such as 'las-condes-metropolitana' works too. Each place is its own search, using Operation, Property type and the filters below.
operationenumOptionaldefault "venta"Operation
Sale, rent or short-term (seasonal) rent. Used with Locations.
propertyTypeenumOptionaldefault "departamento"Property type
Kind of property. Used with Locations.
startUrlsarrayOptionalPortal Inmobiliario links
Optional, instead of Locations. Search links copied from portalinmobiliario.com (every filter and sort in the link is kept) and listing links (portalinmobiliario.com/MLC-...) or listing ids such as MLC-1234567890. Listing links always return the full details. Search and listing links can be mixed.
maxResultsintegerOptionaldefault 20Maximum listings
How many listings to save in total across all searches and links. 0 = no limit. One search on the site shows at most 2,016 listings (42 pages); bigger searches are split by price automatically, so large regions can be scraped in full.
maxResultsPerSearchintegerOptionalMaximum listings per place or link
Optional. Cap each place (or search link) at this many listings, so a long list of places gets results from every one. Empty = no per-place cap; Maximum listings still caps the run.
Narrow down searches built from Locations and pasted search links.
conditionenumOptionaldefault "any"Condition
Used properties or new projects. Used with Locations.
sellerTypeenumOptionaldefault "any"Published by
Agencies and developers, or private owners. Used with Locations.
minPriceintegerOptionalMinimum price
Lowest price, in the currency chosen below. Listings priced in another currency are converted by the site.
maxPriceintegerOptionalMaximum price
Highest price, in the currency chosen below.
priceCurrencyenumOptionaldefault "UF"Price filter currency
Currency of the price filter: UF (Unidad de Fomento) or Chilean pesos.
minBedroomsintegerOptionalMinimum bedrooms
At least this many bedrooms (0 = studios included).
maxBedroomsintegerOptionalMaximum bedrooms
At most this many bedrooms.
minBathroomsintegerOptionalMinimum bathrooms
At least this many bathrooms.
minAreaintegerOptionalMinimum total area (m²)
Smallest total area in square metres.
maxAreaintegerOptionalMaximum total area (m²)
Largest total area in square metres.
publishedTodaybooleanOptionaldefault falseOnly listings published today
Keep only listings published today. Handy for a daily schedule.
sortenumOptionaldefault "relevance"Sort by
Order of the results.
Open each listing page for the full record.
includeDetailsbooleanOptionaldefault falseInclude full listing details
Open every listing page for GPS coordinates, the full spec sheet (total and useful area, parking, storage, floors, age, orientation, common expenses), amenities, description, condition, publisher details and the full photo gallery. Slower and priced per detailed listing. Off: the search-card data only (title, price, beds, baths, area, location, publisher, photo).
includeAllPhotosbooleanOptionaldefault trueAll photos
With full listing details, return every photo of the gallery (one small extra request per listing). Off: the first five photos shown on the listing page.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy
Chilean residential exits work best on Portal Inmobiliario. If the chosen exits are refused, the run switches once automatically.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | Listing id (MLC-...), a stable join key |
| url | string | null | Listing page on portalinmobiliario.com |
| source | string | null | overview (search card) or detail (listing page opened) |
| propertyTitle | string | null | Listing title |
| operation | string | null | venta, arriendo or arriendo-temporal |
| property_type | string | null | Departamento, Casa, Oficina, Terreno, ... |
| condition | string | null | Usado or Nuevo (details) |
| price | number | null | Price in the listing's own currency (see currency) |
| currency | string | null | UF, CLP or USD |
| priceUf | number | null | Price in UF |
| priceClp | number | null | Price in Chilean pesos |
| priceUsd | number | null | Price in US dollars at the site's current rate |
| pricePerM2 | number | null | Price per m² (useful area, else total area) in the listing's currency |
| previousPrice | number | null | Earlier price when the site shows a price drop |
| fxRate | object | null | Rates used for the conversions: ufToClp, usdToClp (from the site) |
| availability | string | null | Offer availability (details) |
| price_valid_until | string | null | Date the quoted price is valid until (details) |
| total_area | string | null | Superficie total, e.g. '58 m²' |
| useful_area | string | null | Superficie útil |
| terrace_area | string | null | Superficie de terraza (details) |
| built_area | string | null | Superficie construida |
| bedrooms | number | null | Dormitorios |
| bathrooms | number | null | Baños |
| parking | number | null | Estacionamientos (details) |
| storage | number | null | Bodegas (details) |
| rooms | number | null | Ambientes (details) |
| floors_total | number | null | Floors in the building or house (details) |
| unit_floor | string | null | Floor of the unit (details) |
| units_per_floor | number | null | Units per floor (details) |
| antiquity | string | null | Age of the property, e.g. '24 años' (details) |
| orientation | string | null | Orientation, e.g. N, NO (details) |
| maintenance_fee | string | null | Gastos comunes, e.g. '80.000 CLP' (details) |
| location | string | null | Address line shown on the listing |
| address | string | null | Full address with comuna and region (details) |
| neighborhood | string | null | Barrio (details) |
| city | string | null | Comuna (details) |
| region | string | null | Región (details) |
| location_path | array | null | Breadcrumb from property type to neighborhood (details) |
| latitude | number | null | GPS latitude (details) |
| longitude | number | null | GPS longitude (details) |
| publisher | string | null | Agency, developer or owner name |
| publisherType | string | null | real_estate_agency, private_seller, ... (details) |
| publisherId | string | null | Publisher account id (details) |
| publisherUrl | string | null | Publisher's store page (details) |
| publisherLogo | string | null | Publisher logo (details) |
| isOfficialStore | boolean | null | Published by an official store |
| propertyCode | string | null | Publisher's own property code (details) |
| published | string | null | How long ago it was published, e.g. 'Publicado hace 8 días' (details) |
| headline | string | null | Card headline, e.g. 'Departamento en venta' |
| description | string | null | Full description (details) |
| amenities | array | null | Features marked yes: lift, pool, gym, ... (details) |
| specs | object | null | The full spec sheet as label -> value (details) |
| attributes | array | null | Card attributes, e.g. '2 dormitorios', '58 m² útiles' |
| thumbnail | string | null | Main photo |
| images | array | null | Photo URLs (all photos with details) |
| image_count | number | null | Number of photos returned |
| hasVideo | boolean | null | The listing has a video (details) |
| hasVirtualTour | boolean | null | The listing has a virtual tour (details) |
| isFeatured | boolean | null | Featured (destacado) listing |
| listingType | string | null | Listing plan (details) |
| categoryId | string | null | Site category id |
| domainId | string | null | Site domain id, e.g. MLC-INDIVIDUAL_APARTMENTS_FOR_SALE |
| position | number | null | Order in which the listing was found |
| searchUrl | string | null | Search page the listing came from |
| scrapedAt | string | null | When the run saved the listing (UTC) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One saved Portal Inmobiliario listing with the search-card data. | $0.003 |
| Detailed listing | One saved listing with its listing page opened: GPS, spec sheet, amenities, description and all photos (instead of the Listing price). | $0.011 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/portalinmobiliario-scraper').call({
"locations": [
"Las Condes"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "CL"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/portalinmobiliario-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/portalinmobiliario-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Ten rental apartments in Providencia with GPS, spec sheet, common expenses, amenities, description and every photo.
Paste any Portal Inmobiliario search link: here houses for sale in Viña del Mar, lowest price first.
Used apartments for rent in Ñuñoa with at least two bedrooms, up to 900,000 CLP a month, cheapest first.
Houses for sale in Puerto Varas (Los Lagos) with prices in UF, CLP and USD.
Two comunas in one run, ten listings from each.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.