{
  "openapi": "3.0.1",
  "info": {
    "title": "HiPages Scraper: Business Listings, Contacts & Reviews",
    "description": "Scrape business listings from HiPages Australia by category, location, or URL. Extract business names, contact details, ratings, customer reviews, images, service areas, and other structured business information.",
    "version": "0.3",
    "x-build-id": "k095M4x5lGOPKkbZf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~hipages-business-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-hipages-business-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~hipages-business-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-hipages-business-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~hipages-business-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-hipages-business-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"
            ],
            "type": "string",
            "description": "Choose search mode to enter category and location, or URL mode to paste HiPages search URLs.",
            "default": "search"
          },
          "category": {
            "title": "Category",
            "enum": [
              "air_conditioning",
              "antenna_services",
              "appliance_installation",
              "appliance_repairs",
              "arborists",
              "architects",
              "asbestos_removal",
              "awning_suppliers",
              "awnings",
              "balustrades",
              "bamboo_flooring",
              "bath_resurfacing",
              "bathroom_accessories",
              "bathroom_renovations",
              "blinds",
              "bricklayers",
              "builders",
              "building_certifiers",
              "building_consultants",
              "building_designers",
              "inspection_services",
              "building_suppliers",
              "building_surveyors",
              "cabinet_makers",
              "carpenters",
              "carpet_cleaning",
              "carpet_layers",
              "carpets",
              "carports",
              "ceilings",
              "chimney_sweepers",
              "cladding",
              "commercial_cleaning",
              "concrete_kerbs",
              "concrete_resurfacing",
              "concretors",
              "construction_project_management",
              "curtains",
              "custom_furniture",
              "damp_proofing",
              "decking",
              "demolition",
              "door_suppliers",
              "doors",
              "drafters",
              "ev_charger_installation",
              "electricians",
              "equipment_hire",
              "excavation",
              "fences",
              "floor_coatings",
              "floor_sanding",
              "flyscreens",
              "garages",
              "garden_designer",
              "garden_maintenance",
              "gas_fitters",
              "gates",
              "gazebo",
              "glass_glazier",
              "gutter_cleaning",
              "guttering",
              "handrails",
              "handyman",
              "heaters",
              "heating_systems",
              "home_automation",
              "home_renovations",
              "security",
              "home_theatre",
              "homewares",
              "hot_water_systems",
              "cleaning_services",
              "render",
              "insulation",
              "interior_decorator",
              "interior_designer",
              "irrigation_systems",
              "joiners",
              "interior_designer_kitchen_design",
              "kitchen_renovations",
              "landscape_architect",
              "landscaper_gardener",
              "lawn_turf",
              "lawn_mowing",
              "lighting",
              "locksmiths",
              "painters",
              "patios",
              "paver",
              "pergola",
              "pest_control",
              "pest_inspections",
              "plastering",
              "plumbers",
              "pool_fencing",
              "pool_heating",
              "pool_maintenance",
              "pressure_cleaner",
              "privacy_screens",
              "professional_organisers",
              "furniture_removal",
              "renderer",
              "retaining_walls",
              "roller_shutters",
              "roof_repairs",
              "roofing",
              "rubbish_remover",
              "scaffolding",
              "security_screens_doors",
              "shades_sails",
              "sheds",
              "shop_fitters",
              "shower_screens",
              "skylights",
              "solar_panel_cleaners",
              "solar_power",
              "splashbacks",
              "stained_glass",
              "staircases_handrails",
              "stonemasons",
              "storage",
              "structural_engineer",
              "surveyor",
              "pools",
              "tilers",
              "timber_flooring",
              "architectural_town_planning_services",
              "tree_fellers",
              "heating_systems_underfloor_heating",
              "underpinning",
              "upholstery_repair",
              "ventilation",
              "verandahs",
              "all",
              "vinyl_laminate",
              "wallpaperers",
              "wardrobes",
              "skip_truck_hire",
              "waterproofers",
              "window_cleaners",
              "window_repairs",
              "window_shutters",
              "window_tinting",
              "windows"
            ],
            "type": "string",
            "description": "Service category to search for. Used in search mode.",
            "default": "excavation"
          },
          "state": {
            "title": "State",
            "enum": [
              "nsw",
              "vic",
              "qld",
              "sa",
              "wa",
              "tas",
              "nt",
              "act"
            ],
            "type": "string",
            "description": "Australian state code. Used in search mode.",
            "default": "vic"
          },
          "suburb": {
            "title": "Suburb",
            "type": "string",
            "description": "Suburb name. Used in search mode. Examples: Clayton, Glen Waverley, Mulgrave.",
            "default": "clayton"
          },
          "urls": {
            "title": "HiPages search URLs",
            "type": "array",
            "description": "Paste HiPages search result URLs such as https://hipages.com.au/find/excavation/vic/clayton. Used only in URL mode.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxBusinesses": {
            "title": "Maximum Businesses",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of businesses to scrape",
            "default": 5
          },
          "pageLimit": {
            "title": "Page Limit",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of results per API request (max 10)",
            "default": 10
          },
          "scrapeDetails": {
            "title": "Scrape Business Details",
            "type": "boolean",
            "description": "If enabled, scrape detailed information from each business profile page (slower but more comprehensive)",
            "default": false
          },
          "scrapeRecommendations": {
            "title": "Scrape All Recommendations",
            "type": "boolean",
            "description": "If enabled (requires scrapeDetails to be true), extract all customer recommendations and reviews from each business profile page",
            "default": false
          },
          "proxy": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Connection settings. The default uses Apify Proxy without a paid proxy group selected.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": []
            }
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run (delta)",
            "type": "string",
            "description": "Optional. ID of a previous run of this actor (or a dataset ID) to continue ONE interrupted crawl. Businesses already in that dataset are skipped, so this run returns only NEW businesses (a delta). Combine both runs' datasets for the full set. For a search you run on a RECURRING schedule, use Incremental mode below instead — it remembers state itself so you don't paste an id every time."
          },
          "incrementalMode": {
            "title": "Incremental mode (recurring monitoring)",
            "type": "boolean",
            "description": "For a search you run repeatedly on a schedule. When ON, the actor remembers the previous run of the SAME search itself (see Resume above instead for a one-off continuation by id) and adds changeType (NEW/UPDATED/REAPPEARED/EXPIRED/UNCHANGED) + changedFields/firstSeenAt/lastSeenAt to every business. UNCHANGED businesses are neither pushed nor billed unless 'Emit unchanged businesses' is on. Off by default — existing schedules and output are unaffected.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, Incremental mode only)",
            "type": "string",
            "description": "Only used when Incremental mode is on. Name this monitoring campaign so its baseline is tracked separately from any other search. Leave empty to auto-derive a key from category/state/suburb and detail settings — two differently-configured searches never share a baseline either way."
          },
          "emitUnchanged": {
            "title": "Emit unchanged businesses (Incremental mode only)",
            "type": "boolean",
            "description": "Only used when Incremental mode is on. When ON, businesses with no change since the last run are still pushed to the dataset (changeType=UNCHANGED) and billed like any other row. Off by default, so a recurring run returns and bills only what actually changed.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired businesses (Incremental mode only)",
            "type": "boolean",
            "description": "Only used when Incremental mode is on. When ON, and this run scans the tracked search to completion, businesses that were previously tracked but no longer appear are pushed once with changeType=EXPIRED (and billed). Off by default. Never fires on a capped, resumed, or otherwise partial run.",
            "default": false
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}