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.
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 tokensWhat 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.
Context compiler
One call, ground, turns the open web into the smallest defensible evidence set for a task: deduplicated, provenance-tagged, packed to your token budget. No generated answer — the reasoning stays with your model.
Read more →Evidence graph
Know which sources are actually independent and how claims relate. A wire story and its forty reprints are one origin; two outlets under one owner are two origins with one owner. Six graph operations underneath.
Read more →Coverage receipts
Every answer says what was searched, what was not, how fresh it is and which source classes are missing — so an agent knows when the answer is incomplete instead of hallucinating absence.
Read more →Agent-native
One grounding call with explicit budgets and failure semantics, a two-tool MCP profile, an installable Agent Skill, and a self-describing API an agent can learn without a human reading the docs.
Read more →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.
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": []
}
Read status first — sufficient, insufficient, stale, partial or empty — computed by a fixed rule, never by a model. Never treat partial as complete.
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.
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.
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.
Explicit budgets — A token ceiling you set, the tokens actually packed, and the 5 credits billed, however many stories were expanded.
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.
relatedReturns the connected neighbourhood of a passage from the coverage graph — the edges are what to read next.
Collapses: A search per hop. One call replaces the whole chain.
corroborateReports how many distinct hosts carry a story, grouped and ranked by authority — how widely a claim is echoed.
Collapses: Manual cross-searching to verify a claim.
authoritiesReturns the top passages on a topic ranked by graph centrality — trust-triage a field without reading junk into context.
Collapses: Reading twenty mediocre results to find the three that mattered.
dossierBuilds a one-hop brief on an entity: mentions, the hosts covering it, and the entities co-mentioned with it.
Collapses: ~10 searches plus a manual merge, in one call.
pathFinds the shortest chain of edges linking two passages — reasoning-path retrieval, or connect-the-dots.
Collapses: Open-ended investigation, reduced to a structural query.
assemble_contextGraphRAG as a service: returns a ready-to-read context pack — corroborated, story-deduplicated, trust-ranked and packed to a token budget, each passage carrying the reason it was included.
Collapses: The entire do-it-yourself RAG loop.
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
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.
| Provider | Own index? | $ / 1,000 searches | Source |
|---|---|---|---|
Approximately $25 per 1,000 searches on the Starter plan; the rate falls on higher-volume plans. | No Scrapes Google, Bing, Baidu and others | $25 | SerpApi 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 | $14 | Gemini 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 | $14 | Perplexity 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 | $8 | Tavily 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 | $7 | Exa 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 | $5 | Brave 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 | $5 | Custom 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 | $1 | Parallel pricing |
$1 per 1,000 on the Starter plan, falling to about $0.30 per 1,000 at high volume. | No Google SERP wrapper | $1 | Serper pricing |
Roughly $0.60 to $1 per 1,000 SERPs depending on endpoint, priority and volume. | No SERP data collection at scale | $0.60 | DataForSEO pricing |
$29 per month for 50,000 credits, and a search is one credit. | Yes Our own crawl and index | $0.58 | This page |
$199 per month for 500,000 credits, and a search is one credit. | Yes Our own crawl and index | $0.40 | This page |
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.