No Booking Finder — Local Business Opportunities
Pricing
$3.00 / 1,000 results
No Booking Finder — Local Business Opportunities
Rank appointment-driven businesses by public demand, apparent online booking gaps and nearby competitor evidence.
No Booking Finder — Local Business Opportunities
Pricing
$3.00 / 1,000 results
Rank appointment-driven businesses by public demand, apparent online booking gaps and nearby competitor evidence.
You can access the No Booking Finder — Local Business Opportunities programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.3", "x-build-id": "qaqkOm4t3yzOuq79T" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/segm~no-booking-finder/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-segm-no-booking-finder", "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/segm~no-booking-finder/runs": { "post": { "operationId": "runs-sync-segm-no-booking-finder", "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/segm~no-booking-finder/run-sync": { "post": { "operationId": "run-sync-segm-no-booking-finder", "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": "Search", "minItems": 1, "maxItems": 5, "type": "array", "description": "Appointment-driven businesses to search, for example dentist or barber.", "items": { "type": "string", "minLength": 1, "maxLength": 120 }, "default": [ "dentist" ] }, "location": { "title": "Location", "minLength": 1, "maxLength": 300, "type": "string", "description": "One city and country, for example Lyon, France.", "default": "Lyon, France" }, "maxResults": { "title": "Maximum businesses", "minimum": 1, "maximum": 1000, "type": "integer", "description": "Maximum source records read. Upstream limits are split across search terms. Duplicates or malformed records can reduce final results.", "default": 100 }, "source": { "title": "Business source", "enum": [ "google_maps", "dataset", "direct" ], "type": "string", "description": "Search Google Maps (paid upstream Actor), reuse a Dataset, or supply businesses directly.", "default": "google_maps" }, "businesses": { "title": "Your businesses", "maxItems": 1000, "type": "array", "description": "Normalized records for source=direct. Name is required; supply category, geography, reviews and a website for useful scoring.", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 300, "title": "Business name", "description": "Required normalized business name.", "editor": "textfield" }, "address": { "default": "", "type": "string", "maxLength": 2000, "title": "Address", "description": "Street address when available.", "editor": "textfield" }, "city": { "default": "", "type": "string", "maxLength": 200, "title": "City", "description": "City where the business operates.", "editor": "textfield" }, "country": { "default": "", "type": "string", "maxLength": 100, "title": "Country", "description": "Country where the business operates.", "editor": "textfield" }, "category": { "default": "", "type": "string", "maxLength": 200, "title": "Category", "description": "Business category used for ranking.", "editor": "textfield" }, "latitude": { "type": "number", "minimum": -90, "maximum": 90, "nullable": true, "title": "Latitude", "description": "Optional latitude in decimal degrees.", "editor": "number" }, "longitude": { "type": "number", "minimum": -180, "maximum": 180, "nullable": true, "title": "Longitude", "description": "Optional longitude in decimal degrees.", "editor": "number" }, "websiteUrl": { "type": "string", "maxLength": 2000, "nullable": true, "title": "Website URL", "description": "Optional public website to analyze.", "editor": "textfield" }, "phone": { "type": "string", "maxLength": 100, "nullable": true, "title": "Phone", "description": "Optional public phone number.", "editor": "textfield" }, "email": { "type": "string", "maxLength": 320, "nullable": true, "title": "Email", "description": "Optional public email address.", "editor": "textfield" }, "rating": { "type": "number", "minimum": 0, "maximum": 5, "nullable": true, "title": "Rating", "description": "Optional rating from 0 to 5.", "editor": "number" }, "reviewCount": { "type": "integer", "minimum": 0, "maximum": 1000000000, "nullable": true, "title": "Review count", "description": "Optional nonnegative review count.", "editor": "number" }, "source": { "default": "direct", "type": "string", "minLength": 1, "maxLength": 200, "title": "Source", "description": "Origin label for this normalized record.", "editor": "textfield" }, "sourceId": { "type": "string", "maxLength": 500, "nullable": true, "title": "Source ID", "description": "Optional identifier in the originating source.", "editor": "textfield" } }, "required": [ "name" ], "additionalProperties": false } }, "datasetId": { "title": "Existing Dataset ID", "pattern": "^[\\w-]+$", "maxLength": 100, "type": "string", "description": "Cloud Dataset to reuse with source=dataset. No new Google Maps run is started." }, "datasetAdapter": { "title": "Dataset format", "enum": [ "google_maps", "normalized" ], "type": "string", "description": "Choose the Google Maps format or normalized OpportunityFilter business inputs.", "default": "google_maps" }, "minimumRating": { "title": "Minimum rating", "minimum": 0, "maximum": 5, "type": "number", "description": "0 disables the filter. Missing ratings fail a positive minimum.", "default": 0 }, "minimumReviews": { "title": "Minimum reviews", "minimum": 0, "maximum": 1000000, "type": "integer", "description": "0 disables the filter. Missing review counts fail a positive minimum.", "default": 0 }, "analyzeWebsites": { "title": "Analyze public websites", "type": "boolean", "description": "Inspect bounded static HTML and useful internal pages.", "default": true }, "analyzeCompetitors": { "title": "Compare local competitors", "type": "boolean", "description": "Reuse only the businesses already collected. No extra searches.", "default": true }, "includeLowConfidenceResults": { "title": "Include uncertain results", "type": "boolean", "description": "Keep partial, unscorable and low-confidence results for review.", "default": true }, "minimumConfidence": { "title": "Minimum confidence", "minimum": 0, "maximum": 1, "type": "number", "description": "Applied only when uncertain results are excluded. Confidence measures evidence completeness, not a calibrated probability.", "default": 0.65 }, "competitorRadiusKm": { "title": "Competitor radius (km)", "minimum": 0.1, "maximum": 50, "type": "number", "description": "Great-circle radius when both businesses have coordinates; otherwise same nonempty city and country.", "default": 10 }, "minimumCompetitorSample": { "title": "Minimum analyzed peers", "minimum": 2, "maximum": 20, "type": "integer", "description": "Smaller samples reduce the competitor weight and confidence.", "default": 3 }, "websiteConcurrency": { "title": "Concurrent websites", "minimum": 1, "maximum": 20, "type": "integer", "description": "Maximum parallel business tasks. Transport additionally serializes requests to the same host.", "default": 10 }, "requestTimeoutMs": { "title": "Request timeout (ms)", "minimum": 1000, "maximum": 30000, "type": "integer", "description": "Bounded deadline for one request attempt, including redirects.", "default": 15000 }, "maxResponseBytes": { "title": "Maximum response bytes", "minimum": 1024, "maximum": 2000000, "type": "integer", "description": "Maximum decompressed HTML response size.", "default": 1000000 }, "maxPagesPerWebsite": { "title": "Pages per website", "minimum": 1, "maximum": 3, "type": "integer", "description": "Homepage plus at most two same-origin pages; stop early when a booking mechanism is detected.", "default": 2 }, "maxRetries": { "title": "Retries per request", "minimum": 0, "maximum": 2, "type": "integer", "description": "Retry transient network errors, HTTP 429 and selected 5xx responses only.", "default": 1 }, "upstreamActorId": { "title": "Upstream Google Maps Actor", "pattern": "^(?:[\\w-]+\\/)?[\\w-]+$", "maxLength": 150, "type": "string", "description": "Identifier of a compatible Actor. The adapter expects the documented compass schema.", "default": "compass/crawler-google-places" }, "upstreamBuild": { "title": "Upstream build", "pattern": "^[\\w.-]+$", "maxLength": 50, "type": "string", "description": "Pinned tested input-schema build. Adjust when choosing another compatible Actor.", "default": "0.14.750" }, "upstreamMaxChargeUsd": { "title": "Upstream event-charge ceiling (USD)", "minimum": 0.1, "maximum": 20, "type": "number", "description": "Apify pay-per-event limit passed to the upstream Actor. Platform compute/storage charges may be separate.", "default": 2 }, "upstreamTimeoutSecs": { "title": "Upstream timeout (seconds)", "minimum": 30, "maximum": 3600, "type": "integer", "description": "Maximum duration passed to the Google Maps Actor.", "default": 600 }, "scoringWeights": { "title": "Scoring weights", "type": "object", "description": "Nonnegative weights are normalized by their sum. Default: demand .35, booking gap .35, competitor gap .20, digital gap .10.", "properties": { "demand": { "default": 0.35, "type": "number", "minimum": 0, "maximum": 1, "title": "Demand weight", "description": "Relative weight for public demand.", "editor": "number" }, "bookingGap": { "default": 0.35, "type": "number", "minimum": 0, "maximum": 1, "title": "Booking gap weight", "description": "Relative weight for the apparent booking gap.", "editor": "number" }, "competitorGap": { "default": 0.2, "type": "number", "minimum": 0, "maximum": 1, "title": "Competitor gap weight", "description": "Relative weight for nearby competitor evidence.", "editor": "number" }, "digitalGap": { "default": 0.1, "type": "number", "minimum": 0, "maximum": 1, "title": "Digital gap weight", "description": "Relative weight for the digital presence gap.", "editor": "number" } }, "default": { "demand": 0.35, "bookingGap": 0.35, "competitorGap": 0.2, "digitalGap": 0.1 } } } }, "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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for No Booking Finder — Local Business Opportunities from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: