Matching Jobs

Create matching job

POST
/jobs/matching

Create a matching job with its estimate, awaiting the user's approval.

The free sample of a project runs at once without approval.

Authorization

HTTPBearer
headerAuthorizationBearer <token>

An API key

Request Body

application/json
  1. body
project_id*string
reference_website_id*string
competitor_website_ids*array<string>
sample?boolean
Defaultfalse

Response Body

Successful Response

application/json
  1. response

A matching job with the counters of its run.

websites counts, per website of the run, the products it loaded and those new or changed. overlap of a completed job counts, per pair of its websites, the products that the project's matches connect, also through a third website.

job_id*string
job_type*string
status*JobRequestStatus

The lifecycle of a job. Each job type runs in its own lane.

  • WEBSITE_SETUP: CREATED, ANALYZING, ESTIMATE_READY, TRAINING, COMPLETED. The analysis and the training move the job on by themselves.
  • FULL_SCRAPE, URL_SCRAPE and MATCHING: AWAITING_APPROVAL (the user approves the quote), APPROVED, RUNNING, SETTLING (the charge), EXPORTING (the export files), COMPLETED.
  • FAILED ends a job of any lane; CANCELLED ends one that the user cancelled, or an idle one that expired.
Value in"CREATED""ANALYZING""ESTIMATE_READY""TRAINING""AWAITING_APPROVAL""APPROVED""RUNNING""SETTLING""EXPORTING""COMPLETED""FAILED""CANCELLED"
project_id*string
website_id?string|null
estimate?|null
approval?|null
settlement?|null
error?string|null
error_code?|null
contact_reason?|null
contact_request_id?string|null
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
finished_at?|null
reference_website_id?string|null
competitor_website_ids?array<string>|null
sample?boolean
Defaultfalse
matching_progress?|null
overlap?array<>|null
websites?array<>|null
curl -X POST 'https://api.deepscout.ai/v1/jobs/matching' \  -H 'Content-Type: application/json' \  -d '{  "project_id": "string",  "reference_website_id": "string",  "competitor_website_ids": [    "string"  ]}'
{  "job_id": "string",  "job_type": "MATCHING",  "status": "CREATED",  "project_id": "string",  "website_id": "string",  "estimate": {    "currency": "string",    "unit_price_per_1000": "12.68",    "quantity": 0,    "total": "12.68",    "cap": "12.68",    "min_charge": "12.68",    "difficulty": "EASY",    "input_products": 0  },  "approval": {    "approved_by": "string",    "approved_at": "2026-09-16T12:30:00.000Z"  },  "settlement": {    "quantity": 0,    "currency": "string",    "amount": "12.68",    "capped": true,    "settled_at": "2026-09-16T12:30:00.000Z"  },  "error": "string",  "error_code": "WEBSITE_TOO_LARGE",  "contact_reason": "WEBSITE_TOO_LARGE",  "contact_request_id": "string",  "created_at": "2026-09-16T12:30:00.000Z",  "updated_at": "2026-09-16T12:30:00.000Z",  "finished_at": "2026-09-16T12:30:00.000Z",  "reference_website_id": "string",  "competitor_website_ids": [    "string"  ],  "sample": false,  "matching_progress": {    "products_checked": 0,    "products_skipped_not_modified": 0,    "new_matches": 0,    "phase": "MATCHING_PRODUCTS",    "percent": 0,    "products_processed": 0,    "products_total": 0,    "estimated_minutes_left": 0  },  "overlap": [    {      "website_id": "string",      "match_website_id": "string",      "products": 0    }  ],  "websites": [    {      "website_id": "string",      "products": 0,      "modified": 0    }  ]}