# Square Yards Scraper — India Property Listings & GPS Data (`logiover/squareyards-india-property-scraper`) Actor

Scrape Square Yards, a major Indian property portal. Extract asking price in crore and lakh, built-up area, BHK configuration, bathrooms, floor, possession status, furnishing, parking, project name, locality, city and GPS coordinates for resale homes.

- **URL**: https://apify.com/logiover/squareyards-india-property-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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 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

## Square Yards Scraper — India Property Prices & GPS Data

Indian resale listings with the two things Indian property data usually lacks: a real asking price in crore and lakh, and GPS coordinates you can map without geocoding.

### What does the Square Yards Scraper do?

This Actor collects live listings from **Square Yards**, a major Indian property portal. Two carriers are read and joined, because neither is complete on its own. The JSON-LD holds the GPS coordinates — which almost no Indian portal publishes, and which is what makes catchment and comparable analysis possible without geocoding a free-text address. The listing cards hold the price, and the price is nowhere in the JSON-LD at all.

The cards are also where a trap lives. The page mixes *project* cards from builders — "Starting From ₹4.88 Cr", linking to a project page — in among the real resale listings. Only a card carrying a property id is a listing, so that is the anchor here, and everything else is joined onto it. Prices are written in crore and lakh, the units Indian listings actually use, and converted to rupees on every row.

### Who is it for?

- **Property investors** comparing per-square-foot pricing across Indian micro-markets.
- **Proptech and portal teams** seeding or benchmarking an Indian inventory.
- **Banks and mortgage analysts** who need mappable comparables.
- **Developers** pricing new projects against live resale stock.
- **Researchers** studying Indian urban housing with listing-level evidence.

### Use cases

- Build a price-per-square-foot map of Mumbai or Bangalore using the GPS coordinates.
- Compare ready-to-move stock against under-construction inventory via possession status.
- Track asking prices by locality month over month.
- Filter for semi-furnished and furnished stock, which prices very differently.
- Assemble a project-level comparable set from the project name field.
- Feed an AI agent live Indian listings for price questions.

### Why use this Square Yards Scraper?

- **GPS coordinates on 90%+ of rows** — rare in Indian property data and what makes mapping possible.
- **Prices converted from crore and lakh** to plain rupees, with the original label kept.
- **The project-card trap avoided** — only real resale listings are collected.
- **Possession status, furnishing and parking** parsed from the card.
- **Built-up area at 100% fill**, alongside BHK configuration and bathrooms.
- **Keyless and login-free** — nothing to register, nothing to rotate.

### What data can you extract?

One row per listing. Anything the source left blank comes back as `null`.

| Field | Type | Description |
|---|---|---|
| `listingId` | string | Square Yards property id |
| `url` | string | Direct link to the listing |
| `title` | string | Listing headline |
| `description` | string | Listing description |
| `price` | number | Asking price converted to rupees |
| `priceText` | string | Price as published, e.g. "₹ 2.2 Cr" |
| `bedrooms` | string | BHK configuration |
| `bathrooms` | string | Bathroom count |
| `areaSqft` | number | Built-up area in square feet |
| `floorLevel` | string | Floor the unit is on |
| `possessionStatus` | string | Ready to move, or under construction |
| `furnishing` | string | Furnished, semi-furnished or unfurnished |
| `parking` | string | Parking provision as stated |
| `projectName` | string | Project or society name |
| `locality` | string | Locality |
| `city` | string | City |
| `latitude` | number | Latitude |
| `longitude` | number | Longitude |
| `imageUrl` | string | Listing photo |
| `scrapedAt` | string | When this row was collected |

#### Sample output

```json
{
  "listingId": "10593739",
  "url": "https://www.squareyards.com/resale-2-bhk-619-sq-ft-apartment-in-godrej-urban-park/10593739",
  "title": "2 BHK Flat for Sale in Chandivali, Mumbai",
  "description": "A comfortable lifestyle awaits in this 2-bedroom, 2-bathroom apartment at Godrej Urban Park in Chandivali, ...",
  "price": 22000000,
  "priceText": "₹ 2.2 Cr",
  "bedrooms": "2",
  "bathrooms": "2",
  "areaSqft": 619,
  "floorLevel": "10",
  "possessionStatus": "Ready To Move",
  "furnishing": "Semi-Furnished",
  "parking": "1 Covered Parking",
  "projectName": "Godrej Urban Park",
  "locality": "Chandivali",
  "city": "Mumbai",
  "latitude": 19.106476,
  "longitude": 72.900911,
  "imageUrl": "https://img.squareyards.com/secondaryPortal/optImages/IN_639222213825000717-1308261236223622.jpg",
  "scrapedAt": "2026-08-16T16:28:50.990Z"
}
```

### How to use the Square Yards Scraper

#### Option A — one city

Choose sale or rent and enter a city slug such as `mumbai`, `delhi`, `bangalore` or `pune`, then set a result limit.

#### Option B — several cities

List slugs comma-separated; each is crawled as its own search, which is how a national dataset is built in one run.

#### Option C — a mappable comparable set

Collect a city, then filter on `latitude`/`longitude` and `areaSqft` to build price-per-square-foot heat maps without geocoding anything.

### Input parameters

| Input | Type | Description |
|---|---|---|
| `listingType` | string | Properties for sale or to rent. Default: `"sale"`. |
| `cities` | string | City slugs as they appear in a Square Yards URL, e.g. mumbai, delhi, bangalore, pune, hyderabad, chennai, noida, gurgaon. Each is crawled as its own search, comma-separated. Default: `"mumbai"`. |
| `maxResults` | integer | Stop after this many listings. Each page returns about 25. Default: `1000`. |
| `proxyConfiguration` | object | Square Yards serves Indian exits. Residential proxy pinned to India is used automatically. |

