{
  "openapi": "3.0.1",
  "info": {
    "title": "Apartments.com  URL | Keyword | Rich Output",
    "description": "From $1.5/1K. Extract Apartments.com rental listings at lower cost. Search by city, ZIP, neighborhood, or address, paste result/property URLs, or use autocomplete. Get rent, floorplans, units, amenities, fees, schools, transit, ratings, reviews, photos, phone, and GPS data.",
    "version": "2.0",
    "x-build-id": "x7eVuDfzEPjdmLhOF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~apartments-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-apartments-com-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/abotapi~apartments-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-apartments-com-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/abotapi~apartments-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-apartments-com-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url",
              "autocomplete"
            ],
            "type": "string",
            "description": "How to start. 'search' builds result pages from city / ZIP / address terms. 'url' scrapes Apartments.com result or property URLs you paste. 'autocomplete' returns location suggestions (region IDs, coordinates, bounding boxes) for each term, with no listing scrape.",
            "default": "search"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "City, ZIP, neighborhood, or street address terms, one per line (e.g. 'Austin, TX', '78701', 'Brooklyn, NY'). Each is resolved through Apartments.com's location service. Used by 'search' and 'autocomplete' modes; ignored in 'url' mode.",
            "items": {
              "type": "string"
            }
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "any",
              "apartments",
              "houses",
              "condos",
              "townhomes"
            ],
            "type": "string",
            "description": "Limit to a rental type. 'Any' returns all types.",
            "default": "any"
          },
          "bedrooms": {
            "title": "Bedrooms",
            "enum": [
              "any",
              "studio",
              "1",
              "2",
              "3",
              "4"
            ],
            "type": "string",
            "description": "Minimum bedroom count. 'Any' applies no bedroom filter.",
            "default": "any"
          },
          "minRent": {
            "title": "Min rent (USD/month)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest monthly rent. Leave empty for no minimum."
          },
          "maxRent": {
            "title": "Max rent (USD/month)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest monthly rent. Leave empty for no maximum."
          },
          "lifestyle": {
            "title": "Lifestyle / amenity",
            "enum": [
              "none",
              "pet-friendly",
              "luxury",
              "cheap",
              "furnished",
              "short-term",
              "utilities-included",
              "gated",
              "senior-housing",
              "student-housing",
              "income-restricted"
            ],
            "type": "string",
            "description": "Optional single lifestyle filter. Applied only when property type is 'Any' (Apartments.com does not combine a type prefix with these). 'None' applies no lifestyle filter.",
            "default": "none"
          },
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Apartments.com result URLs (e.g. https://www.apartments.com/austin-tx/2-bedrooms/) or property URLs (e.g. https://www.apartments.com/the-grove-houston-tx/9cwjc35/), one per line. Multi-URL supported. Search-mode filters are ignored. Pagination starts at the page in the URL and walks forward.",
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch full property details",
            "type": "boolean",
            "description": "When on, each property is enriched with its detail page: floorplan units, full amenities, pet & parking policy, fees, schools, transit, walk score, office hours, ratings, reviews, and description. When off, only the fast result-card fields are returned (name, address, rent range, beds, phone, rating, photo).",
            "default": true
          },
          "maxPages": {
            "title": "Max result pages per location/URL",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many result pages to walk per location or start URL (about 40 properties per page).",
            "default": 1
          },
          "maxListings": {
            "title": "Max properties (0 = unlimited)",
            "minimum": 0,
            "type": "integer",
            "description": "Global cap on properties across all locations/URLs. 0 means no cap (bounded by maxPages).",
            "default": 0
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential (the default) is the most reliable: the actor automatically varies the connection across many regions and falls back to an alternate network when one is busy, so runs stay stable at any scale. Residential needs a paid Apify plan. On the free plan, or to lower cost, switch to Datacenter (it works when connections are healthy and falls back to the alternate network otherwise). Apartments.com shows the same United States listings regardless of the connecting region.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}