{
  "openapi": "3.0.1",
  "info": {
    "title": "Sahibinden Scraper - Turkish Property Listings & Agent Contacts",
    "description": "Scrape sahibinden.com: satılık and kiralık listings across Turkey. Price, m², rooms, building age, heating, deed status, map coordinates, photos and agent phone numbers.",
    "version": "1.0",
    "x-build-id": "eL5A5njoZXNDbUYts"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~sahibinden-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-sahibinden-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~sahibinden-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-sahibinden-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~sahibinden-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-sahibinden-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 to run",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "Search Listings walks a sahibinden search or category URL and returns every listing on it. Listing Details takes listing URLs you already have and returns the full record for each — the whole attribute table, map coordinates, all photos and the agent's phone number.",
            "default": "search"
          },
          "searchUrl": {
            "title": "🔗 Sahibinden search URL",
            "pattern": "^https?://(www\\.)?sahibinden\\.com/.+",
            "type": "string",
            "description": "Set your filters on sahibinden.com, then paste the URL from the address bar. Anything the site can filter on works — category, city, district, price range, m², room count, building age, heating, from-owner vs from-agency. Examples: https://www.sahibinden.com/satilik-daire/istanbul · https://www.sahibinden.com/kiralik-daire/ankara-cankaya · https://www.sahibinden.com/satilik-arsa/izmir · https://www.sahibinden.com/kiralik-isyeri. Used by Search Listings only.",
            "default": "https://www.sahibinden.com/satilik-daire/istanbul"
          },
          "listingUrls": {
            "title": "📋 Listing URLs",
            "type": "array",
            "description": "sahibinden.com listing URLs in the /ilan/…/detay form — for example https://www.sahibinden.com/ilan/emlak-konut-satilik-mumin-altin-emlaktan-satilik-3-plus1-daire-1335723793/detay. Paste them, add them one by one, or point at a file of URLs. Full URLs only: this field validates each entry as a URL, so a bare listing ID is rejected before the run starts. Used by Listing Details only.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "🔢 Listings to return",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many listings to return from the search URL. sahibinden itself will not serve more than 1,000 results for any single filter, so ask for more than that and you get 1,000 — split the search by city or price band to go wider. Every 50 listings is one request.",
            "default": 100
          },
          "includeDetails": {
            "title": "📞 Add full details and agent phone",
            "type": "boolean",
            "description": "Off by default. Turn it on and every listing from the search is also opened on its own page, which adds the full 25-field attribute table (net m², building age, floor, heating, deed status, dues, furnished, parking…), the map coordinates, the whole photo gallery, the description, and the seller's name, agency, licence number and phone. This opens one extra page per listing and is charged as a Listing Detail on top of the listing itself.",
            "default": false
          },
          "sortBy": {
            "title": "↕️ Order",
            "enum": [
              "site-default",
              "date_desc",
              "date_asc",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Which listings come back first. Leave it on the URL's own order unless you want something specific — with a 1,000-row ceiling per search, 'Newest first' is what you want for a daily monitor and 'Cheapest first' for a deal sweep. These five are the orders sahibinden serves for every real-estate category; its m² sort is named differently per category and is deliberately not offered here.",
            "default": "site-default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}