BrokerBlitzer
Privacy-removal infrastructure

Your product. Your customer. Our filing engine.

Programmable detection, statutory filing and post-removal monitoring behind one API. You own the brand, the pricing and the customer relationship. Every request carries an auditable state trail.

POST /v1/exposure/scan 200 Placeholder · awaiting first run
sitesScanned
exposedCount
riskBand
canAssertClean

canAssertClean is false whenever a source could not be reached. A zero with a false assertion means inconclusive, never clear.

POST /v1/premium/jobs → 202

routed filed acknowledged provider_attested scan_verified reappeared
Detected

See what your users would see

The scan returns a real personalised result: whether the subject is exposed, where, what categories of data are held, and a risk band. It is synchronous, and it does not require an account. Asking a user to commit before you have shown them anything is the largest leak in this funnel, which is why the endpoint answers first.

Two passes run underneath. Sources we can query directly are checked one by one and are the only ones that can ever be reported clean. Alongside that, a search layer checks a much larger and continually growing set of broker domains for a listing. Because it matches one query against the whole domain list, widening that set costs nothing per scan, which is why it keeps growing.

A search hit proves a listing. A search miss proves nothing, so those domains can report found and are never counted toward a clean result. Findings that come from the search layer are also capped at a lower match confidence, so your interface can tell a strong match from a probable one.

Known-breach exposure is looked up in the same call, so a result can cover both where someone is listed and where they have already been leaked.

The honest zero

When a source cannot be reached, the response says so. A scan that finds nothing on the sources it reached, and could not reach the rest, returns canAssertClean: false. Your product should not tell that user they are clear, and our response gives you what you need to avoid it. A false all-clear is the one genuinely harmful way for a privacy report to be wrong.

Routed

An exposure becomes a filing target

Detection and removal are different surfaces. You do not have to find a listing to file against the company holding it, and the filing catalogue is much larger than the set of sites anyone can search.

The catalogue is built from public state broker registries, which are government records and carry a compliance contact and a rights URL by law. Each target is matched to the statute that applies to your subject, and to that broker's own stated requirements for what a request must contain.

Where several brands sit under one parent, one filing covers all of them, because they share a compliance address. The catalogue is deduplicated on that basis rather than inflated by counting brands.

Browse the filing catalogue →

Filed

The request goes out under statute

Each request is addressed to the broker's registered compliance contact and asserts only the rights the subject's own state actually grants. A California subject gets deletion, opt-out of sale and suppression on that state's response window. A Nevada subject gets opt-out of sale, because Nevada grants no deletion right, and a deletion request goes alongside it as an explicitly voluntary courtesy rather than a false demand.

That distinction is not decoration. A blanket California letter filed for a subject who does not live there asserts a residency that is not true, and a broker is entitled to reject it on exactly that basis.

Per-broker behaviour is data rather than code: what a given broker requires, how it confirms, whether it accepts a delegated confirmation, and how many attempts are reasonable. Nothing is sent speculatively. Where a broker needs an identifier we hold below our confidence floor, the request is held and the job says what it needs rather than filing a stranger's details.

Composed request · metadata
target        nuwber.com
channel       compliance-email
statute       CCPA §1798.105 · §1798.120
subject_ref   sha256:9f2c…a41d          (hashed, not reversible)
address_src   listing:nuwber.com        (conf. 0.82, floor 0.65)
reply_to      removals+01JZQK4M8T@…     (per-job, gates the reply)
body          [redacted — contains subject PII]
attempt       1 of 3
Acknowledged → Provider attested

Replies are parsed, not assumed

A sent request is not a completed one, and the gap between those two things is where this category loses people's trust. Broker replies come back to a per-job address, are checked against the broker's own domain and known compliance address, and are classified before they move anything. Anything failing those checks moves nothing.

A broker saying "done" is not the same as it being done. A confirmation puts the record at provider_attested. Only an independent rescan moves it to scan_verified. Most of this market reports both as "removed"; your customer gets to see which one they have.

When a broker asks for more

This is where removals quietly fail. A broker demands a piece of verification the request did not carry, nobody answers, and the request dies without ever being refused. It never shows up as a failure because nothing failed.

A demand like that becomes a real state on the record, carrying the field required, the reason, which broker asked and the statutory deadline for answering. You pass the answer back through one call and we reply inside the existing thread with that broker, so the exchange continues rather than restarting.

A broker's demand, as a state
state          needs_input
requiredField  dateOfBirth
sourceBroker   whitepages.com
deadlineAt     2026-09-10T00:00:00Z    from that state's response window

POST /v1/premium/jobs/{id}/provide     answers in-thread · no credit
What we do not claim

The platform provides automated filing coverage across a large compliance catalogue. Verification tracking and re-checking are implemented, but large-scale completion metrics are still being accumulated from live campaigns, so we do not yet publish verified completion rates.

We would rather you read that than a percentage we cannot stand behind. When the completion data matures, it will be published with its method attached.

Scan verified → Reappeared

Most removals are temporary

Brokers re-list. A record that was verified absent can reappear months later from a fresh data purchase, and a product that swept once and stopped will be quietly wrong about its own customer.

