serper_scrape
Fetches a web page via Serper's scraper.
⚠️ JS rendering is not guaranteed. A client-side rendered site returns HTTP 200 and an almost empty body, without any error: a very short body therefore does NOT prove the page is empty. Check its length before drawing a fact about the company from it.
⚠️ A call waits at most 15 seconds, then returns a refusal that says so — even on a domain that does not exist. A timeout is a NORMAL failure, not an outage. Start from a URL you have observed, and do not retry the same one.
⚠️ Obfuscated addresses do not survive rendering (mailto: in
HTML entities, base64, Cloudflare protection): an address READABLE in
the HTML is INVISIBLE in the markdown. A motifs_obfuscation without
addresses means "there is a contact here, not decoded": retry with
format="html".
Returns the content in ONE representation (markdown by default) + JSON-LD +
metadata. More robust than a raw fetch against rudimentary anti-bot measures.
Images included as base64 are removed from the content (a trace gives their type
and size, images_base64_retirees counts them); format="html" keeps them.
On the measured calls, half of the timeouts were on addresses
made up from a company name: it is not the slowness that
costs, it is what it carries away — while you wait, your own
context gets re-billed. When the served page shows no address,
the tool re-reads the HTML itself and returns adresses_obfusquees — it appends
the same thing at the bottom of the content; sonde_obfuscation says why the
re-read concluded nothing.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"url": "<url>"
},
"name": "serper_scrape"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the page to fetch — refused if it falls under the project's `excluded_url_prefixes`. | |
| _org | No | Org (id) de CET APPEL. `oto_list_orgs()`. | |
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| format | No | "markdown" (default, the LLM-readable representation) | "text" (raw) | "both" (only if you really need to compare) | "html" (the page's RAW HTML, through our own request, without the scraper and without credit — to check yourself what a rendering may have lost; capped, the total is given in `html_caracteres`). | markdown |
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| _instance | No | Instance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`. | |
| timeout_s | No | seconds to wait, 1 to 60 (default 15). Tighten it when you chain many dubious pages; an out-of-bounds value is clamped inside, never refused. |