Skip to content
unlob

Bring your own model. We bring the evidence, and say what it is.

The evidence layer for agents.

Search, corroborate, and know what you don’t know. unlob compiles the open web into provenance-aware, deduplicated, token-budgeted evidence — and tells your agent when the evidence isn’t enough.

Get your API keyHow grounding works10,000 free credits a month. No card.

A normal search API

10 results
7 URLs repeat the same story
? independent sources
? missing coverage
? stale
? contradictions
Agent must investigate…

unlob ground

3 evidence origins
2 genuinely independent
1 primary source
1 contradiction
coverage: sufficient
freshness: 37 min
context: 1,420 tokens
An illustrative example of what one call returns, not a measurement. Every line on the right is a field in the response; the agent reads it instead of reasoning its way to it.

What the evidence layer is

Four things that belong together: graph structure, evidence provenance, explicit unknowns, and a surface an agent can learn by itself. Owning an index is table stakes now — Exa and Parallel run one too. Being the deterministic grounding layer beneath whichever model you run is not.

One call

An objective and a budget in. Evidence, its structure, and a receipt out.

Retrieval, story deduplication, origin clustering, ranking and budget packing run on our side. What comes back is not a list of links and not a generated answer: it is evidence items that say who originally published them, who republished them, what kind of source they are and whether they are independent of one another — and a coverage receipt that says whether that is enough.

Ground an objectivebash
curl -H "x-api-key: $UNLOB_API_KEY" \
  "https://api.unlob.com/ground?objective=uk+ai+regulation+position+this+week&max_age=7d&min_independent_origins=2"

              
              {
            
              1
                "status": "sufficient",
            
              
                "evidence": [
            
              
                  {
            
              2
                    "source_role": "official",
            
              
                    "origin_type": "original",
            
              
                    "owner": "gov.uk",
            
              
                    "independence_score": 1.0,
            
              
                    "risk_flags": [],
            
              
                    "hit": { "url": "https://www.gov.uk/…", "snippet": "…" }
            
              
                  },
            
              
                  { "source_role": "secondary", "origin_type": "wire", "owner": "Thomson Reuters", "…": "…" }
            
              
                ],
            
              
                "coverage": {
            
              
                  "complete": true,
            
              3
                  "independent_origins": 3, "hosts": 17, "copies": 24,
            
              
                  "freshness": { "max_age": 604800, "within_max_age": true },
            
              4
                  "source_roles_missing": ["primary"],
            
              
                  "known_gaps": ["passages that declare no publish date are excluded by max_age"]
            
              
                },
            
              5
                "budget": { "token_budget": 3000, "context_tokens": 1420, "credits_billed": 5 },
            
              
                "next_actions": []
            
              
              }
            
  1. Read status first — sufficient, insufficient, stale, partial or empty — computed by a fixed rule, never by a model. Never treat partial as complete.

  2. Provenance on every item — source_role says what kind of source; origin_type says whether it is the original, a wire dispatch, a press release or a republish; owner says who is responsible.

  3. Hosts are not origins — Seventeen hosts and twenty-four copies collapsed to three independently owned origins. That is the number to hold a claim to.

  4. The receipt says what is missing — Which source classes the set lacks, what was not searched, and the freshness of what was — in fields and in plain language.

  5. Explicit budgets — A token ceiling you set, the tokens actually packed, and the 5 credits billed, however many stories were expanded.

An illustrative response. The field names and the vocabulary are the real contract; the values are an example. The full shape is in the documentation.

How grounding works, and what it deliberately does not do →

The evidence graph

Every other search API makes your agent rebuild the relationships in its context window

Run a search, get twenty links. Now the agent has to work out which are duplicates, which sources are independent, which are authoritative, and what to read next — dozens more searches, all of it in context, all of it billed by the token. We already computed that structure in order to build the index. ground reads it for you; six graph operations let an investigative agent walk it directly.

How the coverage graph works →

The index

Search is a selection problem, not a ranking problem

A human search engine can return a hundred documents and rank the good one first, because a person will skim and discard. An agent can reformulate, iterate and triage too — but every disambiguation and triage loop costs latency, retrieval calls and context tokens it does not get back. So we admit selectively rather than indexing everything, return bounded passages rather than page bodies, and tell you what is missing.

Objective

Or a query, scoped by filters

Retrieve

Keyword, semantic or hybrid, story-collapsed

Structure

Origins, owners, roles, freshness, risk

Pack and receipt

To your token budget, with what is missing

Fetch or traverse

One document, or the coverage graph

What a ground request does from your side of the API. Search never returns page bodies — an agent fetches the full text of only the result it chose.

The full architecture →

Price

Priced like infrastructure, because the structure is precomputed

A research agent spends model inference on every question. A ground call is retrieval over structure that was built when the index was built, so it costs infrastructure money rather than research-agent money — and we own the index, so no part of the bill is a per-query fee to an upstream provider.

ProviderOwn index?$ / 1,000 searchesSource

Approximately $25 per 1,000 searches on the Starter plan; the rate falls on higher-volume plans.

No

Scrapes Google, Bing, Baidu and others

$25SerpApi pricing

