Detect when an Apify Actor, API, scraper or data feed breaks, goes stale or sile
Detect when an Apify Actor, API, scraper or data feed breaks, goes stale or silently changes shape. One paid call returns a verdict with the evidence behind it, so an agent can decide whether a data source is still trustworthy before acting on it. Works with any HTTP endpoint; 35+ pre-wired vendors (OpenAI, Anthropic, Stripe, GitHub) are a head start, not a limit. Schedule it on your own cadence for continuous monitoring of breakage, staleness and drift.
Answeringour last check, 2026-09-24
1 of 1checks answered this week
1031 msmedian answer time
$0.02listed price per call
$0.02price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://datasourcepulse.com/api/x402/check
| Category | Search and research |
|---|---|
| Provider host | datasourcepulse.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.02 | 1031 ms |
Example input (from the provider)
{
"body": {
"type": "credential",
"url": "https://example.com",
"vendor": "generic_http"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"actorId": {
"description": "actor mode (required): Apify actor id, e.g. apify~web-scraper.",
"type": "string"
},
"apiKey": {
"description": "credential mode: the API key to validate. Used for one live vendor call, never stored.",
"type": "string"
},
"apifyToken": {
"description": "actor mode (required): Apify API token with actor + run read access. Used for live reads, never stored.",
"type": "string"
},
"authHeader": {
"description": "generic_http: full Authorization header value to send.",
"type": "string"
},
"bearerToken": {
"description": "credential mode: bearer token, for vendors that use one.",
"type": "string"
},
"clientId": {
"description": "credential mode: OAuth client id, for vendors that use one.",
"type": "string"
},
"clientSecret": {
"description": "credential mode: OAuth client secret, for vendors that use one.",
"type": "string"
},
"costSpikePct": {
"description": "actor mode: cost spike threshold percent (default 50).",
"type": "number"
},
"enableCostBaseline": {
"description": "actor mode: alert if per-run cost spikes vs the rolling average (default false).",
"type": "boolean"
},
"enableVolumeBaseline": {
"description": "actor mode: alert if latest output volume drops vs the rolling average of recent runs (default true).",
"type": "boolean"
},
"quotaSoftCap": {
"description": "credential mode, optional: your own budget line in the vendor's native usage unit. Quota verdicts are evaluated against this cap instead of the vendor's billing wall.",
"type": "number"
},
"refreshToken": {
"description": "google_oauth vendor only: OAuth2 refresh token, validated via a token refresh.",
"type": "string"
},
"stalenessThresholdDays": {
"description": "actor mode: failing verdict when the actor has not been updated in this many days (default 30).",
"type": "number"
},
"successJsonPath": {
"description": "generic_http: dot-separated JSON path to assert on the response body.",
"type": "string"
},
"successJsonValue": {
"description": "generic_http: expected string value at successJsonPath.",
"type": "string"
},
"successStatusCode": {
"description": "generic_http: expected HTTP status (default 200).",
"type": "number"
},
"type": {
"description": "Check mode. credential (default): validate an API key or HTTP endpoint. actor: health-check a public Apify actor by id. If omitted, inferred: actorId present means actor, otherwise credential.",
"enum": [
"credential",
"actor"
],
"type": "string"
},
"url": {
"description": "generic_http vendor (required): the public endpoint to check. Private, loopback, and internal addresses are rejected.",
"type": "string"
},
"vendor": {
"description": "credential mode (required): vendor template, e.g. openai, anthropic, gemini, stripe, github, serpapi, reddit, youtube, or generic_http for any HTTP endpoint. Unknown vendors return 400 with the full list location.",
"type": "string"
},
"volumeDropPct": {
"description": "actor mode: volume drop threshold percent (default 30).",
"type": "number"
},
"zeroYieldRunThreshold": {
"description": "actor mode: failing verdict when this many consecutive most-recent SUCCEEDED runs each produced 0 dataset items (silent zero-yield). Non-negative integer; 0 disables; default 3.",
"type": "number"
}
},
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}