{
  "openapi": "3.0.1",
  "info": {
    "title": "US Rentals Scraper - Apartments.com & Realtor.com",
    "description": "Scrape US rental listings from Apartments.com and Realtor.com in one run. Returns address, coordinates, rent range, beds, baths, square feet, property type, year built, pet policy, amenities, floor plans, photos, leasing phone and days on market. Search by city, ZIP or listing URL.",
    "version": "1.0",
    "x-build-id": "szMeOlC176AIHntkh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thirdwatch~us-rentals-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thirdwatch-us-rentals-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/thirdwatch~us-rentals-scraper/runs": {
      "post": {
        "operationId": "runs-sync-thirdwatch-us-rentals-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/thirdwatch~us-rentals-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-thirdwatch-us-rentals-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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Locations, ZIP codes or listing URLs",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "One entry per search. Accepts a city and state (Austin, TX), a ZIP code (78704), an Apartments.com or Realtor.com search URL, or a single listing URL (which is scraped as one detailed row). Bare ZIP codes are resolved to a city and state before Apartments.com is searched.",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 300,
              "pattern": "\\S"
            },
            "default": [
              "Austin, TX"
            ]
          },
          "source": {
            "title": "Source site",
            "enum": [
              "apartments",
              "realtor",
              "both"
            ],
            "type": "string",
            "description": "Which site to scrape. `both` runs each query against Apartments.com and Realtor.com and returns a merged, de-duplicated dataset with a `source` field on every row.",
            "default": "both"
          },
          "maxResults": {
            "title": "Max results per query per source",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many listings to return for each entry in `queries`, per source. With `source: both` a value of 15 returns up to 30 rows per query. Use several ZIP codes or neighbourhoods instead of one huge city to get past each site's pagination ceiling.",
            "default": 50
          },
          "includeDetails": {
            "title": "Fetch full listing details",
            "type": "boolean",
            "description": "Visit each listing page to add year built, long description, the full photo set, pet policy, complete amenity list, per-unit floor plans and the leasing office phone number. Slower and more expensive than listing-only mode.",
            "default": false
          },
          "maxDetailPages": {
            "title": "Max detail pages per query per source",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Caps how many listings get the extra detail-page visit when `includeDetails` is on. Leave empty to enrich every listing returned."
          },
          "minPrice": {
            "title": "Min monthly rent (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Minimum monthly rent. Applied as a site filter where the site supports it, and re-checked on every row before it is saved."
          },
          "maxPrice": {
            "title": "Max monthly rent (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum monthly rent. Applied as a site filter where the site supports it, and re-checked on every row before it is saved."
          },
          "minBeds": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Minimum number of bedrooms. Use 0 to include studios."
          },
          "maxBeds": {
            "title": "Max bedrooms",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Maximum number of bedrooms."
          },
          "minBaths": {
            "title": "Min bathrooms",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Minimum number of bathrooms."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Leave empty for every rental property type. Each option maps to the matching filter on both sites.",
            "items": {
              "type": "string",
              "enum": [
                "apartments",
                "houses",
                "condos",
                "townhomes"
              ],
              "enumTitles": [
                "Apartments / apartment communities",
                "Houses",
                "Condos",
                "Townhomes"
              ]
            },
            "default": []
          },
          "proxyConfiguration": {
            "title": "Proxy configuration (Apartments.com)",
            "type": "object",
            "description": "Apartments.com only serves listings to US IPs. The default is the cheap US datacenter pool, which the Actor automatically escalates to US residential if datacenter starts getting denied. Pin a group here only if you want to force one pool and skip that fallback. Realtor.com always goes through the Apify Unblocker group, which is the only route that is not rate-limited; supplying custom `proxyUrls` overrides both.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}