$14 per 1,000 search queries on Gemini 3.x after 5,000 free prompts per month. Gemini 2.5 models use the older scheme at $35 per 1,000. One prompt can trigger several billed queries.

Yes

Google's index

$14Gemini API pricing

A per-request search fee of roughly $5 to $14 per 1,000 on top of token charges ($1/$1 per million on Sonar, $3/$15 on Sonar Pro). Pro Search mode runs $14 to $22 per 1,000.

Yes

Perplexity index

$14Perplexity API pricing
TavilyAcquired

Credit-based at $0.008 per credit pay-as-you-go. A basic search is 1 credit (~$8 per 1,000), an advanced search 2 credits (~$16 per 1,000), and a deep research request 4 to 250 credits.

No

No publicly documented independent web index

$8Tavily pricing

Base search is $7 per 1,000 requests. Results beyond the first 10 add $1 per 1,000, contents add $1 per 1,000 pages, and AI summaries another $1 per 1,000 — so a realistic RAG call costs more than the headline.

Yes

Proprietary AI-native semantic index

$7Exa pricing

Search is $5 per 1,000 requests. The Answers plan is $4 per 1,000 plus $5 per million tokens.

Yes

40B+ pages, no Google or Bing dependency

$5Brave Search API pricing

$5 per 1,000 queries after the free allowance, capped at 10,000 queries per day.

Yes

Google's index, via Programmable Search Engine

$5Custom Search JSON API pricing

The Turbo search processor is $1 per 1,000; Basic and Advanced are both $5 per 1,000. The Task API, which is what most agent workloads actually use, runs $5 to $2,400 per 1,000 depending on processor.

Yes

Proprietary web index and retrieval infrastructure

$1Parallel pricing

$1 per 1,000 on the Starter plan, falling to about $0.30 per 1,000 at high volume.

No

Google SERP wrapper

$1Serper pricing

Roughly $0.60 to $1 per 1,000 SERPs depending on endpoint, priority and volume.

No

SERP data collection at scale

$0.60DataForSEO pricing

$29 per month for 50,000 credits, and a search is one credit.

Yes

Our own crawl and index

$0.58This page

$199 per month for 500,000 credits, and a search is one credit.

Yes

Our own crawl and index

$0.40This page
Rates are the cheapest directly comparable web search call — roughly ten results, no extraction and no summarisation — because that is the only way a table across credit systems, token pricing and per-request pricing means anything. Where a vendor does not publish a flat per-1,000 rate they are omitted from this table and covered in full on the landscape page. Figures read from each vendor’s own pricing page on 5 August 2026.

Frequently asked questions

What does "the evidence layer" mean?

Search retrieves things. unlob tells an agent what evidence exists, whether the sources are independent, whether the set is sufficient, what is missing, how fresh it is, and what to do next — within a token budget. One call, ground, returns that structure. No generated answer is returned, deliberately: the reasoning stays with whichever model you run, and the layer beneath it is deterministic.

Why not just generate the answer, like a research agent?

Because that puts a retrieval company in a race to run the most expensive reasoning on its own models. Exa, Parallel, Tavily and Linkup are all moving that way. unlob is the infrastructure their agents — and yours — ought to consume: the smallest defensible evidence package, how its pieces relate, and what is not known, beneath arbitrary reasoning models. It is cheaper for the same reason: the structure is precomputed, so a ground call costs infrastructure money rather than research-agent money.

How is source independence computed?

Not by counting hosts. Within a story, passages are grouped into origins: a wire dispatch and its reprints are one origin, a press release and the sites that ran it verbatim are one origin, and two outlets under one media group are two origins with one owner. independent_origins counts distinct owners. Every label carries a confidence, and the rule is documented in full — seventeen URLs and two genuinely independent origins are different findings, and the receipt says which you have.

What is a coverage receipt?

Every ground answer carries one: what was searched, what was not — shard slots down, verticals excluded, stories not expanded — how fresh the evidence is against the window you asked for, which source classes are present and missing, and a plain-language list of known gaps. It is why_not generalised from one URL to a whole request, so an agent knows when an answer is incomplete instead of inferring absence from a short list.

Does unlob have its own web index, or does it resell Google results?

Our own. We crawl the open web ourselves and serve from the index we built, which is what makes the evidence graph possible: story clusters, origins, the link graph and corroboration signals are computed when the index is built. No upstream search engine can deprecate us, reprice us or rate-limit us.

Is there an MCP server?

Yes, over Streamable HTTP at https://api.unlob.com/mcp with your API key. The grounding profile (?profile=grounding) lists ground and get_document — the right surface for most tasks and far less schema in every request. The default profile lists all 13 tools, including the six coverage-graph operations. There is also an installable Agent Skill at api.unlob.com/skill.md, so a coding agent can learn the API without a human reading the docs.

What does the free tier include?

10,000 credits a month, 30 days of history, and 60 credits a minute — no card required, and it is the most generous free tier in the category. A search costs 1 credit and a ground call 5 credits, however many stories it expands. The rate limit, not the allowance, is what makes it a tier for building and evaluating rather than for serving users; it hard-caps at its monthly credits rather than billing you by surprise.

Start on the free tier

10,000 credits a month, no card, no sales call. One magic link creates your account and your first API key.