{
  "openapi": "3.0.1",
  "info": {
    "title": "Apartments.com.gh Scraper - Ghana Property Listings",
    "description": "Scrape apartments.com.gh, Ghana's property portal: rent, sale, short let, land and commercial listings with price in USD or cedis, rooms, address, photos and agencies. Filter by city, area, price and keyword. No login, no proxy.",
    "version": "0.1",
    "x-build-id": "wdqknOp7z237RQ4Ol"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~apartments-gh-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-apartments-gh-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/recordsdata~apartments-gh-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-apartments-gh-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/recordsdata~apartments-gh-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-apartments-gh-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": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "listings",
              "agencies"
            ],
            "type": "string",
            "description": "Listings returns one row per property. Agencies returns one row per real estate business from the site's Agent Finder directory (the directory lists 20 agents; individual agents are skipped unless you turn on Include individual agents).",
            "default": "listings"
          },
          "category": {
            "title": "Category",
            "enum": [
              "any",
              "44",
              "43",
              "47",
              "45",
              "50",
              "98",
              "49",
              "99",
              "100",
              "101",
              "48"
            ],
            "type": "string",
            "description": "Site category. Short lets are priced per day, rentals per month. Land and parking spots follow the same rules as the site.",
            "default": "any"
          },
          "city": {
            "title": "City",
            "enum": [
              "any",
              "accra",
              "tema",
              "kumasi",
              "takoradi",
              "cape-coast",
              "aburi"
            ],
            "type": "string",
            "description": "City filter. Accra holds about 90 percent of the listings.",
            "default": "any"
          },
          "area": {
            "title": "Area",
            "type": "string",
            "description": "Neighborhood from the site's own list, for example \"East Legon\", \"Cantonments\", \"Airport Residential Area\", \"Adenta\", \"Osu\" or \"Tema East\". An unknown name returns one free error row. Leave empty for the whole city.",
            "default": ""
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Words searched in the title and description, for example \"swimming pool\" or \"furnished studio\". Leave empty for no keyword.",
            "default": ""
          },
          "priceMin": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price. The site compares the raw number and ignores the currency, so 1000 matches both $1,000 and 1,000 cedis. Combine with Currency to keep one currency. 0 or empty means no minimum.",
            "default": 0
          },
          "priceMax": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price, compared as a raw number like the minimum. 0 or empty means no maximum.",
            "default": 0
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "any",
              "USD",
              "GHS"
            ],
            "type": "string",
            "description": "Keep only listings priced in one currency (US dollars or Ghana cedis). Listings without a price are dropped when you pick one.",
            "default": "any"
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only listings with at least this many bedrooms. Listings that do not state their bedrooms (studios, land) are dropped when you set a value. 0 or empty means no limit.",
            "default": 0
          },
          "photosOnly": {
            "title": "Only listings with photos",
            "type": "boolean",
            "description": "Skip listings that have no photo.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "price-low",
              "price-high"
            ],
            "type": "string",
            "description": "Order of the results. The price sorts compare the raw number and ignore the currency, and put listings without a price first when sorting from low to high.",
            "default": "newest"
          },
          "startUrls": {
            "title": "Start URLs or listing IDs",
            "type": "array",
            "description": "One entry per line: a listing page, a numeric listing ID such as 3412, a search or category page of apartments.com.gh (with its filters), or an agent profile page (/user/profile/...). Listing pages and IDs return the full listing page.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Open every listing page",
            "type": "boolean",
            "description": "Search results carry a 100 character description. Turn this on to open each listing page for the full description, the typed address, amenities and the property sub-type. Slower: one extra request per listing.",
            "default": false
          },
          "includeIndividuals": {
            "title": "Include individual agents",
            "type": "boolean",
            "description": "By default the output names only sellers whose name reads as a business, and individuals stay anonymous (isPrivateSeller is true). Turn on to also return the names and profile pages of individual sellers and agents. Phone numbers and e-mail addresses are never returned: the site masks them.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new results (monitor mode)",
            "type": "boolean",
            "description": "Skip listings delivered by an earlier run of the same search and charge only for new ones. The list of seen listings is kept in a named store of your account.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor label",
            "type": "string",
            "description": "Optional label to keep separate monitors for the same filters, for example \"accra-rentals-weekly\".",
            "default": ""
          },
          "resetSeen": {
            "title": "Reset monitor memory",
            "type": "boolean",
            "description": "Forget what earlier runs delivered for this search before starting.",
            "default": false
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}