# India Property Sold Prices - Real Estate Data (`swerve/india-sold-prices`) Actor

Actual registered sale prices from India's government registration department (Maharashtra IGR). Real recorded deal amounts and market values, with buyer, seller, property and date - not asking prices.

- **URL**: https://apify.com/swerve/india-sold-prices.md
- **Developed by:** [Swerve](https://apify.com/swerve) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 0 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## India Property Sold Prices - Official Registered Deals (Maharashtra)

Get the **actual registered sale prices** of property in India, straight from the government's registration department (IGR). These are the real amounts recorded on the deed (the "consideration"), not asking prices, so they are the ground truth for valuation, comparables and market analysis.

The data is public but painful to get by hand: it is one lookup at a time, behind an image captcha, with the price hidden inside a separate "Index II" document. This actor does the whole flow for you and returns clean rows with the price attached.

Coverage starts with **Mumbai** (Mumbai Suburban and Mumbai City districts) in **Maharashtra**. More districts and states are being added.

### What you get per deal

The document number and date, the sub-registrar office, the deal type, the buyer(s) and seller(s), the property description, and the two numbers that matter:

- **salePrice** - the actual registered amount (मोबदला / consideration)
- **marketValue** - the government's assessed market value (बाजारभाव)

```json
{
  "state": "maharashtra",
  "district": "Mumbai Suburban",
  "districtLocal": "मुंबई उपनगर जिल्हा",
  "village": "Andheri",
  "year": 2023,
  "documentNumber": "1613",
  "registrationDate": "30/01/2023",
  "sroName": "सह दु.नि.मुंबई 10",
  "documentType": "करारनामा",
  "salePrice": 33508032,
  "marketValue": 33508032,
  "propertyDescription": "शॉप नं. 2, तळ मजला, बेला कासा, अंधेरी",
  "sellerNames": "कोणार्क बेला कासा एलएलपी ...",
  "buyerNames": "पी एच कन्स्ट्रक्शन ...",
  "sourceUrl": "https://freesearchigrservice.maharashtra.gov.in/",
  "scrapedAt": "2026-07-01T16:12:50.000Z"
}
````

### Inputs

| Input | What it does |
|---|---|
| `state` | The state to search. Maharashtra is supported first. |
| `district` | The Mumbai district, picked from a dropdown: Mumbai Suburban or Mumbai City. |
| `villageName` | The locality within the district, in English (for example Andheri, Bandra, Borivali, Goregaon). |
| `year` | The registration year (2010-2026). Data is near real-time - documents appear within days. |
| `dealCategory` | Which registrations to return: **Sales** (sale deeds + purchase agreements, the default), Rentals, Mortgages, Gifts, or All. |
| `maxItems` | Stop after this many records. No hard cap - set high to pull the whole area + year. |
| `enrichDetails` | Include the real price by opening each record's Index II. On by default. Turn off for a fast list of deals without prices. |
| `propertyNo` | Advanced. Leave blank to sweep the whole locality; set a specific CTS / survey / plot number to look up one property. |
| `twoCaptchaApiKey` | Optional. Use your own 2captcha.com key; otherwise the actor's built-in solver is used. |
| `proxyConfiguration` | India residential proxy (required, the portal only answers Indian IPs). Defaults to Apify Residential in India. |

### How it works

The Maharashtra IGR free-search portal only answers Indian IPs and is a classic captcha-gated, one-record-at-a-time search. The actor:

1. Loads the portal through an India residential proxy on a sticky session.
2. Selects the year, district and locality, and solves the image captcha.
3. Because the search matches on a property number, it sweeps digit tokens (1-9) and de-duplicates, which together cover the whole locality for the year.
4. Pages through every result (one captcha unlocks all pages).
5. Opens each deal's Index II to read the registered amount and market value.
6. Filters to the deal type you asked for and streams rows out as it goes.

### Freshness

Registrations show up within days. A search for the current year returns deals registered in the last week.

### Limits and notes

- One state + district + locality + year per run (the source searches one year at a time).
- Names and property descriptions are in Marathi, exactly as recorded on the deed.
- The grid mixes deal types; use `dealCategory` to keep only what you want. Sales are sale deeds (सेल डीड) and purchase agreements (करारनामा).

### Use cases

- Valuation and comparables ("what did flats in this building actually sell for").
- Market analysis and price trends by locality and year.
- Lead generation and diligence for brokers, lenders, proptech and investors.

# Actor input Schema

## `state` (type: `string`):

Indian state whose registration department to search. Maharashtra (Mumbai, Pune, Thane, Nagpur…) is supported first; more states are being added.

## `district` (type: `string`):

The Mumbai district to search. Andheri, Bandra, Borivali, Goregaon, Malad, Kurla etc. are in Mumbai Suburban; Fort, Colaba, Worli, Dadar etc. are in Mumbai City. (More districts across Maharashtra are being added.)

## `villageName` (type: `string`):

The locality to search within the district, in English. Examples (Mumbai Suburban): Andheri, Bandra, Borivali, Goregaon, Malad, Kurla. Type at least 3 letters.

## `year` (type: `string`):

The year the deals were registered. Data is near real-time (documents appear within days). One year per run.

## `dealCategory` (type: `string`):

Which registrations to return. 'Sales' = flat purchase agreements + sale deeds (the usual comps). 'All' returns everything (rentals, mortgages, gifts, redevelopment, etc.).

## `maxItems` (type: `integer`):

Optional cap on results. Leave blank to scrape ALL matching results (recommended); set a number only to limit cost.

## `enrichDetails` (type: `boolean`):

Opens each record's Index II to pull the actual registered amount (consideration) and the government market value. This is the whole point — leave it on. Turn off only for a fast list of deals without prices.

## `propertyNo` (type: `string`):

Leave blank to sweep the whole area (recommended). Enter a CTS / survey / plot number here only to look up one specific property.

## `twoCaptchaApiKey` (type: `string`):

Optional. Provide your own 2captcha.com API key to solve the portal captcha on your account. If left blank, the actor uses its built-in solver.

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

The registration portal only responds to Indian IPs, so an India residential proxy is required. Defaults to Apify Residential in India.

## Actor input object example

```json
{
  "state": "maharashtra",
  "district": "Mumbai Suburban",
  "villageName": "Andheri",
  "year": "2025",
  "dealCategory": "sales",
  "maxItems": 200,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountryCode": "IN"
  }
}
```

# 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 = {
    "district": "Mumbai Suburban",
    "villageName": "Andheri",
    "year": "2025",
    "dealCategory": "sales",
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountryCode": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("swerve/india-sold-prices").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 = {
    "district": "Mumbai Suburban",
    "villageName": "Andheri",
    "year": "2025",
    "dealCategory": "sales",
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountryCode": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("swerve/india-sold-prices").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 '{
  "district": "Mumbai Suburban",
  "villageName": "Andheri",
  "year": "2025",
  "dealCategory": "sales",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountryCode": "IN"
  }
}' |
apify call swerve/india-sold-prices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=swerve/india-sold-prices",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "India Property Sold Prices - Real Estate Data",
        "description": "Actual registered sale prices from India's government registration department (Maharashtra IGR). Real recorded deal amounts and market values, with buyer, seller, property and date - not asking prices.",
        "version": "0.1",
        "x-build-id": "wQnjYUndjNrmCQdbm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/swerve~india-sold-prices/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-swerve-india-sold-prices",
                "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/swerve~india-sold-prices/runs": {
            "post": {
                "operationId": "runs-sync-swerve-india-sold-prices",
                "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/swerve~india-sold-prices/run-sync": {
            "post": {
                "operationId": "run-sync-swerve-india-sold-prices",
                "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",
                "required": [
                    "state",
                    "district",
                    "villageName",
                    "year"
                ],
                "properties": {
                    "state": {
                        "title": "State",
                        "enum": [
                            "maharashtra"
                        ],
                        "type": "string",
                        "description": "Indian state whose registration department to search. Maharashtra (Mumbai, Pune, Thane, Nagpur…) is supported first; more states are being added.",
                        "default": "maharashtra"
                    },
                    "district": {
                        "title": "District",
                        "enum": [
                            "Mumbai Suburban",
                            "Mumbai City"
                        ],
                        "type": "string",
                        "description": "The Mumbai district to search. Andheri, Bandra, Borivali, Goregaon, Malad, Kurla etc. are in Mumbai Suburban; Fort, Colaba, Worli, Dadar etc. are in Mumbai City. (More districts across Maharashtra are being added.)",
                        "default": "Mumbai Suburban"
                    },
                    "villageName": {
                        "title": "Area / locality",
                        "type": "string",
                        "description": "The locality to search within the district, in English. Examples (Mumbai Suburban): Andheri, Bandra, Borivali, Goregaon, Malad, Kurla. Type at least 3 letters.",
                        "default": "Andheri"
                    },
                    "year": {
                        "title": "Registration year",
                        "enum": [
                            "2026",
                            "2025",
                            "2024",
                            "2023",
                            "2022",
                            "2021",
                            "2020",
                            "2019",
                            "2018",
                            "2017",
                            "2016",
                            "2015",
                            "2014",
                            "2013",
                            "2012",
                            "2011",
                            "2010"
                        ],
                        "type": "string",
                        "description": "The year the deals were registered. Data is near real-time (documents appear within days). One year per run.",
                        "default": "2025"
                    },
                    "dealCategory": {
                        "title": "Deal type",
                        "enum": [
                            "sales",
                            "rentals",
                            "mortgages",
                            "gifts",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which registrations to return. 'Sales' = flat purchase agreements + sale deeds (the usual comps). 'All' returns everything (rentals, mortgages, gifts, redevelopment, etc.).",
                        "default": "sales"
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Optional cap on results. Leave blank to scrape ALL matching results (recommended); set a number only to limit cost."
                    },
                    "enrichDetails": {
                        "title": "Include the sale price (recommended)",
                        "type": "boolean",
                        "description": "Opens each record's Index II to pull the actual registered amount (consideration) and the government market value. This is the whole point — leave it on. Turn off only for a fast list of deals without prices.",
                        "default": true
                    },
                    "propertyNo": {
                        "title": "Specific property number (advanced)",
                        "type": "string",
                        "description": "Leave blank to sweep the whole area (recommended). Enter a CTS / survey / plot number here only to look up one specific property."
                    },
                    "twoCaptchaApiKey": {
                        "title": "Your 2captcha API key (optional)",
                        "type": "string",
                        "description": "Optional. Provide your own 2captcha.com API key to solve the portal captcha on your account. If left blank, the actor uses its built-in solver."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "The registration portal only responds to Indian IPs, so an India residential proxy is required. Defaults to Apify Residential in India.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountryCode": "IN"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
