Only the sites you trust
Limit a search to a list of domains, subdomains included, or exclude sites you never want in an answer.
Send a question in plain language and get ranked web pages back as JSON, with URL, title and publish date. Add excerpts, full page text or a summary to each result in the same call, so your agent gets fresh sources without a scraper of its own.
$5 in free credits to start. No credit card required.
POST a query with your deAPI key. Results come back in the same response, with no job to poll.
curl -X POST 'https://api.deapi.ai/api/v2/web/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-d '{
"query": "latest research on solid-state batteries",
"mode": "quick",
"limit": 5,
"include": { "excerpts": true }
}'
import requests
response = requests.post(
"https://api.deapi.ai/api/v2/web/search",
headers={"Authorization": "Bearer YOUR_API_TOKEN"},
json={
"query": "latest research on solid-state batteries",
"mode": "quick",
"limit": 5,
"include": {"excerpts": True},
},
timeout=30,
)
for result in response.json()["results"]:
print(result["title"], result["url"])
const response = await fetch("https://api.deapi.ai/api/v2/web/search", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
query: "latest research on solid-state batteries",
mode: "quick",
limit: 5,
include: { excerpts: true },
}),
});
const { results } = await response.json();
results.forEach((r) => console.log(r.title, r.url));
{
"request_id": "46754fa8-…",
"cost": 0.0048,
"results": [
{
"url": "https://example.com/solid-state-cells-study",
"title": "Solid-state cells pass 1,000 charge cycles",
"published_at": "2026-11-09T02:30:03+00:00",
"author": "Jane Doe",
"excerpts": [
"The prototype kept 92% of its capacity
after 1,000 full charge cycles."
]
}
]
}
Illustrative values. Results are ordered by relevance to the query.
Pick a mode per request. The quick mode suits agents that search many times per task; the balanced mode is the default.
| Mode | Typical response | Price, up to 10 results | Use it for |
|---|---|---|---|
quick |
under 1 s | $0.0048 | Chat replies and agent loops that run many searches per task |
balanced |
1–2 s | $0.0084 | RAG and research, and any search that needs a summary per result |
Each result above 10 adds $0.0012, up to 25 results. A summary adds $0.0012 per result and works only in the balanced mode. Text and excerpts cost nothing extra. Every response returns its exact cost in the cost field.
querymodequick or balanced.limitonly_domains github.com. Subdomains are included.skip_domains published_after published_before includetext, excerpts and/or summary for each result. Text takes a max_length; excerpts and summary take a query.urltitlepublished_at authorimageexcerptstextsummaryLimit a search to a list of domains, subdomains included, or exclude sites you never want in an answer.
Set a start date, an end date or both. Useful for news, release notes and anything that goes out of date.
Excerpts for a quick answer, full text for RAG, a summary when the prompt is short on room. Same options as the Contents API.
Agents
Give a tool-calling agent a search function. It finds sources, reads them and cites them in its answer.
RAG
Add current pages to retrieval when your own index does not have the answer or is out of date.
Grounding
Search before the model answers and pass the results into the prompt, so replies cite real pages.
Monitoring
Run the same query on a schedule with published_after set to the last run, so you get only new pages.
Research
Pull 25 pages on a question with summaries, then let a model sort and compare them.
The agent sends the user's question to the Search API and gets ranked URLs with excerpts.
It passes the best URLs to the Contents API for full text or a summary.
Your LLM writes the answer from that text and links each claim to its source URL.
A request that fails on our side is not charged, and the amount reserved against your key limit is released.
Give each key a daily, weekly or monthly limit. Over the limit the API answers 402 and the request does not run.
Busy or timed-out requests return 503 or 504 with a Retry-After header, so your code knows when to try again. Limits go up after the first payment.
$5 in credits after email verification, no card. The same key works for search, page content and every other deAPI endpoint.
See also Web Content Extraction API, Transcription MCP Server and OpenAI-compatible API.
Results, filters and billing
Quick check before we generate