Zoca Scraped Services API
The Scraped Services API from Zoca — 10 operation(s) for scraped services.
The Scraped Services API from Zoca — 10 operation(s) for scraped services.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/zoca-scraped-services-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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