Search Evidence Validator
Pricing
from $10.00 / 1,000 validated pages
Search Evidence Validator
Validate public search-result URLs for relevance, freshness, content depth, citation readiness, reachability, and deterministic evidence quality before downstream agent use.
Pricing
from $10.00 / 1,000 validated pages
Rating
0.0
(0)
Developer
Dakota Myers
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Validate search-result pages before an agent trusts, cites, summarizes, or spends more money on them.
Search Evidence Validator is a machine-consumable Apify Actor that fetches public HTTP(S) pages and returns explicit evidence-quality records. It measures reachability, query relevance, content depth, freshness, and citation readiness; extracts citation metadata and an evidence excerpt; fingerprints the fetched text with SHA-256; and assigns each page ACCEPT, REVIEW, or REJECT.
When an agent should call it
Use this Actor after search or discovery and before expensive downstream work.
A typical machine workflow is:
search/discovery↓candidate URLs↓Search Evidence Validator↓ACCEPT / REVIEW / REJECT + evidence record↓cite, summarize, buy another tool call, or discard
It is useful when an agent needs to answer questions such as:
- Is this search result actually reachable right now?
- Does the page contain the terms the upstream query was looking for?
- Is the page substantial enough to use as evidence?
- Does it expose a usable title, canonical URL, publication time, and HTTPS source?
- Has the page content changed since a previous run?
- Should downstream work accept, manually review, or reject this source?
It does not replace semantic fact-checking, source-authority judgment, or claim-level verification. It is a deterministic pre-filter and evidence-normalization layer for public web pages.
Input
Provide either urls or richer results objects. Add query when you want query-term relevance scoring.
Up to 20 candidate pages can be processed in one run.
Minimal input
{"query": "example domains","urls": ["https://www.iana.org/help/example-domains"],"maxResults": 1,"timeoutMs": 8000}
Search-provider input
{"query": "example domains","results": [{"url": "https://www.iana.org/help/example-domains","title": "Example Domains","publishedAt": "2017-05-13"}],"maxResults": 10}
Supported fields:
| Field | Type | Purpose |
|---|---|---|
query | string | Optional upstream query used for relevance scoring. |
urls | string[] | Public HTTP(S) URLs. |
results | object[] | Search results containing url and optional title / publishedAt. |
maxResults | integer | 1–20 candidates, default 10. |
timeoutMs | integer | Per-page fetch timeout, 1,000–12,000 ms, default 8,000. |
Provide at least one URL through urls or results.
Output contract
The default dataset contains one record per processed candidate.
Example from the live acceptance fixture:
{"url": "https://www.iana.org/help/example-domains","finalUrl": "https://www.iana.org/help/example-domains","status": 200,"title": "Example Domains","canonical": "https://www.iana.org/help/example-domains","wordCount": 158,"query": "example domains","matchedQueryTerms": ["example", "domains"],"relevanceScore": 1,"freshnessScore": 0,"depthScore": 0.1756,"citationScore": 1,"qualityScore": 0.7351,"decision": "REVIEW","issues": [],"contentSha256": "9ef0c234acc6d8cbf49013291834d2a263696bee76feeef6b5a40f0d526e0d16"}
Records can also include description, publishedAt, ageDays, an evidence excerpt, and accessedAt.
A failed fetch produces a REJECT record with qualityScore: 0 and an explicit issue instead of silently disappearing.
Decision contract
The overall score is intentionally inspectable rather than opaque.
30% query relevance25% reachability / HTTP health20% content depth15% citation readiness10% freshness
Decision thresholds:
| Score | Decision |
|---|---|
>= 0.75 | ACCEPT |
>= 0.50 and < 0.75 | REVIEW |
< 0.50 | REJECT |
Issues can include signals such as non-2xx status, missing title, thin content, low query relevance, or non-HTTPS transport.
The scoring contract is explicit and repeatable. Freshness naturally changes as a publication ages. contentSha256 is the stable fingerprint for unchanged extracted page text.
Pricing
This Actor is live on Apify with pay per event pricing.
validated-page: $0.01 per successfully fetched and scored pageapify-actor-start: $0.00005 once per run- minimum configured successful-run charge: $0.01005
The validated-page event is charged only after a successful page result has been produced and pushed. Fetch failures still return diagnostic REJECT rows but do not become validated-page charges.
The Actor is public, uses LIMITED_PERMISSIONS, has Standby disabled, and is currently discoverable through Apify's agentic Store filtering for PPE Actors.
Apify's x402 execution boundary can require a platform-level prepaid/payment amount that is separate from this Actor's per-event price. An unauthenticated x402 preflight currently exposes a Base-mainnet USDC payment challenge before execution; the Actor's own billing remains the PPE event schedule above.
Machine-facing behavior
The Actor is designed to sit behind search APIs, research agents, RAG ingestion, citation pipelines, procurement agents, and other systems that need a cheap quality gate before committing more tokens or money.
Useful downstream patterns include:
if decision == ACCEPT:continue automaticallyelif decision == REVIEW:require stronger corroboration or a second sourceelse:discard candidate
The SHA-256 fingerprint can also be persisted by a caller to detect whether extracted page text changed between validation runs.
Safety boundaries
Network fetching is intentionally constrained so the Actor cannot be used as a general internal-network probe.
It:
- accepts only HTTP and HTTPS;
- rejects loopback, private, link-local, reserved, carrier-grade NAT, multicast, documentation, and common internal targets;
- blocks internal-style DNS suffixes such as
.localhost,.local,.internal,.home, and.lan; - resolves DNS before connecting and rejects a hostname if any returned address is private;
- pins the request to a validated resolved address;
- revalidates every redirect;
- follows at most three redirects;
- rejects URLs containing credentials;
- forwards no caller-supplied credentials or arbitrary headers;
- limits URLs to 2,048 characters;
- caps fetched response data at 750 KB;
- caps per-page timeout at 12 seconds.
Limits
This Actor validates public HTML-style evidence. It is not a browser renderer, login/session client, CAPTCHA bypasser, private-network scanner, authority-ranking engine, or claim-level truth oracle.
JavaScript-only pages may expose limited text when the initial HTTP response does not contain the rendered content. Use a browser-capable extraction step upstream when rendering is required, then pass the resulting public evidence source through the appropriate verification pipeline.
Live proof
The deployment pipeline requires all of the following before latest is considered healthy:
- deterministic tests pass;
- Apify cloud build succeeds;
latestis applied;- a real Apify cloud run executes against a public fixture;
- the returned dataset item matches the output contract.
The current production line has passed that gate and is publicly Store-indexed, PPE-monetized, agentic-discoverable, and x402-challenge reachable. A non-owner paid run has not yet been claimed as proof of demand.