{
  "openapi": "3.0.1",
  "info": {
    "title": "Lamudi Indonesia Property Scraper",
    "description": "[💰 $1.0 / 1K] Extract property listings from Lamudi Indonesia (lamudi.co.id) — houses, apartments, land, and commercial for sale or rent, with prices in IDR, beds, baths, area, photos, geolocation, and agent and agency details. Search by city and filters, or paste Lamudi URLs directly.",
    "version": "1.0",
    "x-build-id": "8RFPrm10nvVM5mRVu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~lamudi-co-id-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-lamudi-co-id-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/solidcode~lamudi-co-id-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-lamudi-co-id-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/solidcode~lamudi-co-id-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-lamudi-co-id-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": {
          "purpose": {
            "title": "Buy or Rent",
            "enum": [
              "for-sale",
              "for-rent"
            ],
            "type": "string",
            "description": "Are you looking for properties for sale or for rent? Ignored when Start URLs are provided."
          },
          "location": {
            "title": "City / Region",
            "type": "string",
            "description": "City or region to search, e.g. \"Jakarta\", \"Bandung\", \"Surabaya\", \"Bali\", \"Tangerang\". Provinces work too, e.g. \"Jawa Barat\", \"Sulawesi Selatan\". Type \"Indonesia\" to search the whole country. Ignored when Start URLs are provided."
          },
          "propertyType": {
            "title": "Property Type",
            "enum": [
              "any",
              "house",
              "townhouse",
              "villa",
              "room",
              "house-and-lot",
              "apartment",
              "land",
              "commercial",
              "office"
            ],
            "type": "string",
            "description": "Filter by property category. 'House' returns standalone houses only. Townhouses, villas and boarding houses (kos) are separate categories on Lamudi, so pick 'House, Townhouse, Villa & Kos' if you want all four together. Choose 'Any' to include every category."
          },
          "searchQuery": {
            "title": "Keyword",
            "type": "string",
            "description": "Optional keyword — area, project, or development name, e.g. \"BSD City\", \"Kemang\", \"Pantai Indah Kapuk\". Leave empty for no keyword filter."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Power-user input. Paste Lamudi search-result URLs (e.g. https://www.lamudi.co.id/en/for-sale/jakarta/house/) or individual property URLs directly. When provided, these override the Buy/Rent, City, Property Type, Keyword, and Filters settings above.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Minimum Price (IDR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings at or above this price in Indonesian Rupiah (e.g. 1000000000 for 1 billion IDR). Leave empty for no minimum. On Rent searches this is matched against the advertised rent for the period shown in the pricePeriod column (month or year), not the property's sale value. Note: the price range is applied after listings are retrieved (Lamudi has no price filter in the URL), so a very tight range makes the run read through more pages to fill your Max Results — the run log says how many pages held no match. Listings where Lamudi publishes no price at all are kept, and the run log says how many."
          },
          "priceMax": {
            "title": "Maximum Price (IDR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings at or below this price in Indonesian Rupiah. Leave empty for no maximum. On Rent searches this is matched against the advertised rent (see the Minimum Price note). Applied after listings are retrieved."
          },
          "bedroomsMin": {
            "title": "Minimum Bedrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Only include properties with at least this many bedrooms (0 = studio). Leave empty for any. Ignored for Land and most Commercial searches."
          },
          "bathroomsMin": {
            "title": "Minimum Bathrooms",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Only include properties with at least this many bathrooms. Leave empty for any."
          },
          "areaMin": {
            "title": "Minimum Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties at or above this floor or land area in square meters. Leave empty for no minimum."
          },
          "areaMax": {
            "title": "Maximum Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include properties at or below this area in square meters. Leave empty for no maximum."
          },
          "sort": {
            "title": "Sort Order",
            "enum": [
              "most-relevant",
              "newest",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "How Lamudi orders results before we collect them."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of properties to collect across all searches and URLs. Set 0 for unlimited. Results are collected in full pages, so the final page may overshoot this cap by a few records. Very large or unlimited runs are bounded by a built-in safety ceiling of roughly 60,000 properties per search, well above any normal search's inventory."
          },
          "fetchDetails": {
            "title": "Fetch full details (slower)",
            "type": "boolean",
            "description": "Open each listing's own page to collect the full photo gallery, land area, the agent's phone number, and the publication date for older listings that do not show one in search results (common on Rent searches). This visits one extra page per property, so runs take longer. Leave off for faster runs that still include the cover photo, price, beds, baths, area, location, and agency."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}