{
  "openapi": "3.0.1",
  "info": {
    "title": "Rental Price Analyzer — Rentometer Alternative",
    "description": "Analyze rental prices from a subject property and comparables you supply. Get a recommended monthly rent, median, weighted mean, percentile range, and similarity scores while retaining the source observations.",
    "version": "0.1",
    "x-build-id": "pKthdqf9WLUDcICKl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~rentometer-alternative/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-rentometer-alternative",
        "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/khadinakbar~rentometer-alternative/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-rentometer-alternative",
        "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/khadinakbar~rentometer-alternative/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-rentometer-alternative",
        "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": [
          "subject",
          "comparables"
        ],
        "properties": {
          "subject": {
            "title": "Subject property",
            "type": "object",
            "description": "Property context used to score comparable rentals, for example an address with bedrooms and coordinates. Provide only facts you are authorized to process; a working example is {\"address\":\"15 Broad St, Boston, MA\",\"bedrooms\":2,\"bathrooms\":1,\"propertyType\":\"apartment\"}. Coordinates are optional but enable distance filtering when comparable coordinates are also supplied. This is not a request for the Actor to discover a property or retrieve private records.",
            "default": {}
          },
          "comparables": {
            "title": "Authorized rental comparables",
            "type": "array",
            "description": "Rental listings or observations you are authorized to analyze, with monthly rent and optional property facts. Supply at least three candidates; each item can include rentMonthly, bedrooms, bathrooms, propertyType, squareFeet, observedAt, sourceUrl, and coordinates. The prefill demonstrates three USD apartments near one subject property. This is not a place to submit private tenant, owner, credit, or payment information.",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "title": "Comparable ID",
                  "description": "Optional caller identifier for this comparable row.",
                  "type": "string"
                },
                "address": {
                  "title": "Comparable address",
                  "description": "Optional public or authorized address text for this comparable row.",
                  "type": "string"
                },
                "rentMonthly": {
                  "title": "Monthly rent",
                  "description": "Positive monthly asking or observed rent in the selected currency.",
                  "type": "number",
                  "minimum": 1
                },
                "currency": {
                  "title": "Currency",
                  "description": "Optional three-letter currency; omit to inherit the report currency.",
                  "type": "string"
                },
                "bedrooms": {
                  "title": "Bedrooms",
                  "description": "Optional bedroom count from zero to twenty.",
                  "type": "number",
                  "minimum": 0,
                  "maximum": 20
                },
                "bathrooms": {
                  "title": "Bathrooms",
                  "description": "Optional bathroom count from zero to twenty.",
                  "type": "number",
                  "minimum": 0,
                  "maximum": 20
                },
                "propertyType": {
                  "title": "Property type",
                  "description": "Optional normalized property type such as apartment or house.",
                  "type": "string"
                },
                "squareFeet": {
                  "title": "Square feet",
                  "description": "Optional positive interior square-foot value.",
                  "type": "number",
                  "minimum": 1
                },
                "latitude": {
                  "title": "Latitude",
                  "description": "Optional WGS84 latitude used only for distance filtering.",
                  "type": "number",
                  "minimum": -90,
                  "maximum": 90
                },
                "longitude": {
                  "title": "Longitude",
                  "description": "Optional WGS84 longitude used only with latitude for distance filtering.",
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180
                },
                "observedAt": {
                  "title": "Observed at",
                  "description": "Optional ISO 8601 time at which this rental observation was collected.",
                  "type": "string"
                },
                "sourceUrl": {
                  "title": "Source URL",
                  "description": "Optional public source URL retained for provenance when it is valid.",
                  "type": "string"
                },
                "sourceLabel": {
                  "title": "Source label",
                  "description": "Optional short source or collection label retained for provenance.",
                  "type": "string"
                }
              }
            },
            "default": []
          },
          "currency": {
            "title": "Analysis currency",
            "type": "string",
            "description": "Three-letter currency used for this one report, for example USD. A comparable with no currency inherits this value, while a comparable with another currency is excluded rather than converted. Defaults to USD. This is not a currency conversion service or an exchange-rate assumption.",
            "default": "USD"
          },
          "analysisMethod": {
            "title": "Rent estimate method",
            "enum": [
              "weightedMedian",
              "weightedMean"
            ],
            "type": "string",
            "description": "Select how the reported recommendation is calculated from accepted comparable rents. Use weightedMedian for a robust default or weightedMean when a score-weighted average is required. Defaults to weightedMedian and still returns both statistics for review. This is not a vendor AVM or an appraisal methodology.",
            "default": "weightedMedian"
          },
          "maxComparableAgeDays": {
            "title": "Maximum comparable age in days",
            "type": "integer",
            "description": "Ignore a comparable when its observedAt value is older than this many days. Enter an integer from 1 to 1825; 365 keeps a one-year lookback. Defaults to 365 and only applies to comparables that include a valid observedAt timestamp. This is not a guarantee that a listing is currently available.",
            "default": 365
          },
          "maxComparableDistanceMiles": {
            "title": "Maximum comparable distance in miles",
            "type": "number",
            "description": "Maximum distance allowed when both the subject and a comparable have latitude and longitude. Enter a value from 0.1 to 100; 5 is a practical local-market default. Defaults to 5 and does not exclude a comparable whose coordinates are unavailable. This is not a geocoder and it never guesses missing coordinates.",
            "default": 5
          },
          "minimumComparableScore": {
            "title": "Minimum similarity score",
            "type": "number",
            "description": "Lowest 0–1 similarity score a comparable must meet after optional bedroom, bathroom, type, size, and distance checks. Enter a value from 0.1 to 1; 0.5 retains moderately similar rentals while rejecting weak matches. Defaults to 0.5. This is a transparent heuristic, not an independently validated accuracy score.",
            "default": 0.5
          },
          "outlierStrategy": {
            "title": "Outlier handling",
            "enum": [
              "iqr",
              "none"
            ],
            "type": "string",
            "description": "Choose whether to exclude rents outside the 1.5×IQR range before calculating the report. Use iqr for the default robust treatment or none to retain every accepted comparable. Defaults to iqr and reports the excluded count. This is not a hidden adjustment to individual rents.",
            "default": "iqr"
          },
          "maxComparablesInReport": {
            "title": "Maximum comparable rows in report",
            "type": "integer",
            "description": "Maximum accepted comparable rows retained in the output, ranked by similarity. Enter an integer from 3 to 50; the analysis can evaluate more candidates but keeps the report compact. Defaults to 25. This is not a source-collection limit or a guarantee of a minimum number of matches.",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}