Zoca Google Business Profile API

The Google Business Profile API from Zoca — 27 operation(s) for google business profile.

Operations 28

GET /tasks/api/v1/gbp/businesses Get all business listings with filtering and pagination #
GET /tasks/api/v1/gbp/{businessId} Get specific business details #
PUT /tasks/api/v1/gbp/{businessId} Update business information #
POST /tasks/api/v1/gbp/sync-media Sync GBP media #
GET /tasks/api/v1/gbp/{entityId}/generate-description Generate business description #
POST /tasks/api/v1/gbp/reserve-with-google/status Update Reserve with Google availability for multiple locations #
GET /tasks/api/v1/gbp/{entityId}/generate-primary-category #
GET /tasks/api/v1/gbp/{entityId}/generate-additional-categories #
GET /tasks/api/v1/gbp/{entityId}/generate-gbp-faqs #
GET /tasks/api/v1/gbp/{entityId}/generate-content #
POST /tasks/api/v1/gbp/{entityId}/generate-services-categories Generate services categories using LLM #
POST /tasks/api/v1/gbp/upsert-qanda Upsert Qanda #
GET /tasks/api/v1/gbp/{entityId}/get-ops-services #
POST /tasks/api/v1/gbp/{entityId}/create-ops-services-updates #
POST /tasks/api/v1/gbp/{entityId}/create-ops-categories-updates #
GET /tasks/api/v1/gbp/additional-categories/{industry} #
GET /tasks/api/v1/gbp/zoca/auth #
GET /tasks/api/v1/gbp/location/details #
GET /tasks/api/v1/gbp/location/entity-details #
POST /tasks/api/v1/gbp/website/status #
POST /tasks/api/v1/gbp/csv-geocoding/process Process CSV file from S3 for geocoding #
POST /tasks/api/v1/gbp/process-gbp-data-from-s3 Process GBP L2 data from S3 CSV file #
POST /tasks/api/v1/gbp/process-gbp-data Process GBP URLs and place IDs to fetch business data #
GET /tasks/api/v1/gbp/locations/by-place-id Get locations by Google Places ID #
POST /tasks/api/v1/gbp/keyword-impressions/trigger Manually trigger keyword impressions cron job #
POST /tasks/api/v1/gbp/{locationEntityId}/publish-website Publish website links to Google Business Profile #
POST /tasks/api/v1/gbp/{entityId}/generate-content-v2 Generate GBP content using V2 pipeline #
POST /tasks/api/v1/gbp/swap-entities Swap GBP entities #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zoca-google-business-profile-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zoca-google-business-profile-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Zoca Tasks Google Business Profile API
  description: 'The Zoca tasks/automation service: AI content queue and planning, FrontDesk (Retell/Twilio) voice + SMS agent onboarding, local-SEO grid scans, WIN conversion triggers, and inbound integration webhooks (Chargebee, Square, Pipedrive, Twilio, Retell, CallHippo, Sybill, Instantly).'
  version: 3.20.9
  contact: {}
  x-apievangelist-note: Harvested verbatim from https://tasks.zoca.ai/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-tasks-swagger.json. Every path, operation, summary, parameter and response is exactly as published.
servers:
- url: https://tasks.zoca.ai
  description: Production