### Tips for best results

- `priceText` keeps the original crore or lakh label; `price` is the rupee value derived from it. Keep both if you are publishing figures Indians will read.
- Project cards are excluded deliberately — if a row looks like a builder advert rather than a listing, it is not in this dataset.
- `possessionStatus` is the field that separates ready stock from under-construction inventory, which price on different curves.
- GPS is present on the large majority of rows; the few gaps are listings the portal itself never geocoded.
- List several cities rather than raising the result cap on one — each city is its own crawl.

### Integrations

Connect this Actor to Make, Zapier, n8n, Slack, Google Sheets, GitHub, Airtable or any HTTP endpoint through Apify integrations. Every finished run can push its dataset straight into your warehouse, or fire a webhook so a downstream job starts the moment the data lands.

### API usage

Run the Actor from your own code with the Apify API. Datasets can be exported as JSON, CSV, Excel, XML, RSS or HTML, and every run is available through the [Apify API reference](https://docs.apify.com/api/v2).

```bash
curl -X POST "https://api.apify.com/v2/acts/logiover~squareyards-india-property-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"input": {"listingType": "sale", "cities": "mumbai", "maxResults": 1000, "proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "IN"}}}'
```

Python, JavaScript, PHP and CLI clients are documented under [Apify API clients](https://docs.apify.com/api/client).

### Use with AI agents (MCP)

This Actor is callable from any MCP-compatible client — Claude, Cursor, VS Code or your own agent — through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp). An agent can call it to answer live questions about Indian property prices, built-up areas and mappable coordinates instead of guessing from stale training data.

### FAQ

#### Do I need a Square Yards account or API key?

No. The Actor reads public listing pages with no login and no key.

#### What are crore and lakh?

Indian number units: one crore is 10,000,000 rupees and one lakh is 100,000. Listings quote them rather than plain rupees, so both the label and the converted value are on every row.

#### What is BHK?

Bedroom-Hall-Kitchen — the Indian way of describing a flat's configuration. A 2 BHK has two bedrooms plus a living room and kitchen.

#### How many listings can one run return?

Mumbai alone reports tens of thousands across more than a thousand pages. The practical limit is the result cap you set.

#### Why do some property portals return project adverts instead of listings?

Because builder project cards sit in the same result grid and look identical to a naive parser. This Actor anchors on the property id that only real listings carry.

#### Do all rows have GPS?

The large majority do. Where the portal never geocoded a listing, the coordinates come back null rather than guessed.

#### Can I get the agent's contact details?

No. Square Yards keeps contact behind its own lead form, and this Actor does not attempt to reach it.

#### Why did my run return zero listings?

Usually a city slug that does not exist. Use the slug exactly as it appears in a Square Yards URL.

#### Can I export to CSV or Excel?

Yes. Every run's dataset exports as JSON, CSV, Excel, XML, RSS or HTML from the Storage tab, the API, or automatically through an integration.

#### How fresh is the data?

Every run reads the site live at that moment, so the data is as fresh as the site itself. Schedule the Actor hourly, daily or weekly to build a time series.

#### How often is the Actor updated?

It is monitored and fixed when the site changes its markup or its endpoints. Report anything that looks wrong through the Issues tab and it gets picked up.

### Is it legal to scrape Square Yards?

This Actor collects only publicly available information — the same pages any visitor can open without logging in. It does not bypass a login, and it does not touch private or personal accounts. Public data collection is legal in most jurisdictions, but how you *use* the data is your responsibility: if any record contains personal data, GDPR and comparable laws still apply, and you need a lawful basis for processing it. When in doubt, take legal advice. See Apify's [ethical web scraping](https://blog.apify.com/what-is-ethical-web-scraping-and-how-do-you-do-it/) guide.

### Related scrapers

- [MagicBricks Scraper](https://apify.com/logiover/magicbricks-india-property-scraper) — Indian property with agent details.
- [Zameen Scraper](https://apify.com/logiover/zameen-property-scraper) — Pakistani property with phone numbers.
- [LIFULL HOME'S Scraper](https://apify.com/logiover/lifull-homes-japan-property-scraper) — Japanese rents and property.
- [Aqarmap Scraper](https://apify.com/logiover/aqarmap-egypt-property-scraper) — Egyptian property.
- [QuintoAndar Scraper](https://apify.com/logiover/quintoandar-brazil-property-scraper) — Brazilian property with rental yield.

# Actor input Schema

## `listingType` (type: `string`):

Properties for sale or to rent.

## `cities` (type: `string`):

City slugs as they appear in a Square Yards URL, e.g. mumbai, delhi, bangalore, pune, hyderabad, chennai, noida, gurgaon. Each is crawled as its own search, comma-separated.

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

Stop after this many listings. Each page returns about 25.

## `proxyConfiguration` (type: `object`):

Square Yards serves Indian exits. Residential proxy pinned to India is used automatically.

## Actor input object example

```json
{
  "listingType": "sale",
  "cities": "mumbai",
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Every record collected in this run. Open the Dataset tab to browse, filter or export as JSON, CSV or Excel.

# 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 = {
    "listingType": "sale",
    "cities": "mumbai",
    "maxResults": 1000,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/squareyards-india-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 = {
    "listingType": "sale",
    "cities": "mumbai",
    "maxResults": 1000,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/squareyards-india-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 '{
  "listingType": "sale",
  "cities": "mumbai",
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call logiover/squareyards-india-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logiover/squareyards-india-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/KHUDISd6qQKwrXjIF/builds/UoeCsWxnbcRfvo2kK/openapi.json
