{
  "openapi": "3.0.1",
  "info": {
    "title": "Local Business Health Scorer: Google Maps lead finder",
    "description": "I search Google Maps and score every local business 0-100 for how much help it needs online. No website, a website that no longer answers, a listing with no photos, reviews nobody replied to. You get the reasons with their numbers, and the plainest as outreach lines you can paste.",
    "version": "0.1",
    "x-build-id": "iC4ecDG0cbnt3MLqE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fractionalhqforyou~local-business-health-scorer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fractionalhqforyou-local-business-health-scorer",
        "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/fractionalhqforyou~local-business-health-scorer/runs": {
      "post": {
        "operationId": "runs-sync-fractionalhqforyou-local-business-health-scorer",
        "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/fractionalhqforyou~local-business-health-scorer/run-sync": {
      "post": {
        "operationId": "run-sync-fractionalhqforyou-local-business-health-scorer",
        "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": {
          "searchTerms": {
            "title": "What to search for",
            "type": "string",
            "description": "One search term per line, exactly as you would type it into Google Maps: plumber, dentist, wedding photographer. Leave empty to get a demo dataset that charges nothing."
          },
          "location": {
            "title": "Where",
            "type": "string",
            "description": "A town, city or area, e.g. Manchester, UK. The narrower it is, the more useful the list."
          },
          "maxPlaces": {
            "title": "How many businesses",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "A cap on how many listings are scored. Hard limit 500.",
            "default": 50
          },
          "reviewsPerPlace": {
            "title": "Recent reviews to read per business",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "The owner-reply check is measured on these. 5 is enough to see whether anyone answers; set 0 to skip reviews entirely and the check will not fire.",
            "default": 5
          },
          "minScore": {
            "title": "Only keep businesses scoring at least",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Filters the saved rows, not the search. 55 and above is the HOT band. Every business searched is charged for whether or not it clears this.",
            "default": 0
          },
          "checks": {
            "title": "Checks to run",
            "type": "array",
            "description": "Leave all five on unless you are chasing one specific angle. Each check you turn off removes its points from the score, so scores are only comparable between runs with the same checks.",
            "items": {
              "type": "string",
              "enum": [
                "presence",
                "engagement",
                "photos",
                "staleness",
                "completeness"
              ],
              "enumTitles": [
                "Web presence: no website, a dead link, a social page instead of a site, http, no mobile viewport",
                "Review engagement: how often the owner replies to reviews",
                "Photos: how many photos the listing carries",
                "Staleness: how long ago the newest review was left",
                "Completeness: opening hours, phone, description, star rating"
              ]
            },
            "default": [
              "presence",
              "engagement",
              "photos",
              "staleness",
              "completeness"
            ]
          },
          "checkWebsites": {
            "title": "Open the websites",
            "type": "boolean",
            "description": "On by default, and it is what separates a business with a real site from one whose link is dead. One plain request per website, no browser. Switch it off for a faster listing-only pass.",
            "default": true
          },
          "places": {
            "title": "Score place records you already have (optional)",
            "type": "array",
            "description": "Paste Google Maps place records you scraped earlier and they are scored directly, with no new search and nothing billed for the search. Leave empty to search instead."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}