{
  "openapi": "3.0.1",
  "info": {
    "title": "99acres Property Scraper - India Buy, Rent, Commercial & Land",
    "description": "Scrape 99acres listings in any Indian city: exact rupee price, BHK, carpet area, RERA ID, GPS, pre-leased commercial rent and the posting agent. Buy and rent.",
    "version": "1.0",
    "x-build-id": "o5HNjBnZEnwNsxW6T"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~99acres-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-99acres-property-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/sian.agency~99acres-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-99acres-property-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/sian.agency~99acres-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-99acres-property-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": {
          "operation": {
            "title": "🎯 What do you want to scrape?",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "Pick one per run. Property Search returns listing rows for a city, property type and bedroom count across buy, rent, commercial and land. Property Detail takes 99acres property URLs and adds the registry transaction rates for that locality, the 1/3/5-year price trend, the full construction specification and the posting dealer's profile.",
            "default": "search"
          },
          "cities": {
            "title": "🏙️ Indian cities",
            "type": "array",
            "description": "Cities to search, e.g. Mumbai, Delhi, Bangalore, Pune, Hyderabad, Chennai, Kolkata, Ahmedabad, Noida, Gurgaon, Thane. One search runs per city, so three cities return roughly three times the rows. Write Bangalore, not Bengaluru, and Delhi rather than New Delhi.",
            "default": [
              "Mumbai"
            ],
            "items": {
              "type": "string"
            }
          },
          "listingType": {
            "title": "🏷️ Buy or rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Whether to search properties for sale or properties for rent. Rent prices are monthly rupees.",
            "default": "sale"
          },
          "propertyType": {
            "title": "🏠 Property type",
            "enum": [
              "all-residential",
              "flats",
              "independent-house",
              "builder-floor",
              "penthouse",
              "farm-house",
              "residential-land",
              "paying-guest",
              "all-commercial",
              "office-space",
              "shop",
              "showroom",
              "warehouse",
              "commercial-land",
              "agricultural-land"
            ],
            "type": "string",
            "description": "Which kind of property to search. 99acres carries India's deepest commercial and plot inventory, so the commercial and land options here are as well stocked as the residential ones. If a city has no inventory of the type you pick, the run says so rather than quietly handing back a general city search.",
            "default": "all-residential"
          },
          "bedrooms": {
            "title": "🛏️ BHK",
            "enum": [
              "any",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Restrict to a bedroom count. Applies to residential property only - land, plots and commercial space have no BHK, so it is ignored for those types.",
            "default": "any"
          },
          "minAreaSqft": {
            "title": "📐 Minimum area (sqft)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only return properties at or above this area in square feet. Leave at 0 for no minimum. 99acres reports carpet, built-up and super built-up area as separate figures and the filter applies to the one the listing leads with.",
            "default": 0
          },
          "maxAreaSqft": {
            "title": "📐 Maximum area (sqft)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only return properties at or below this area in square feet. Leave at 0 for no maximum.",
            "default": 0
          },
          "maxResults": {
            "title": "🔢 Max listings",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop after this many listings across every city. Each page returns 25 to 27, so the run stops at the first page that crosses your limit.",
            "default": 50
          },
          "includeDetails": {
            "title": "📄 Fetch full property pages",
            "type": "boolean",
            "description": "Open each listing's own page for more than the result card carries. You get the government registry transaction rates for that locality and its 1, 3 and 5-year price trend. You also get the full specification: flooring, ceiling height, power backup, lifts, fire NOC, occupancy certificate and parking. The dealer's own profile comes with it, including their RERA registration and the localities they work. Costs one extra request per listing and bills the Property Detail event on top of the search…",
            "default": false
          },
          "propertyUrls": {
            "title": "🔗 Property URLs",
            "type": "array",
            "description": "Used by the Property Detail operation: 99acres property URLs to expand, in the www.99acres.com/...-spid-XXXXXXXX form you get from a listing page or from the propertyUrl column of a search run.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchUrls": {
            "title": "🌐 Search URLs",
            "type": "array",
            "description": "Paste 99acres result-page URLs instead of filling the fields above. Build the search you want on the site with any filters it offers - budget bands, possession, amenities, verified-only, posted-by - then paste the URL here and every one of those filters is honoured, because the page itself does the filtering.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}