The re-check loop rescans on an interval, and a reappearance moves the record back to filed automatically. That cycle is the reason a removal product renews. It is also the part your subscription is actually selling, so it is worth making visible in your own interface rather than leaving it running silently.

A re-check that cannot read the page returns unverified and changes nothing. A broker having a bad day is not evidence that someone was re-listed, and it must never be allowed to downgrade a removal you have already confirmed to your customer.

Re-check · outcome
2026-05-14  scan_verified    absent
2026-06-13  scan_verified    absent
2026-07-13  reappeared       listing restored
2026-07-13  filed            re-filed, attempt 1 of 3
Co-branded

The report carries your name, not ours

A finished scan renders as a self-contained exposure report you can put in front of your own customer. It takes your display name, your accent colour, your logo, your call to action and your support contact. We do not appear on it.

It shows evidence, not a count. The actual listings, the source, the categories of data held and the confidence, rather than a total that asks to be taken on faith. Sources that could not be checked appear as their own state and are never folded into "not exposed".

It reports data categories, not the literal values, so it can show someone that their address and relatives are listed without republishing them. For a cold assessment there is a stricter mode that hides the profile URLs too, for when even the link is more than the recipient has agreed to see.

Share it with a link. The recipient needs no key and no account. Links expire, and you can revoke one at any time.

Render, share, revoke
GET    /v1/premium/jobs/{id}/report     co-branded HTML, your key
POST   /v1/premium/jobs/{id}/share      → link, expiry, revocable
GET    /r/{shareId}                     public render, no key needed
DELETE /v1/premium/shares/{shareId}     revoke immediately
The case

Why partners build on this

If people arrive at your product already worried about their own exposure, you have paid for the expensive half. Attention is the hard part and you have it. What is usually missing is something recurring to point it at.

Removal plus monitoring is that: a subscription with a built-in reason to renew, because the work genuinely continues. Revealing a result is a one-off sale. Keeping someone clean is a relationship.

What building it yourself means owning

  • Broker research and catalogue maintenance
  • Statutory templates and per-state policy
  • Filing, retries, reply parsing, state tracking
  • Re-listing detection and re-filing
  • Permanent upkeep as brokers and law shift

Integrate once. Brand it, price it, sell it.

Reselling a service, or running your own

Their customer relationshipYour customer
Their brandingYour branding
Their pricingYour pricing
A bolt-on with limited workflow controlA native part of your product

You own the brand, the pricing and the customer. You are not reselling someone else's product, you are running your own on top of infrastructure.

Integration

Four calls and a webhook

The free scan is synchronous. Everything else is a job: you post it, you get a ULID back immediately, and you either poll or take the signed webhook.

  • POST /v1/exposure/scanSynchronous scan. Returns exposure, sources and risk band.
  • POST /v1/premium/jobsCreates a scan or scan+remove job. Returns 202 and a job id.
  • GET /v1/premium/jobs/{id}Status, result and the per-target removal states.
  • GET /v1/premium/jobs/{id}/reportThe co-branded report as self-contained HTML.
  • POST /v1/premium/jobs/{id}/shareA shareable link your customer can open without a key.
  • POST /v1/premium/jobs/{id}/provideAnswer a broker's demand in-thread. Costs no credit.
  • GET /v1/premium/usageReconciliation ledger: billed jobs, free events, tie-out totals.
  • GET /v1/premium/coverageApplicable coverage, with the two coverage classes kept separate.
  • DELETE /v1/premium/jobs/{id}Cancel.

Events

Three signed events, so you can drive a live interface instead of polling for a final answer. Every one carries a receipt: the broker, its opt-out URL, when it was filed, any confirmation reference, and the current state.

  • removal.updatePer broker, on every transition, including a re-listing.
  • removal.progressJob-level rollup whenever that job moved.
  • job completionTerminal status and the full result. Durable, with retries.
Webhook delivery · headers and body
X-Signature:   sha256=<HMAC(your webhook secret, raw body)>
X-Timestamp:   2026-07-27T14:02:11Z
X-Delivery-Id: 01JZQK7R2V4W8X0Y1Z2A3B4C5D

{
  "event":  "removal.update",
  "jobId":  "01JZQK4M8T…",
  "removal": {
    "target":        "nuwber.com",
    "state":         "provider_attested",
    "optOutUrl":     "https://nuwber.com/removal/link",
    "filedAt":       "2026-07-13T09:14:02Z",
    "confirmationRef": "NW-88213"
  }
}

The signing secret is per customer, not global, so nobody else's key can forge a callback to your endpoint. Delivery is at-least-once over five attempts, https only, with the hostname re-resolved before each attempt so a host that was public when you registered it cannot be repointed inward between retries. Dedupe on X-Delivery-Id.

A separate signed event fires when the integration guide's version moves, so a contract change reaches you without anyone remembering to send an email. Patch releases do not fire it, because a notification that arrives on every edit is one nobody reads.

Full documentation →

Access

Request keys

Tell us what you are building and roughly what volume looks like. You will get a reply from a person, and a key pair with a test quota to integrate against.

Where the removal offer would live.

The hard part of a privacy product is not filing the requests. It is holding a user's trust in the moment they find out how exposed they are. BrokerBlitzer exists so you can own that moment without running a removal operation to do it.