Introducing Highlights: the context that matters

We process it. We never keep it.

Zero data retention keeps your inputs and outputs out of our logs, caches, and storage. We record that a request was made. Everything else is gone before the request completes.

Powering agents and products with the world's data.

Super.com logo
Passionfroot logo
Mintlify logo
Chatwoot logo
Similarweb logo
Klarna logo
Ferndesk logo
DocsBot logo
Daily.dev logo
Sixtyfour logo
Comp AI logo
Squad logo

What a request leaves behind.

One line of metadata, so your usage and billing still add up. None of the content.

What we log

The same line you see in your usage logs.

request_id
req_7f3a9c21
time
2026-10-17 14:02:11 UTC
endpoint
POST /v1/web/scrape
status
200
latency
412 ms
credits
1
api_key
key_…4f2a

What we never keep

Gone before the request completes.

  • URLs, queries, and parameters you send
  • Page content, Markdown, and HTML
  • Screenshots and images
  • Search results and answers
  • Uploaded files
  • User agent and request tags
  • Headers and cookies you pass along

From request to gone.

Every ZDR request runs the same way, from the moment it arrives to the moment it completes.

  1. 01

    You send one field

    Add zdr: "enabled" on a supported endpoint. Organizations without ZDR turned on are rejected.

  2. 02

    Content stays in memory

    Pages, files, and screenshots are processed in memory. Shared caches are skipped, and AI steps run with zero retention.

  3. 03

    Discarded on the way out

    Your results go back to you, and the content is discarded before the request completes.

  4. 04

    One line of metadata

    We keep the time, endpoint, status, latency, and credits, and confirm ZDR in a response header.

Scrubbed from our own logs.

ZDR covers more than your usage log. Inside a ZDR request, our server logs keep only operational fields like status and latency, and our traces drop URLs, content, headers, and error messages before they leave the server.

Standard request
INFO   scrape completed
       url=https://example.com/pricing
       user_agent=acme-sync/2.1  tags=pricing,nightly
       status=200  latency=412  credits_used=1
TRACE  GET example.com/pricing  http.url=https://example.com/pricing
ZDR request
INFO   ZDR request event
       status=200  latency=412  credits_used=1
TRACE  ZDR operation  zdr=true

One field per request.

Once ZDR is on for your organization, add zdr: "enabled" to any request you want covered. It costs the same credits as a standard request, and every response tells you it was applied.

Works on

  • Scrape
  • Crawl
  • Search
  • Answers
  • Parse
  • Map URLs
  • People Enrich
  • Styleguide
Read the ZDR docs
TypeScript
zdr.ts
import ContextDev from 'context.dev';

const client = new ContextDev({ apiKey: 'YOUR_API_KEY' });

const page = await client.web.scrape({
  url: 'https://example.com/pricing',
  formats: { markdown: true },
  zdr: 'enabled',
});

if (page.cache_metadata.status !== 'zdr') {
  throw new Error('ZDR was not applied');
}
Almost nobody offers ZDR policies and so I decided to give Context.dev a try when I saw that they had a clear and comprehensive ZDR offering.
Sacha Servan-SchreiberCo-founder, TinfoilRead the case study

A few things to know.

More details in the API documentation.

How do I turn on zero data retention?

ZDR is enabled per organization. Book a call or email support@context.dev. Once it’s on, send zdr: "enabled" on each request you want covered.

Does ZDR cost extra?

No. A ZDR request costs the same credits as a standard one.

How can I tell ZDR was applied?

Successful responses include the X-Context-ZDR: true header. Scrape also returns cache_metadata.status set to "zdr". Check it before you record that ZDR was applied.

Which endpoints support ZDR?

Scrape, Crawl, Search, Answers, Parse, Map URLs, People Enrich, and Styleguide. Batches and Monitors store results so you can collect them later, so they reject ZDR with ZDR_NOT_SUPPORTED instead of quietly keeping your data.

What shows up in my usage logs?

Each ZDR request appears with its time, endpoint, status, latency, and credits. Its input and response are marked as not stored.

Can ZDR content be used to train models?

No. Nothing from a ZDR request is kept, so there is nothing to train on. AI steps run on model configurations that retain nothing.

What works differently under ZDR?

Requests can take longer because cached results aren’t reused. Screenshots come back inline instead of as hosted links, images keep their original URLs, PDF OCR is skipped, and Highlights and browser profiles aren’t available.

Does ZDR cover my own systems?

No. ZDR covers what Context.dev retains. Your application is still responsible for anything it stores or logs. See our DPA and trust center for the rest of our data handling.

Build on the web. Keep nothing.

Start with 1,000 free credits, then talk to us when you’re ready to turn on zero data retention.

1,000free credits

Every month. No credit card required.

Start for freeRead the docs