Backlink Placement Change Receipts
Pricing
$4.00 / 1,000 source page auditeds
Backlink Placement Change Receipts
You know where your links should be. This checks that they are still there, the way you agreed, and receipts every change.
What it does
- Checks the placements you supply: source page URL + expected target, up to 500 placements on 100 distinct source pages per run (10 placements per source).
- Per placement: presence in the served HTML, anchor text, resolved URL, rel token set, and tag locator. All matches are captured; several anchors to the same target come back as MULTIPLE_MATCHES, never a guess.
- Your policy, compared: allowed anchors and required rel tokens (sponsored, ugc, nofollow). No "dofollow" attribute exists and this actor does not score follow value.
- Evidence per source page: final URL after validated redirects, noindex flag, canonical, and a content fingerprint.
- Change receipts across runs per monitorKey: anchor, target, rel, and presence changes with before/after and both timestamps.
- False-loss suppression: a first absence is a suspected loss; CONFIRMED_HTML_ABSENCE only after consecutive successful fetches miss the link (default 2). Blocked pages and transport errors never overwrite last-good state.
Honest limits
- Public HTTPS HTML only. No logins, no proxies, no JavaScript rendering: a link injected by JS alone is reported as not observed in the served HTML, which is what this actor verifies.
- Absence from observed server HTML is not proof the link was removed from the rendered DOM or from any search index.
- Tracking parameters matter: a link whose query differs from your expected target is reported (TARGET_QUERY_DIFFERENT), never silently equated. Fragments are stripped by documented policy.
- Blocked pages (403/429) come back as BLOCKED_OR_UNVERIFIABLE, uncharged, and are reported, never routed around.
Input
{"placements": [{"id": "p1", "sourceUrl": "https://blog.example.com/post", "targetUrl": "https://yoursite.com", "allowedAnchors": ["Your Brand"], "requiredRel": ["sponsored"]}],"monitorKey": "campaign-a"}
Output
One placement_receipt per placement (status: MATCH, EXPECTATION_MISMATCH, MULTIPLE_MATCHES, NOT_OBSERVED_IN_HTML, BLOCKED_OR_UNVERIFIABLE, FETCH_FAILED, INVALID_INPUT), change rows with before/after, plus placements.csv, changes.csv and a summary in the run's key-value store. Your placement lists stay in your own run storage.
Billing
Pay per distinct source page successfully fetched; every placement row on that page and all changes are included. A completed page where the link is absent is charged and returns NOT_OBSERVED_IN_HTML. Invalid, blocked, or failed pages are free.