{
  "openapi": "3.0.1",
  "info": {
    "title": "SpareRoom Scraper",
    "description": "[💰 $0.85 / 1K] Extract UK & US flatshare listings from SpareRoom — rent, availability, room & property details, location, amenities, advertiser info, and photos. Covers rooms for rent, room-wanted, and buddy-up ads. Search by location and filters, or paste a SpareRoom search or listing URL.",
    "version": "1.0",
    "x-build-id": "8cee7mfDVpYwib8e0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~spareroom-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-spareroom-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/solidcode~spareroom-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-spareroom-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/solidcode~spareroom-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-spareroom-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": {
          "searchUrls": {
            "title": "SpareRoom URLs or locations",
            "type": "array",
            "description": "Paste one or more SpareRoom search-result URLs, individual listing URLs, or plain locations. A location can be a UK postcode area like \"E1\" or \"SW1\", or a US city or ZIP like \"Los Angeles\" or \"90210\". To get a search URL, set your filters on spareroom.co.uk (or spareroom.com) and copy the URL from the address bar. When you provide full URLs, the filter fields below are ignored.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "enum": [
              "auto",
              "uk",
              "us"
            ],
            "type": "string",
            "description": "Which SpareRoom site to use when you enter a plain location (not a full URL). Auto-detect guesses from the text (postcode area = UK, city/ZIP = US). Ignored for full URLs.",
            "default": "auto"
          },
          "adType": {
            "title": "Listing type",
            "enum": [
              "offered",
              "wanted",
              "buddyup"
            ],
            "type": "string",
            "description": "Which kind of ad to collect. 'Rooms for rent' are rooms offered by a landlord or current tenant; 'Room wanted' are people looking for a room; 'Buddy up' are people looking to find a place together.",
            "default": "offered"
          },
          "roomTypes": {
            "title": "Room type",
            "uniqueItems": true,
            "type": "array",
            "description": "Only include rooms of these types. Leave empty for all room types. Whole property returns entire flats and houses rather than single rooms, so any minimum or maximum rent you set is compared against the price of the whole place.",
            "items": {
              "type": "string",
              "enum": [
                "single",
                "double",
                "ensuite",
                "studio",
                "wholeProperty"
              ],
              "enumTitles": [
                "Single room",
                "Double room",
                "En-suite room",
                "Studio",
                "Whole property"
              ]
            }
          },
          "rentMin": {
            "title": "Minimum rent",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only include listings with rent at or above this amount (in the listing's own currency and rental period, e.g. per month). On a Whole property search this is the rent for the entire place, not a per-room share. Leave empty for no lower bound."
          },
          "rentMax": {
            "title": "Maximum rent",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only include listings with rent at or below this amount. On a Whole property search this is the rent for the entire place, not a per-room share — a whole flat or house costs several times what one room does, so a room-sized ceiling will filter out nearly every result. Raise it accordingly, or leave empty for no upper bound."
          },
          "availableFrom": {
            "title": "Available from",
            "type": "string",
            "description": "Narrow results to rooms with a move-in date around this one. SpareRoom treats it as a window rather than a hard cut-off, so rooms freeing up a few weeks either side come back too — read each row's availableFrom before you act on it. Use the format YYYY-MM-DD, e.g. 2026-09-01. Leave empty for any move-in date."
          },
          "maxResults": {
            "title": "Max results per search",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of listings to collect per URL or search. Set to 0 for unlimited (every listing the search returns). Results come in pages and the last page is always returned in full, so you may receive a few more than this number.",
            "default": 100
          },
          "includePhotos": {
            "title": "Include the full photo gallery",
            "type": "boolean",
            "description": "Every listing already comes with its full details (description, deposit, amenities, map coordinates, advertiser, and tenant preferences). Turn this on to also collect the complete photo gallery for each listing — every image, not just the cover photo. Galleries are large, so leave this off unless you need all the photos.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}