security:
- access-token: []
tags:
- name: Google Business Profile
paths:
  /tasks/api/v1/gbp/businesses:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: Business listings retrieved successfully
      summary: Get all business listings with filtering and pagination
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{businessId}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: Business details retrieved successfully
      summary: Get specific business details
      tags:
      - Google Business Profile
    put:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: Business information updated successfully
      summary: Update business information
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/sync-media:
    post:
      description: Enqueues a job to synchronize Google Business Profile media
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Media sync job enqueued successfully
          content:
            application/json:
              schema:
                properties:
                  jobId:
                    type: string
        '400':
          description: Invalid input data
        '500':
          description: Failed to enqueue job
      summary: Sync GBP media
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/generate-description:
    get:
      description: Generates a business description for the specified entity ID
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: Business description generated successfully
        '400':
          description: Invalid entity ID
        '500':
          description: Failed to generate business description
      summary: Generate business description
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/reserve-with-google/status:
    post:
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/e'
      responses:
        '200':
          description: Reserve with Google status updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        entityId:
                          type: string
                          example: 550e8400-e29b-41d4-a716-446655440000
                        success:
                          type: boolean
                          example: true
                        rwgEnabled:
                          type: boolean
                          example: true
                        error:
                          type: string
                          example: Entity not found in entities.locations
                  summary:
                    type: object
                    properties:
                      total:
                        type: number
                        example: 2
                      succeeded:
                        type: number
                        example: 1
                      failed:
                        type: number
                        example: 1
        '500':
          description: Failed to update Reserve with Google status
      summary: Update Reserve with Google availability for multiple locations
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/generate-primary-category:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/generate-additional-categories:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/generate-gbp-faqs:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/generate-content:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/generate-services-categories:
    post:
      description: Generates optimized category assignments for services using AI/LLM processing
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Services categories generated successfully
        '400':
          description: Invalid input data
        '500':
          description: Failed to generate services categories
      summary: Generate services categories using LLM
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/upsert-qanda:
    post:
      description: Upsert Qanda
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: Qanda upserted successfully
        '400':
          description: Invalid input data
        '500':
          description: Failed to upsert Qanda
      summary: Upsert Qanda
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/get-ops-services:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/create-ops-services-updates:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/create-ops-categories-updates:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/additional-categories/{industry}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/zoca/auth:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/location/details:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/location/entity-details:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/website/status:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/csv-geocoding/process:
    post:
      description: Queues CSV file from S3 URL for geocoding processing. The worker will download, validate, and process the file.
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: CSV geocoding job queued successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobId:
                    type: string
                  message:
                    type: string
                  s3Url:
                    type: string
        '400':
          description: Invalid request - S3 URL is required
      security:
      - {}
      summary: Process CSV file from S3 for geocoding
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/process-gbp-data-from-s3:
    post:
      description: Accepts an S3 URL to a CSV file containing place_ids, downloads and processes it to fetch GBP L2 business data. Supports lead enrichment for qualified leads.
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: GBP L2 data processing job queued successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobId:
                    type: string
                  message:
                    type: string
                  s3Url:
                    type: string
        '400':
          description: Invalid S3 URL or failed to queue job
      summary: Process GBP L2 data from S3 CSV file
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/process-gbp-data:
    post:
      description: Accepts a CSV file containing Google Business place_ids or URLs, processes them in batches to fetch business data from external API, and returns a comprehensive CSV report via Slack notification.
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              properties:
                file:
                  type: string
                  format: binary
                  description: CSV file containing place_id or gbp_url columns
                runLeadEnrichment:
                  type: boolean
                  description: 'Enable lead enrichment for qualified leads (reviews >= 20 AND rating >= 4). Default: false'
                  default: false
      responses:
        '201':
          description: CSV file validated and queued for GBP data processing
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobId:
                    type: string
                  message:
                    type: string
                  rowCount:
                    type: number
        '400':
          description: CSV validation failed - missing required columns or invalid format
      summary: Process GBP URLs and place IDs to fetch business data
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/locations/by-place-id:
    get:
      description: Fetches all GBP locations associated with a specific Google Places ID. Returns array even for single results. Handles multiple locations sharing the same placeId.
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: Successfully fetched locations for the given placeId
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/e'
        '404':
          description: No locations found for the provided placeId
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/e'
      summary: Get locations by Google Places ID
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/keyword-impressions/trigger:
    post:
      description: Triggers the monthly keyword impressions data collection job that normally runs on the 5th of each month. Optionally specify a month/year to fetch data for.
      operationId: t_value
      parameters: []
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                monthYear:
                  type: string
                  description: 'Optional month/year to fetch data for (format: YYYY-MM)'
                  example: 2024-01
      responses:
        '200':
          description: Keyword impressions cron job triggered successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Keyword impressions cron job triggered successfully
                  totalLocations:
                    type: number
                    example: 150
                  jobsQueued:
                    type: number
                    example: 150
                  queueErrors:
                    type: number
                    example: 0
                  estimatedTimeMinutes:
                    type: number
                    example: 6
                  monthYear:
                    type: string
                    example: 2024-01
        '500':
          description: Failed to trigger keyword impressions cron job
      security:
      - jwt: []
      summary: Manually trigger keyword impressions cron job
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{locationEntityId}/publish-website:
    post:
      description: 'Publishes website links to GBP with UTM tracking parameters. Updates website field, booking link, and service link. Optionally marks trial as started (activateTrial, default: true) and activates content generation (activateContent, default: true).'
      operationId: t_value
      parameters:
      - name: locationEntityId
        required: true
        in: path
        description: Location entity identifier (must be a valid UUID format)
        schema:
          example: 550e8400-e29b-41d4-a716-446655440000
          type: string
      responses:
        '201':
          description: Website published successfully to GBP
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  locationEntityId:
                    type: string
                  websiteUrl:
                    type: string
                  fieldsUpdated:
                    type: array
                    items:
                      type: string
                  utmLinks:
                    type: object
                    properties:
                      website:
                        type: string
                      booking:
                        type: string
                      service:
                        type: string
                  trialActivated:
                    type: boolean
                  contentActivated:
                    type: boolean
                  message:
                    type: string
        '400':
          description: Invalid input data
        '401':
          description: OAuth token not found
        '403':
          description: Unverified profile or pending mask conflicts
        '404':
          description: Website not found for location
        '500':
          description: Failed to publish website to GBP
      summary: Publish website links to Google Business Profile
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/{entityId}/generate-content-v2:
    post:
      description: Generates GBP post content using the simplified V2 pipeline with generator → corrector workflow. The entityId parameter refers to the location entity ID (locationEntityId) for the business location.
      operationId: t_value
      parameters:
      - name: entityId
        required: true
        in: path
        description: Location entity identifier (must be a valid UUID format). This is the locationEntityId for the business location.
        schema:
          example: 550e8400-e29b-41d4-a716-446655440000
          type: string
      responses:
        '201':
          description: Content generated successfully using V2 pipeline
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    properties:
                      content:
                        type: object
                      metadata:
                        type: object
                      status:
                        type: string
                        enum:
                        - success
                        - failed
                        - draft
        '400':
          description: Invalid entity ID or parameters
        '500':
          description: Content generation failed
      summary: Generate GBP content using V2 pipeline
      tags:
      - Google Business Profile
  /tasks/api/v1/gbp/swap-entities:
    post:
      description: Enqueues a job to swap location IDs between two GBP entities
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: Entity swap job enqueued successfully
          content:
            application/json:
              schema:
                properties:
                  jobId:
                    type: string
        '400':
          description: Invalid input data
        '500':
          description: Failed to enqueue job
      summary: Swap GBP entities
      tags:
      - Google Business Profile
components:
  schemas:
    e:
      type: object
      properties:
        scan:
          $ref: '#/components/schemas/e'
        businessLat:
          type:
          - number
          - 'null'
        businessLng:
          type:
          - number
          - 'null'
        points:
          type: array
          items:
            $ref: '#/components/schemas/e'
        heroMetrics:
          $ref: '#/components/schemas/e'
      required:
      - scan
      - businessLat
      - businessLng
      - points
      - heroMetrics
  securitySchemes:
    access-token:
      scheme: bearer
      bearerFormat: JWT
      type: http
      name: Authorization
      description: Enter JWT token in the format Bearer <token>
      in: header