# Receitas de curl e jq para a API de pesquisa web

> Pesquisa web com curl e jq: pesquisar, listar fontes e salvar páginas em Markdown. Sem KYC, cripto.

- URL: https://llmwebsearch.com/pt/docs/curl/
- Última atualização: 2026-10-22
- Editor: LLMWebSearch (https://llmwebsearch.com)

Todas as funcionalidades da API funcionam a partir do terminal. Estas receitas usam `curl` para chamá-la e `jq` para montar o JSON: úteis para testar uma consulta antes de codificá-la, para shell scripts e para cron jobs.

**Resposta rápida — Como uso uma API de pesquisa web pela linha de comando?**

Envie um corpo JSON com `curl -d` para `https://llmwebsearch.com/api/v1/search`, sua chave em um header `Authorization: Bearer`, e direcione a resposta para `jq`. **LLMWebSearch** retorna resultados ranqueados com as 3 melhores páginas em Markdown, então uma linha basta para listar fontes ou salvar páginas em arquivos. Uma pesquisa custa 1 crédito, a partir de US$ 1,20/1K pesquisas em outubro de 2026. Sem KYC; pague com cripto.

## Como configuro o terminal uma vez só?

Exporte sua chave no shell, para que ela fique fora dos comandos que você digita e do seu histórico. As receitas abaixo a leem como `$LLMWEBSEARCH_API_KEY`. Você também precisa do `jq`, que a maioria dos gerenciadores de pacotes instala com esse nome.

Todas as receitas assumem um shell POSIX como bash ou zsh. No Windows, Git Bash ou WSL as executam sem alterações.

*Defina a chave e confira seu saldo (grátis)*

```bash
export LLMWEBSEARCH_API_KEY="your-key"

curl -s "https://llmwebsearch.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .
```

## Como listo as fontes de uma pesquisa?

Execute a pesquisa com `read` definido como `0` e imprima uma linha por resultado: posição, host e URL. Isso custa 1 crédito e mostra, em um segundo, quais fontes uma pergunta traz. É uma boa forma de ajustar o texto de uma consulta antes que um agente a use.

*Uma linha por resultado*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "max_results": 10, "read": 0}' \
  | jq -r '.results[] | "\(.position)\t\(.host)\t\(.url)"'
```

## Como salvo as páginas que foram lidas?

Mantenha os resultados cujo `content_status` seja `ok` e grave cada `content` em seu próprio arquivo. A receita abaixo salva `01.md`, `02.md` e assim por diante, cada um começando pela URL da fonte. O jq seleciona os resultados e o loop do shell grava os arquivos.

*Salve cada página em Markdown*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "read": 3}' > search.json

jq -r '.results[] | select(.content_status == "ok") | .position' search.json | while read -r pos; do
  jq -r --argjson p "$pos" '.results[] | select(.position == $p) | "Source: " + .url + "\n\n" + .content' \
    search.json > "$(printf '%02d' "$pos").md"
done
ls -1 ./*.md
```

## Como pesquiso notícias de alguns sites?

Adicione `topic`, `time_range` e `include_domains` ao corpo. A receita mantém notícias da última semana em dois domínios e imprime a data ao lado de cada título, o que basta para acompanhar um assunto a partir de um cron job.

*Notícias da última semana de dois domínios*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "database security release", "topic": "news", "time_range": "week", "include_domains": ["news.example.com", "example.org"], "read": 0}' \
  | jq -r '.results[] | "\(.published_at // "no date")  \(.title)  \(.url)"'
```

## Como uso o formato GET?

Use `curl -G` com `--data-urlencode` para a consulta, assim espaços e símbolos são codificados para você. Listas como `include_domains` viram um único valor separado por vírgulas. O GET é prático para um teste rápido; scripts que crescem devem migrar para POST.

*GET /search*

```bash
curl -sG "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  --data-urlencode "q=pgbouncer transaction mode" \
  -d read=1 -d max_chars=3000 -d include_domains=example.com,example.org \
  | jq -r '.results[0].content // .results[0].snippet'
```

## Como leio URLs que já tenho?

Envie-as para `/extract` como um array JSON de 1 a 20 endereços. Ler páginas cujas URLs você já tem custa 1 crédito por cada grupo iniciado de 3 páginas devolvidas com conteúdo, até 20 URLs por chamada; URLs recusadas ou com falha não são contadas. A receita imprime cada URL com seu status e contagem de palavras, o que mostra rapidamente quais páginas um site nos permitiu ler.

*POST /extract*

```bash
curl -s "https://llmwebsearch.com/api/v1/extract" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]}' \
  | jq -r '"credits: \(.credits_used)", (.results[] | "\(.content_status)\t\(.word_count // 0)\t\(.url)")'
```

## Como vejo o erro quando uma chamada falha?

Imprima o status HTTP com `-w` e mantenha o body: os erros voltam como JSON com um `code` e um `message`. Um script pode então ramificar pelo status, por exemplo aguardando e tentando de novo apenas em `429`, `502` ou `504`. Nenhum desses erros usa um crédito.

*Código de status e body de erro*

```bash
status=$(curl -s -o body.json -w '%{http_code}' "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "test query"}')
if [ "$status" != "200" ]; then
  echo "HTTP $status: $(jq -r '.error.code + " - " + .error.message' body.json)"
fi
```

## curl: perguntas comuns

### Por que meu body JSON falha com invalid_parameter?

Normalmente é um problema de aspas. Coloque o body entre aspas simples no bash para que as aspas duplas internas fiquem intactas, e verifique com `echo '…' | jq .` antes de enviar.

### Posso passar a chave na URL?

Sim, com `-d api_key=…` no formulário GET. O header é mais seguro, porque o histórico do shell e os logs de proxy registram URLs.

### Uma chamada curl que falha custa um crédito?

Não. Erros HTTP nunca usam créditos. Só é cobrada a pesquisa que retorna resultados, como `credits_used` mostra.

---

LLMWebSearch: O LLMWebSearch é uma API de pesquisa na web para agentes de IA que retorna resultados classificados com o conteúdo das principais páginas em Markdown, pago com cripto sem envio de documentos. Os créditos pré-pagos a partir de US$ 1,20/1K pesquisas nunca expiram. Sem KYC — sem documento, sem selfie, sem comprovantes. Pague com cripto.
