Zoca Public API

Zoca's unauthenticated public surface — the 69 operations behind the free self-serve tools on zoca.com. Covers the Local Business Demand Tracker (keyword demand and keyword intelligence), Google Business Profile competitor analysis, place metrics and keyword tables, website strategy grading, pricing benchmarks and menu analysis, plus short-link and app-link redirects. Served as an OpenAPI 3.0.0 document at https://public.zoca.com/swagger.json. This is the only Zoca surface reachable without a Zoca account.

OpenAPI Specification

zoca-public-openapi.yml Raw ↑
openapi: 3.0.0
paths:
  /lead-magnet/standard/services:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Autocomplete service names
      tags:
      - lead-magnet
  /lead-magnet/services:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get services for a place
      tags:
      - lead-magnet
  /lead-magnet/place/details/keywords-table:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keywords table data for a place
      tags:
      - lead-magnet
  /lead-magnet/place/details/competitor-pie-chart:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get competitor pie chart data for a place
      tags:
      - lead-magnet
  /lead-magnet/place/details/competitor-table:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get competitor table data for a place
      tags:
      - lead-magnet
  /lead-magnet/place/details/metrics-table:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get metrics table data for a place
      tags:
      - lead-magnet
  /lead-magnet/keyword-intelligence:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Create keyword intelligence lead magnet
      tags:
      - lead-magnet
  /lead-magnet/place/details/keywords:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get place keywords
      tags:
      - lead-magnet
  /lead-magnet/place/details:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get all lead magnet data for a place
      tags:
      - lead-magnet
  /lead-magnet/gbp/competitor:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get GBP competitor data
      tags:
      - lead-magnet
  /lead-magnet/keyword/demand:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keyword demand data
      tags:
      - lead-magnet
  /lead-magnet/pipeline/metrics:
    post:
      description: Store the lead magnet pipeline status and metrics
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Metrics in JSON format as in the database
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Object'
      responses:
        '201':
          description: Metrics stored successfully
      summary: Lead Magnet
      tags:
      - lead-magnet
  /lead-magnet/update:
    post:
      description: Store search volume
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Search volume Payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Object'
      responses:
        '201':
          description: Lead Magnet Job created successfully
      summary: Lead Magnet
      tags:
      - lead-magnet
  /lead-magnet/google-ad-api/key/{allocationId}/complete:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Complete Google Ad API key usage
      tags:
      - lead-magnet
  /lead-magnet/get-insights:
    get:
      description: Get insights
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Lead Magnet
      tags:
      - lead-magnet
  /lead-magnet/export:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Export lead magnet data
      tags:
      - lead-magnet
  /lead-magnet/website-strategy:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get website strategy analysis
      tags:
      - lead-magnet
  /lead-magnet/website-strategy/callback:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Website strategy callback
      tags:
      - lead-magnet
  /lead-magnet/map-search/serp:
    post:
      description: Get map search data
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Map search data payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Object'
      responses:
        '201':
          description: ''
      summary: Lead Magnet
      tags:
      - lead-magnet
  /lead-magnet/keyword/services:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keyword services for a place
      tags:
      - lead-magnet
  /lead-magnet/keyword/analyze:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Analyze keyword lead magnet
      tags:
      - lead-magnet
  /lead-magnet/keyword/keywords:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keyword place keywords
      tags:
      - lead-magnet
  /lead-magnet/keyword/keywords-table:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keyword keywords table data
      tags:
      - lead-magnet
  /lead-magnet/keyword/metrics-table:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keyword metrics table data
      tags:
      - lead-magnet
  /lead-magnet/keyword/competitor-table:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keyword competitor table data
      tags:
      - lead-magnet
  /lead-magnet/keyword/competitor-pie-chart:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get keyword competitor pie chart data
      tags:
      - lead-magnet
  /lead-magnet/keyword/update:
    post:
      description: Update keyword lead magnet data with place ID, process ID, service, and additional key-value pairs
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Update keyword place details data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/e'
      responses:
        '201':
          description: Keyword lead magnet data updated successfully
      summary: Update Keyword Place Details
      tags:
      - lead-magnet
  /lead-magnet/retell-demo/pre-warm:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Pre-warm services extraction for faster call placement
      tags:
      - lead-magnet
  /lead-magnet/retell-demo:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Start a Hear Your Receptionist Retell demo call
      tags:
      - lead-magnet
  /lead-magnet/retell-demo/partial-submit:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Capture partial lead form fill for drop-off tracking
      tags:
      - lead-magnet
  /lead-magnet/retell-demo/{sessionId}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get current state of a Retell demo call session
      tags:
      - lead-magnet
  /lead-magnet/retell-demo/webhook:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Retell webhook for Hear Your Receptionist demo calls
      tags:
      - lead-magnet
  /lead-magnet/pricing/benchmark:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Estimated local price for the service
        '400':
          description: Invalid request parameters
        '429':
          description: Too many requests
        '500':
          description: Pricing benchmark failed
      summary: Benchmark the local price for a service (web-searched + LLM)
      tags:
      - lead-magnet
  /lead-magnet/pricing/services:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: List of services the business offers (may be empty)
        '400':
          description: Invalid request parameters
        '429':
          description: Too many requests
      summary: Discover a business's actual services (for personalized suggestions)
      tags:
      - lead-magnet
  /lead-magnet/pricing/recommend:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Recommended price band
        '400':
          description: Invalid request parameters
        '429':
          description: Too many requests
      summary: Recommend a realistic price band from experience + local market
      tags:
      - lead-magnet
  /lead-magnet/pricing/menu-analysis:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Per-service under/over-priced classification + counts
        '400':
          description: Invalid request parameters
        '429':
          description: Too many requests
      summary: Count under/over-priced services across the menu vs the local market
      tags:
      - lead-magnet
  /lead-magnet/pricing/callback:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Callback request recorded
        '400':
          description: Invalid request parameters
        '429':
          description: Too many requests
      summary: Record a callback request from the pricing-benchmark result page
      tags:
      - lead-magnet
  /lead-magnet/pricing/report-unlocked:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Report-unlock recorded
        '400':
          description: Invalid request parameters
        '429':
          description: Too many requests
      summary: Record a full-report-unlock from the pricing-benchmark gate
      tags:
      - lead-magnet
  /lead-magnet/pricing/search-notify:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Search notification recorded
        '429':
          description: Too many requests
      summary: Notify (Slack) that a visitor searched a business in the pricing tool
      tags:
      - lead-magnet
  /lead-magnet/pricing/feedback:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Feedback recorded
        '429':
          description: Too many requests
      summary: Record "did you like the report?" feedback from the pricing tool
      tags:
      - lead-magnet
  /pipedrive/person/upsert:
    post:
      description: Processes incoming request to create a pipedrive person
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Pipedrive person payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Object'
      responses:
        '201':
          description: Pipedrive person created successfully
      summary: Create Pipedirve Person
      tags:
      - Pipedrive Webhook
  /pipedrive/organization/upsert:
    post:
      description: Processes incoming request to create a pipedrive organization
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Pipedrive organization payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Object'
      responses:
        '201':
          description: Pipedrive organization created successfully
      summary: Create Pipedirve Organization
      tags:
      - Pipedrive Webhook
  /pipedrive/activity/create:
    post:
      description: Processes incoming request to create a pipedrive activity
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Pipedrive activity payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Object'
      responses:
        '201':
          description: Pipedrive activity created successfully
      summary: Create Pipedirve Activity
      tags:
      - Pipedrive Webhook
  /pipedrive/lead/contact-form:
    post:
      description: Processes incoming request to process the contact form
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Process Contact Form
      tags:
      - Pipedrive Webhook
  /landing-page/lead/upsert:
    post:
      description: Processes incoming request to create a landing page lead
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        description: Landing page lead payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Object'
      responses:
        '201':
          description: Landing page lead created successfully
      summary: Create Landing Page Lead
      tags:
      - Landing Page
  /contract/pay/{contractId}:
    get:
      description: Generates and redirects to a dynamic hosted page for contract payment based on the contract ID provided.
      operationId: t_value
      parameters: []
      responses:
        '302':
          description: Redirects to the generated hosted page URL.
        '500':
          description: Internal server error while generating hosted page.
      summary: Retrieve Contract Payment Hosted Page
      tags:
      - contract-payment
  /missed/payment/{entityId}:
    get:
      description: Generates and redirects to a hosted page for collecting missed payments based on the entity ID provided.
      operationId: t_value
      parameters: []
      responses:
        '302':
          description: Redirects to the generated hosted page URL.
        '500':
          description: Internal server error while generating hosted page.
      summary: Handle Missed Payment Collection
      tags:
      - missed-payment
  /chargebee/missed/payment/{entityId}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Handle missed payment redirect
      tags:
      - chargebee
  /chargebee/update/payment/method/{entityId}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Update payment method redirect
      tags:
      - chargebee
  /chargebee/contract/pay/{contractId}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Handle contract payment redirect
      tags:
      - chargebee
  /chargebee/generate/invoice/{invoiceId}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Generate and redirect to invoice PDF
      tags:
      - chargebee
  /business-enrichment/enrich:
    post:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: Enriched business data
        '400':
          description: Invalid request parameters
        '500':
          description: Enrichment failed
      summary: Enrich a business by Google Place ID
      tags:
      - business-enrichment
  /lead-magnet/aeo/report:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: The tier-appropriate AI-visibility report.
      summary: Run an AEO visibility audit for a business and tier
      tags:
      - aeo-lead-magnet
  /lead-magnet/aeo/search-notify:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: '{ ok: true }. Best-effort; never blocks the client.'
      summary: Notify Slack that a visitor ran the AEO checker
      tags:
      - aeo-lead-magnet
  /lead-magnet/aeo/report-unlocked:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: '{ ok: true }. Best-effort; never 500s the unlock.'
      summary: Record a report-unlock / CTA lead and notify Slack
      tags:
      - aeo-lead-magnet
  /:
    get:
      operationId: e_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get app data
      tags:
      - app
  /r/{alias}:
    get:
      operationId: e_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Redirect link by alias
      tags:
      - app
  /get-app:
    get:
      operationId: e_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Serve app redirect page
      tags:
      - app
  /applink:
    get:
      operationId: e_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Handle app deep link redirect
      tags:
      - app
  /links/health:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Health check
      tags:
      - links
  /links/invalidate/{alias}:
    delete:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Invalidate link cache by alias
      tags:
      - links
  /links:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Create a new link
      tags:
      - links
  /links/r/{alias}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Redirect link by alias
      tags:
      - links
  /links/get-app:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Serve app redirect page
      tags:
      - links
  /places/autocomplete:
    get:
      operationId: e_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get places autocomplete suggestions
      tags:
      - places
  /places/details:
    get:
      operationId: e_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Get place details by place ID
      tags:
      - places
  /places/search:
    get:
      operationId: e_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Search places
      tags:
      - places
  /places/search-text:
    post:
      operationId: e_value
      parameters: []
      responses:
        '201':
          description: ''
      summary: Search places using Google Places API v2
      tags:
      - places
  /health:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      summary: Health check endpoint
      tags:
      - health
info:
  title: Zoca Public API
  description: 'Zoca''s unauthenticated public surface backing the free self-serve lead-magnet tools: Local Business Demand Tracker keyword/demand analysis, Google Business Profile competitor analysis, website strategy grading, pricing benchmarks, and short-link/app-link redirects.'
  version: 3.20.9
  contact: {}
  x-apievangelist-note: Harvested verbatim from https://public.zoca.com/swagger.json. The provider ships the default NestJS Swagger metadata (title "API Documentation", empty servers[]); title/description/servers were set by API Evangelist for identification and the unmodified original is preserved at openapi/_original/zoca-public-swagger.json. Every path, operation, summary, parameter and response is exactly as published.
tags:
- name: App
  description: Endpoints consumed by the mobile App
servers:
- url: https://public.zoca.com
  description: Production
components:
  securitySchemes:
    access-token:
      scheme: bearer
      bearerFormat: JWT
      type: http
      name: Authorization
      description: Enter JWT token in the format Bearer <token>
      in: header
  schemas:
    Object:
      type: object
      properties: {}
    e:
      type: object
      properties: {}