Webhooks
jobCompletedSent to the job's callback_url (or your account webhook) when a job ends. Signed: Scrapely-Signature: t=<unix>,v1=<hex HMAC-SHA256 of "<t>.<raw body>"> with your webhook signing secret. Respond 2xx within 10 seconds. Failed deliveries retry after 10 s, 1 m, 5 m, 30 m and 2 h. Scrapely-Delivery is stable across retries.
Parameters
Scrapely-SignaturestringheaderrequiredScrapely-EventstringheaderrequiredScrapely-DeliverystringheaderrequiredScrapely-AttemptintegerheaderrequiredPayload application/json
The body of every webhook. Verify Scrapely-Signature before trusting it.
idstringtypestringcreated_atstringdataobjectShow child parameters
idstringobjectstatusstringurlstringbatch_idstringoptionsobjectShow child parameters
renderbooleanpremiumbooleanultra_premiumbooleancountry_codestringus, de, jp).device_typestringsession_numberintegerkeep_headersbooleanoutput_formatstringautoparsebooleanwait_for_selectorstringcreditsintegerstatus_codeintegerduration_msintegererrorstringcallback_urlstringcreated_atstringfinished_atstringstatus_urlstringresponseobjectShow child parameters
status_codeintegercontent_typestringfinal_urlstringheadersobjectcontentstring | objectexpires_atstring{
"id": "evt_1a2b3c4d5e6f7a8b9c0d",
"type": "job.finished",
"created_at": "2024-01-01T00:00:00Z",
"data": {
"id": "job_5f0c8a1b2d3e4f56",
"object": {},
"status": "queued",
"url": "string",
"batch_id": "string",
"options": {
"render": false,
"premium": false,
"ultra_premium": false,
"country_code": "us",
"device_type": "desktop",
"session_number": 0,
"keep_headers": false,
"output_format": "html",
"autoparse": false,
"wait_for_selector": "string"
},
"credits": 0,
"status_code": 0,
"duration_ms": 0,
"error": "string",
"callback_url": "string",
"created_at": "2024-01-01T00:00:00Z",
"finished_at": "2024-01-01T00:00:00Z",
"status_url": "string",
"response": {
"status_code": 0,
"content_type": "string",
"final_url": "string",
"headers": {},
"content": "string",
"expires_at": "2024-01-01T00:00:00Z"
}
}
}Responses
watchlistProductChangedTracked fields moved on one or more items in a run (on Amazon confirmed at standard or full: a pulse alone never sends this). Each entry carries id (plus asin on Amazon lists). At most 500 products per delivery; part/parts number them. Same envelope ({ id, type, created_at, data }), signature and retries as job webhooks. Sent to the list's webhook_url, else your account webhook.
Parameters
Scrapely-SignaturestringheaderrequiredScrapely-EventstringheaderrequiredScrapely-DeliverystringheaderrequiredScrapely-AttemptintegerheaderrequiredPayload application/json
idstringtypecreated_atstringdataobjectShow child parameters
watchlist_idstringwatchlist_namestringplatformstringmarketplacestringcurrencystringrun_idstringrun_numberintegerpartintegerpartsintegerchangesWatchlistChange[]Show child parameters
idstringasinstringdeprecatedid, kept for clients written before platforms. Absent on every other platform.changed_atstringtierstringstandard or full; one-tier platforms: their one tier).changesobjectprice, inStock, availabilityType, isFba, offerListingId, merchant, condition, newCount, newMinPrice, usedCount, usedMinPrice. merchant is compared by id.snapshotobject/v1/products results (each platform tracks its own; these are Amazon's). null = the retailer did not say.{
"id": "evt_1a2b3c4d5e6f7a8b9c0d",
"type": {},
"created_at": "2024-01-01T00:00:00Z",
"data": {
"watchlist_id": "string",
"watchlist_name": "string",
"platform": "amazon",
"marketplace": "us",
"currency": "USD",
"run_id": "string",
"run_number": 0,
"part": 0,
"parts": 0,
"changes": [
{
"id": null,
"asin": null,
"changed_at": null,
"tier": null,
"changes": null,
"snapshot": null
}
]
}
}Responses
watchlistProductDelistedThe retailer answered not_found for these items. They stay on the list as delisted and are not fetched again. partial/unavailable never delist. Each entry carries id (plus asin on Amazon lists). Same envelope ({ id, type, created_at, data }), signature and retries as job webhooks. Sent to the list's webhook_url, else your account webhook.
Parameters
Scrapely-SignaturestringheaderrequiredScrapely-EventstringheaderrequiredScrapely-DeliverystringheaderrequiredScrapely-AttemptintegerheaderrequiredPayload application/json
idstringtypecreated_atstringdataobjectShow child parameters
watchlist_idstringwatchlist_namestringplatformstringmarketplacestringcurrencystringrun_idstringrun_numberintegerpartintegerpartsintegerproductsobject[]Show child parameters
idstringasinstringdeprecatedid, kept for clients written before platforms. Absent on every other platform.delisted_atstringdetected_bystringlast_snapshotWatchlistSnapshot{
"id": "evt_1a2b3c4d5e6f7a8b9c0d",
"type": {},
"created_at": "2024-01-01T00:00:00Z",
"data": {
"watchlist_id": "string",
"watchlist_name": "string",
"platform": "amazon",
"marketplace": "us",
"currency": "USD",
"run_id": "string",
"run_number": 0,
"part": 0,
"parts": 0,
"products": [
{
"id": null,
"asin": null,
"delisted_at": null,
"detected_by": null,
"last_snapshot": null
}
]
}
}Responses
watchlistRunCompletedEvery run that ends: completed, insufficient_credits (nothing fetched or charged; watchlist.status shows an auto-pause) or failed. Same envelope ({ id, type, created_at, data }), signature and retries as job webhooks. Sent to the list's webhook_url, else your account webhook.
Parameters
Scrapely-SignaturestringheaderrequiredScrapely-EventstringheaderrequiredScrapely-DeliverystringheaderrequiredScrapely-AttemptintegerheaderrequiredPayload application/json
idstringtypecreated_atstringdataWatchlistRun & objectShow child parameters
idstringobjectwatchlist_idstringrun_numberintegertriggerstringkindstringstatusstringcreditsintegerstatsobjectShow child parameters
trackedintegersweep_tierstringcallsobjectescalatedobjectdeferredintegerchangedintegerdelistedintegerretry_next_runintegercredits_neededintegerinsufficient_credits: what the run needed up front.errorstringstarted_atstringfinished_atstringwatchlistobjectShow child parameters
idstringnamestringplatformstringmarketplacestringstatusstringpaused_reasonstringnext_run_atstring{
"id": "evt_1a2b3c4d5e6f7a8b9c0d",
"type": {},
"created_at": "2024-01-01T00:00:00Z",
"data": {
"id": "wlrun_5f0c8a1b2d3e4f56",
"object": {},
"watchlist_id": "string",
"run_number": 0,
"trigger": "schedule",
"kind": "pulse",
"status": "running",
"credits": 0,
"stats": null,
"error": null,
"started_at": "2024-01-01T00:00:00Z",
"finished_at": null,
"watchlist": {
"id": null,
"name": null,
"platform": null,
"marketplace": null,
"status": null,
"paused_reason": null,
"next_run_at": null
}
}
}