Zoca Scraped Services API

The Scraped Services API from Zoca — 10 operation(s) for scraped services.

Operations 10

POST /tasks/api/v1/scraped-services/sync/{linkId} Sync services from a platform link #
POST /tasks/api/v1/scraped-services/sync-to-production/{linkId} Sync scraped services to production tables #
GET /tasks/api/v1/scraped-services/reconcile/{linkId}/preview Preview reconciliation without making changes #
GET /tasks/api/v1/scraped-services/reconcile/{linkId}/ai-suggest Get AI-suggested reconciliation mappings #
POST /tasks/api/v1/scraped-services/reconcile/{linkId}/manual Apply manual reconciliation mappings #
GET /tasks/api/v1/scraped-services/reconcile/{linkId}/candidates Get production candidates for manual reconciliation #
POST /tasks/api/v1/scraped-services/reconcile/{linkId} Reconcile unmapped scraped services with production #
POST /tasks/api/v1/scraped-services/scrape-url Scrape services directly from a URL without saving to database #
GET /tasks/api/v1/scraped-services/diff/{entityId} Preview production sync diff #
GET /tasks/api/v1/scraped-services/{linkId} Get all scraped services for a link #

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-scraped-services-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-scraped-services-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Zoca Tasks Scraped Services 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: Scraped Services
paths:
  /tasks/api/v1/scraped-services/sync/{linkId}:
    post:
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      responses:
        '200':
          description: Services synced successfully
        '404':
          description: Link not found
        '500':
          description: Internal server error
      summary: Sync services from a platform link
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/sync-to-production/{linkId}:
    post:
      description: Uses 3-tier matching (column map → fuzzy name → create new) to sync scraped services and variations into production services tables.
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      responses:
        '200':
          description: Services synced to production successfully
        '404':
          description: Link not found or no scraped services
        '500':
          description: Internal server error
      summary: Sync scraped services to production tables
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/reconcile/{linkId}/preview:
    get:
      description: Simulates the 3-tier matching for unmapped scraped services and variations, showing what would be matched or created.
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      responses:
        '200':
          description: Preview generated successfully
        '404':
          description: Link not found
        '500':
          description: Internal server error
      summary: Preview reconciliation without making changes
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/reconcile/{linkId}/ai-suggest:
    get:
      description: Uses an LLM to suggest mappings between unmapped scraped services/variations and production candidates based on semantic name matching.
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      responses:
        '200':
          description: AI suggestions generated successfully
        '404':
          description: Link not found
        '500':
          description: Internal server error
      summary: Get AI-suggested reconciliation mappings
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/reconcile/{linkId}/manual:
    post:
      description: Applies user-reviewed mappings between scraped services/variations and production items. Supports matching to existing items or creating new ones.
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - mappings
              properties:
                mappings:
                  type: array
                  items:
                    type: object
                    required:
                    - type
                    - platformId
                    - productionId
                    properties:
                      type:
                        type: string
                        enum:
                        - service
                        - variation
                      platformId:
                        type: string
                        description: Platform service/variant ID
                      productionId:
                        type:
                        - string
                        - 'null'
                        description: Production ID to map to, or null to create new
      responses:
        '200':
          description: Mappings applied successfully
        '404':
          description: Link not found
        '500':
          description: Internal server error
      summary: Apply manual reconciliation mappings
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/reconcile/{linkId}/candidates:
    get:
      description: Returns the list of production services and variations available for manual mapping in the reconciliation UI.
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      responses:
        '200':
          description: Candidates retrieved successfully
        '404':
          description: Link not found
        '500':
          description: Internal server error
      summary: Get production candidates for manual reconciliation
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/reconcile/{linkId}:
    post:
      description: Finds scraped services and variations without production mappings and attempts to match or create them using the 3-tier strategy.
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      responses:
        '200':
          description: Reconciliation completed successfully
        '404':
          description: Link not found
        '500':
          description: Internal server error
      summary: Reconcile unmapped scraped services with production
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/scrape-url:
    post:
      description: Provide a URL from supported platforms (Fresha, Booksy, GlossGenius, Square, Vagaro, Acuity) to scrape services in real-time
      operationId: t_value
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - url
              properties:
                url:
                  type: string
                  description: The platform URL to scrape services from
                  example: https://www.fresha.com/a/beauty-salon-london-xyz123
                platform:
                  type: string
                  description: 'Optional: Specify the platform type (auto-detected if not provided)'
                  enum:
                  - fresha
                  - booksy
                  - glossgenius
                  - square
                  - squareup
                  - vagaro
                  - acuity
                  example: fresha
      responses:
        '200':
          description: Services scraped successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  url:
                    type: string
                  platform:
                    type: string
                  businessInfo:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      phone:
                        type: string
                      email:
                        type: string
                      address:
                        type: object
                      category:
                        type: string
                      bookingLink:
                        type: string
                      workingHours:
                        type: array
                      logo:
                        type: object
                      banner:
                        type: array
                      platformId:
                        type: string
                      about:
                        type: object
                      reviews:
                        type: number
                  services:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        description:
                          type: string
                        category:
                          type: string
                        price:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                              - FIXED
                              - RANGE
                              - STARTS_AT
                              - NO_PRICE
                            start:
                              type: string
                            end:
                              type: string
                            currency:
                              type: string
                            discountedPrice:
                              type: string
                        duration:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                              - FIXED
                              - RANGE
                              - NO_DURATION
                            start:
                              type: string
                            end:
                              type: string
                            unit:
                              type: string
                        image:
                          type: string
                        variants:
                          type: array
                  totalServices:
                    type: number
                  scrapedAt:
                    type: string
                    format: date-time
        '400':
          description: Invalid URL or unsupported platform
      summary: Scrape services directly from a URL without saving to database
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/diff/{entityId}:
    get:
      description: Read-only comparison showing what would change if syncToProduction were run. Finds the first booking link for the entity and shows new, changed, deleted, and unchanged services/variations with field-level detail.
      operationId: t_value
      parameters:
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema: {}
      responses:
        '200':
          description: Diff generated successfully
        '404':
          description: No booking link found or sync not enabled
        '500':
          description: Internal server error
      summary: Preview production sync diff
      tags:
      - Scraped Services
  /tasks/api/v1/scraped-services/{linkId}:
    get:
      operationId: t_value
      parameters:
      - name: linkId
        required: true
        in: path
        description: UUID of the link from entities.links
        schema: {}
      responses:
        '200':
          description: Services retrieved successfully
        '404':
          description: No services found for link
      summary: Get all scraped services for a link
      tags:
      - Scraped Services
components:
  securitySchemes:
    access-token:
      scheme: bearer
      bearerFormat: JWT
      type: http
      name: Authorization
      description: Enter JWT token in the format Bearer <token>
      in: header