{
  "openapi": "3.0.1",
  "info": {
    "title": "US Rental Listings & Real Estate Data API: Apartments, Houses",
    "description": "Real estate data API for US rentals: 950,000+ property listings (apartments, houses, rooms for rent) verified in the last 30 days, with photos, rent and coordinates. Search by ZIP, city or map, get rental data and rent comps, a weekly listings feed of new and removed rentals. For apps and AI agents.",
    "version": "0.1",
    "x-build-id": "2hkHbGmuB8uwrac4X"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/housingfeed~rental-listings-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-housingfeed-rental-listings-api",
        "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/housingfeed~rental-listings-api/runs": {
      "post": {
        "operationId": "runs-sync-housingfeed-rental-listings-api",
        "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/housingfeed~rental-listings-api/run-sync": {
      "post": {
        "operationId": "run-sync-housingfeed-rental-listings-api",
        "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": {
          "country": {
            "title": "Country",
            "enum": [
              "",
              "US",
              "JP",
              "BR",
              "ES",
              "UK",
              "DE",
              "FR",
              "CA",
              "AU",
              "BE",
              "PL",
              "AT",
              "IT",
              "PK",
              "RO",
              "CH",
              "PT",
              "AE",
              "NO",
              "BH",
              "EU",
              "EG",
              "QA",
              "AR",
              "SA",
              "MX",
              "IE",
              "PE",
              "EC",
              "NL"
            ],
            "type": "string",
            "description": "ISO country code. US is the maintained market (weekly). Other countries are older portal snapshots. Blank = all countries.",
            "default": ""
          },
          "state": {
            "title": "State / region",
            "type": "string",
            "description": "Two-letter US state code, for example NY, CA or TX. Blank = all states."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name, partial and case-insensitive, for example \"Austin\" or \"Brooklyn\", or a county such as \"Hudson County\". Combine with state to avoid same-name cities. Blank = all."
          },
          "zip": {
            "title": "ZIP / postal code",
            "type": "string",
            "description": "Exact 5-digit US ZIP code, for example \"10001\". Blank = all."
          },
          "minRent": {
            "title": "Min rent",
            "type": "integer",
            "description": "Minimum monthly rent in USD for US listings (local currency elsewhere), for example 1500."
          },
          "maxRent": {
            "title": "Max rent",
            "type": "integer",
            "description": "Maximum monthly rent in USD for US listings (local currency elsewhere), for example 3000."
          },
          "minBeds": {
            "title": "Min bedrooms",
            "type": "integer",
            "description": "Minimum bedrooms. 0 = studio. For exactly N bedrooms set minBeds and maxBeds to N."
          },
          "maxBeds": {
            "title": "Max bedrooms",
            "type": "integer",
            "description": "Maximum bedrooms. For exactly N bedrooms set minBeds and maxBeds to N."
          },
          "managerDirectOnly": {
            "title": "Manager-direct sources only",
            "type": "boolean",
            "description": "true = only listings published by property managers and owners on their own software or websites, which is often inventory the big portals do not carry. Each row's source_type says manager_direct or portal.",
            "default": false
          },
          "includePortals": {
            "title": "Include portal rows (research only)",
            "type": "boolean",
            "description": "From 1 December 2026 a US run returns the HousingFeed feed: listings property managers and owners publish on their own software and sites, cleaned for display, each row licensed for public display. true = also return rows from consumer portals (older snapshots) as research data, without the display licence.",
            "default": false
          },
          "availableNow": {
            "title": "Available now only",
            "type": "boolean",
            "description": "true = only units marked available now.",
            "default": false
          },
          "withPhotos": {
            "title": "With photos only",
            "type": "boolean",
            "description": "true = only listings with at least one photo (the image field is set).",
            "default": false
          },
          "propertyType": {
            "title": "Property type",
            "type": "array",
            "description": "Only these property types: apartment, house, condo, townhouse, room (any combination). Listings whose source does not state a type are left out of a filtered run. Needs a city, ZIP or map box, or managerDirectOnly: a whole state or the whole US on every source is refused (too slow). Empty = every type.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "house",
                "condo",
                "townhouse",
                "room"
              ],
              "enumTitles": [
                "Apartment",
                "House",
                "Condo",
                "Townhouse",
                "Room"
              ]
            }
          },
          "timeWindow": {
            "title": "Time window",
            "enum": [
              "",
              "new_7d",
              "new_30d",
              "removed_7d",
              "removed_30d"
            ],
            "type": "string",
            "description": "Simplest way to get changes instead of everything live. new_7d = listings first seen in the last 7 days (schedule weekly, on Wednesdays, for a delta feed). removed_30d / removed_7d = listings confirmed gone at the source, each with removed_at. Blank = all live listings. newSinceDays or removedSinceDays, if set, take precedence.",
            "default": ""
          },
          "countOnly": {
            "title": "Count only",
            "type": "boolean",
            "description": "true = return one row with the number of matching listings (matched, estimated, at_least, query) instead of the listings, charged as one result. Use it for questions like how many 2-bedroom listings under $2,000 are in a ZIP, or to compare rent bands and neighborhoods cheaply.",
            "default": false
          },
          "newSinceDays": {
            "title": "New in the last N days (delta feed)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Advanced form of timeWindow: only listings first seen in the last N days (1-365). Sources are re-read weekly, so new listings land Sunday to Tuesday (UTC). Dedupe on the id field."
          },
          "removedSinceDays": {
            "title": "Removed in the last N days",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Advanced form of timeWindow: listings confirmed gone at the source in the last N days (1-90), each with removed_at, newest first, instead of live listings."
          },
          "freshDays": {
            "title": "Max age of a listing (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Exclude listings last verified at the source more than N days ago. Default 30 for the US (the same window HousingFeed uses for every feed it delivers) and 90 for other countries, whose portals are periodic snapshots. Set 0 to include everything ever collected. Every row carries scraped_at, first_seen_at and last_seen_at so you can judge freshness yourself."
          },
          "minLat": {
            "title": "Min latitude",
            "type": "string",
            "description": "South edge of a bounding box, decimal degrees (e.g. 25.70). Set any combination of the four bounds; when a geo filter is used, only listings with exact coordinates are returned. Combines with all other filters."
          },
          "maxLat": {
            "title": "Max latitude",
            "type": "string",
            "description": "North edge of the bounding box (e.g. 25.86)."
          },
          "minLng": {
            "title": "Min longitude",
            "type": "string",
            "description": "West edge of the bounding box (e.g. -80.32). Boxes crossing the 180° antimeridian are not supported."
          },
          "maxLng": {
            "title": "Max longitude",
            "type": "string",
            "description": "East edge of the bounding box (e.g. -80.10)."
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "best",
              "newest",
              "oldest",
              "cheapest",
              "rent_desc",
              "stable"
            ],
            "type": "string",
            "description": "best (default): listings with coordinates and a photo first, freshest first, mixed across sources. newest, oldest, cheapest or rent_desc (most expensive first) otherwise. stable: a fixed order for paging a whole market across runs with cursor.",
            "default": "best"
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 25000,
            "type": "integer",
            "description": "How many listings to return, 1 to 25000 (default 25). You are charged per returned listing. A whole city usually fits in one run; for more, set sort to stable and use cursor.",
            "default": 25
          },
          "cursor": {
            "title": "Cursor (next page)",
            "type": "string",
            "description": "Leave empty on the first run. To get the next page, paste nextCursor from the previous run's OUTPUT record and keep every other filter the same. Every listing comes back exactly once across pages. Sets sort to stable."
          },
          "refresh": {
            "title": "Live refresh (slower)",
            "type": "boolean",
            "description": "Re-scrape the portal platforms live instead of serving the database. Slow (about 5 minutes) and covers only each portal's fixed seed cities, so it is ignored when you set a ZIP, city, state or coordinate box (those are served from the database). Leave off for normal queries.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}