{
  "openapi": "3.0.1",
  "info": {
    "title": "99acres Scraper — India Property for Sale & Rent",
    "description": "Scrape 99acres listings for sale or rent from search URLs or city/locality + filters: price in INR, price/sqft, BHK, area, locality, society, coordinates, amenities, photos, poster, RERA.",
    "version": "0.1",
    "x-build-id": "j1BH3Cih9HQp1IAmT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~99acres-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-99acres-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/tortuga~99acres-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-99acres-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/tortuga~99acres-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-99acres-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "99acres search pages with any filters set in the browser (copy the address bar, e.g. https://www.99acres.com/property-for-rent-in-pune-ffid or https://www.99acres.com/search/property/buy/pune?city=19&bedroom_num=2&preference=S&res_com=R), or single listing URLs (...-spid-V92517588), which return that listing with full details. Leave empty if you use Locations below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities or localities, one per line, as 99acres names them: 'Pune', 'Mumbai', 'Bangalore', 'Gurgaon', 'Baner, Pune', 'Andheri West, Mumbai'. Each is opened on 99acres (one page) to find its city/locality id and then searched with the filters below.",
            "items": {
              "type": "string"
            }
          },
          "listingType": {
            "title": "For sale or for rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Listings for sale or for rent (commercial: lease). Applies to Locations; start URLs keep their own.",
            "default": "sale"
          },
          "propertyCategory": {
            "title": "Residential or commercial",
            "enum": [
              "residential",
              "commercial"
            ],
            "type": "string",
            "description": "Residential properties (flats, houses, plots) or commercial ones (offices, shops, land, warehouses). Applies to Locations.",
            "default": "residential"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these property types (pick residential types for residential searches, commercial types for commercial ones). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "independent-house",
                "builder-floor",
                "residential-land",
                "studio",
                "serviced-apartment",
                "farm-house",
                "office-ready",
                "office-bare-shell",
                "coworking",
                "shop",
                "showroom",
                "commercial-land",
                "warehouse",
                "industrial-land",
                "agricultural-land",
                "factory",
                "hotel",
                "cold-storage",
                "guest-house"
              ],
              "enumTitles": [
                "Flat / apartment",
                "Independent house / villa",
                "Builder floor",
                "Residential land / plot",
                "Studio apartment",
                "Serviced apartment",
                "Farm house",
                "Office space (ready to move)",
                "Office space (bare shell)",
                "Co-working space",
                "Shop",
                "Showroom",
                "Commercial land",
                "Warehouse",
                "Industrial land",
                "Agricultural / farm land",
                "Factory",
                "Hotel / resort",
                "Cold storage",
                "Guest house / banquet hall"
              ]
            }
          },
          "bedrooms": {
            "title": "Bedrooms (BHK)",
            "type": "array",
            "description": "Number of bedrooms; pick one or more. '5+' means 5 or more. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5+"
              ],
              "enumTitles": [
                "1 BHK",
                "2 BHK",
                "3 BHK",
                "4 BHK",
                "5+ BHK"
              ]
            }
          },
          "minPrice": {
            "title": "Min budget (₹)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in rupees (sale price, or monthly rent for rentals), e.g. 5000000 for 50 lakh. 99acres widens budget filters slightly, so a few listings just outside the range can appear."
          },
          "maxPrice": {
            "title": "Max budget (₹)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in rupees (sale price, or monthly rent for rentals), e.g. 10000000 for 1 crore."
          },
          "minArea": {
            "title": "Min area (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum area in square feet."
          },
          "maxArea": {
            "title": "Max area (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum area in square feet."
          },
          "postedBy": {
            "title": "Posted by",
            "type": "array",
            "description": "Only listings posted by these advertiser types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "owner",
                "dealer",
                "builder"
              ],
              "enumTitles": [
                "Owner",
                "Dealer / agent",
                "Builder"
              ]
            }
          },
          "constructionStatus": {
            "title": "Construction status",
            "enum": [
              "readyToMove",
              "underConstruction"
            ],
            "type": "string",
            "description": "Ready to move or under construction. Leave empty for both."
          },
          "furnishing": {
            "title": "Furnishing",
            "type": "array",
            "description": "Furnishing status. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "furnished",
                "semifurnished",
                "unfurnished"
              ],
              "enumTitles": [
                "Furnished",
                "Semi-furnished",
                "Unfurnished"
              ]
            }
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "newest",
              "relevance",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Order of the results. Applies to Locations and to start URLs without a sort of their own. 'Newest first' is best for monitoring; 'Relevance' is the site's default order (paid featured listings first).",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many listings in total (across all searches). Keeps cost predictable. 99acres shows 25 listings per page; deep pages work (tested to 39,000+ listings in one search).",
            "default": 100
          },
          "includeDetails": {
            "title": "Include listing page details",
            "type": "boolean",
            "description": "Also open each listing's own page: project RERA registration number and status, full amenity lists (flat and society), flooring, overlooking, power backup, road width, price negotiable, gated community, tenant preference. One extra page per listing; charged as an extra 'detail' event.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new listings or listings whose price changed. Use with a Schedule; unchanged items are not charged. With this on, Max items is the number of listings checked per run (e.g. the newest 200).",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "99acres shows its own bot check to datacenter IPs, so Apify RESIDENTIAL proxy in India is the default (some residential requests also get the check; they are retried on a new IP). Residential traffic is billed by Apify per GB: about 0.15 MB per result page of 25 listings (about 6 MB per 1,000 listings) and about 0.1 MB per listing page with details.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}