---
title: "Web Search API (Lookup) for AI Agents"
description: "POST /v2/lookup runs a web, news, images, scholar, patents or maps search and can render the top results in the same call, so an agent gets the results and the pages behind them. On every plan."
canonical: "https://www.enconvert.com/es/web-search-api"
locale: "es"
---

# Lookup, the web search API for agents

One call returns the ranked results and the pages behind them.

[Get a free API key](/es/auth?mode=signup)[Read the docs](/docs/endpoints/lookup.md)

Free while in beta. No card. 500 ops a month.

`POST /v2/lookup`

Copy

```
curl -X POST https://api.enconvert.com/v2/lookup \
  -H "X-API-Key: sk_your_private_key" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "model context protocol specification",
    "num_results": 5,
    "perceive_top": 1
  }'
```

`200 OK`

Trimmed

```
{
  "results": [
    {
      "title": "Specification",
      "url": "https://modelcontextprotocol.io/specification/2025-06-18",
      "position": 1,
      "perceive": { "render_quality": 1.0, "outputs": { […] } }
    },
    […]
  ],
  "perceive_top": 1
}
```

## A query in, pages out

Five results, and the top one already read into Markdown.

The five results, ranked

```
1  Specification
   https://modelcontextprotocol.io/specification/2025-06-18

2  Model Context Protocol
   https://github.com/modelcontextprotocol

3  Specification
   https://modelcontextprotocol.io/specification/draft

4  Model Context Protocol Specification
   https://modelcontextprotocol.info/specification/

5  Introducing the Model Context Protocol
   https://www.anthropic.com/news/model-context-protocol
```

The top result’s page, as Markdown

```
[…]

# Specification
[Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. […]

## Overview
MCP provides a standardized way for applications to:
  * Share contextual information with language models
  * Expose tools and capabilities to AI systems
  * Build composable integrations and workflows

[…]
```

Real output, captured 2026-11-11. \[…\] marks a cut.

## What you send and get

| Field | What it does |
| --- | --- |
| `query` | The search, up to 512 characters. |
| `category` | One of six: web (the default), news, images, scholar, patents or maps. |
| `perceive_top` | From 0 to 10. That many top results are rendered in a real browser and returned inline. |
| `results` | A flat list. Each has a title, url, snippet and position, whatever the category. |
| `time_filter` | Limits results to the past hour, day, week, month or year. |

## What one call replaces

-   ### A search API

    Six categories behind one neutral request and response.

-   ### A result parser

    Title, url, snippet and position are always typed the same way.

-   ### A scraper fan-out

    The top results are rendered and scored in the same round trip.

![Left: a large haystack. Right: a single needle on a cloth under a magnifying glass, a green thread through its eye.](/landing/lookup-720.webp)

## Your first search

1.  ### Get an API key

    [`X-API-Key: sk_your_private_key`](/es/auth?mode=signup)
2.  ### Send a query

    [`POST /v2/lookup`](/docs/endpoints/lookup.md)
3.  ### Read the top page

    [`results[0].perceive.outputs.markdown.url`](/docs/endpoints/lookup#reading-auto-perceive-results)

## More of the same API

-   [URL to Markdown API](/es/url-to-markdown-api.md)

    Any URL as clean Markdown, with a score.

    `Perceive POST /v2/perceive`
-   [Web Scraping API](/es/web-scraping-api.md)

    One render, every output, each read scored.

    `Perceive POST /v2/perceive`
-   [RAG Ingestion API](/es/rag-ingestion-api.md)

    A site or a set of files in, one chunked JSONL out.

    `Ingest POST /v2/ingest`
-   [Structured Data Extraction API](/es/structured-data-extraction-api.md)

    Your schema in, exactly that JSON out.

    `Distill POST /v2/distill`
-   [Website Change Monitoring API](/es/website-change-monitoring-api.md)

    Watch a URL and get a webhook when it changes.

    `Watch POST /v2/watch`

## Questions about the search API

### How do I run a web search and get page content in one API call?

Send POST /v2/lookup with a query and set perceive\_top from 0 to 10. That many top results are rendered in a real browser, and each carries an inline perceive object whose Markdown sits behind a pre-signed URL at perceive.outputs.markdown.url.

### Which search categories does it support?

Six: web (the default), news, images, scholar, patents and maps. The universal fields (title, url, snippet, position) are always typed, and category-specific extras land in extra.

### Am I locked in to one search provider?

No. Serper is the search provider behind it, but the request and response speak a neutral vocabulary (category, country, locale, time\_filter), so a provider swap does not change the contract you code against.

### Why did it read fewer pages than my perceive\_top?

Auto-perceive skips results with no url, stops if the monthly ops allowance runs out mid-loop, and degrades a failed render to a warning. The response’s perceive\_top reports how many pages were read, and warnings explains the gaps.

### What does it cost?

One op per query, plus one op for each result it reads. Lookup is available on every plan, and the free Founding plan includes 500 ops a month with no credit card.

## Search and read in one call

[Get a free API key](/es/auth?mode=signup)[Read the docs](/docs/endpoints/lookup.md)
